基于.ini文件与Word书签,如何比对两个SQL查询结果实现签名验证?
签名验证功能实现方案
完全可以实现你需要的签名验证逻辑,以下是具体的实现思路和示例:
核心步骤
获取两个查询的结果
通过数据库驱动(如ADODB)执行你提供的两条SQL查询,将结果分别存储为两个变量(比如query1_result和query2_result)。如果你的.ini文件用于配置查询语句或数据库连接参数,可以在脚本中读取.ini的配置来执行查询,保持原有流程的兼容性。比对查询结果
使用条件判断语句对比两个变量的值。执行对应操作
- 当结果相等时:调用你指定的目标函数;
- 当结果不等时:定位到Word文档中预设的书签位置,插入错误提示文本。
示例VBA代码(适配Word操作场景)
因为你是基于Word书签导入数据,用VBA实现最为直接,以下是完整示例:
Sub ValidateSignature() ' 声明存储查询结果的变量 Dim query1Result As String Dim query2Result As String ' -------------------------- ' 实际场景中替换为数据库查询逻辑 ' 示例:从数据库获取Query1和Query2的结果 query1Result = GetQueryResult("select B.PERSON from TV_ARRESULT A, TV_BANKER B where A.""KEY"" = 'abc123' AND A.TEST_TYPE_CODE='ETSTWIT' AND A.RESULT = B.NAME") query2Result = GetQueryResult("select WITNESSED_BY from TV_ARRESULT t where ""KEY"" = 'abc123' AND TEST_TYPE_CODE='ETSTWIT'") ' -------------------------- ' 比对结果并执行操作 If query1Result = query2Result Then ' 结果一致,执行目标函数 Call YourTargetFunction() Else ' 结果不一致,在指定书签位置插入错误文本 Dim errorBookmark As Bookmark ' 假设Word文档中已创建名为"SignatureError"的书签 Set errorBookmark = ThisDocument.Bookmarks("SignatureError") errorBookmark.Range.Text = "错误:签名验证失败,见证人与审核人信息不匹配!" ' 重新添加书签(替换文本会删除原有书签) ThisDocument.Bookmarks.Add "SignatureError", errorBookmark.Range End If End Sub ' 封装数据库查询函数(示例) Function GetQueryResult(sqlStr As String) As String Dim conn As Object Dim rs As Object Set conn = CreateObject("ADODB.Connection") ' 可从.ini读取数据库连接字符串,示例中为硬编码 conn.Open "Provider=SQLOLEDB;Data Source=你的数据库地址;Initial Catalog=你的数据库名;User ID=账号;Password=密码;" Set rs = conn.Execute(sqlStr) If Not rs.EOF Then GetQueryResult = rs.Fields(0).Value Else GetQueryResult = "" End If rs.Close conn.Close Set rs = Nothing Set conn = Nothing End Function ' 你需要执行的目标函数 Sub YourTargetFunction() ' 这里写入你要执行的逻辑,比如生成签名、标记验证通过等 MsgBox "签名验证通过,执行指定操作!" End Sub
注意事项
- 确保Word文档中已创建用于显示错误文本的书签(如示例中的
SignatureError); - 数据库连接字符串建议从.ini文件中读取,避免硬编码;
- 如果使用Python等其他语言操作Word,逻辑框架一致:获取查询结果→比对→操作Word书签。
内容的提问来源于stack exchange,提问作者Brandon Pittam
相关产品推荐
相关产品推荐

