【问题标题】:Searching For a file name inside a table based on the list double click event根据列表双击事件在表中搜索文件名
【发布时间】:2020-07-13 22:04:22
【问题描述】:

各位程序员,大家好, 我非常绝望,因为我不知道如何解决(也许)简单的问题。我有两张桌子。第一个 [Files] 有两个字段:[FName](文件名)和 [FPath](文件路径),第二个 [Reports] 有 [DocNo] [Title]...等等等等...

FName 字符串由 [DocNo] [Title] 组成(但整个标题字符串不是文件路径)

示例: [文件号] Smith/RT/2000/001
[标题] BHP Iron Ore Pty Ltd 68kg/m 头部硬化钢轨的改性铝热焊缝评估

[FName] SmithRT2000001 改性铝热焊缝评估.pdf

我有一个表格,上面有一个搜索列表。此列表显示 [报告] 中的记录。通过双击特定记录,它会触发双击事件。在事件中,我得到 DocNo 和 Title 的值,并在 Files 表中搜索要匹配的 Fname。但令人惊讶的是,当我放置 sql 搜索甚至在设计模式下进行查询时它没有返回任何内容?
但是有趣的是,当我硬编码查找记录时,两者方法会找到它。那个怎么样?

这是要检查的 VBA:

Private Sub SearchResults_DblClick(取消为整数)

'Initializing the string variables
Dim strSQL As String
Dim strFileName As String
Dim strTitle As String
Dim DocumentNo As String
Dim titleLeng As Integer

DocumentNo = Me.SearchResults.Column(0)
DocumentNo = Replace(DocumentNo, "/", "")
strTitle = Me.SearchResults.Column(1)
Debug.Print (DocumentNo)

SrchText = DocumentNo

SearchResults.RowSourceType = "Table/Query"
SearchResults.RowSource = "QRY_OpenFile"

Debug.Print (strTitle)

strTitle = Left(strTitle, 10)
SrchText = strTitle

Debug.Print (SrchText)
SearchResults.RowSource = "QRY_OpenFile"

Dim rst As Recordset
Dim db As DAO.Database
Set db = CurrentDb()
strSQL = "SELECT Files.FName FROM Files WHERE Files.FName Like " * " & strTitle & " * ";"
Debug.Print (strSQL)
Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)

Application.FollowHyperlink strFileName, , True, False, , , "John Smith"

我已经尝试了 SQL 字符串的所有变体,将外部“”更改为“”不起作用。但是,如果我用“Assessment”字符串或“SmithRT2000001”更改 strTitle,它会找到它。不知道为什么?

这在您放置条件的查询设计窗口中不起作用: 喜欢“* & Forms![搜索报告]![SrchText] & *” 但是,一旦我将其更改为静态的,它就会起作用。快疯了!!

你能指导我做什么或如何实现我在 FILE 表中打开文件的目标吗??

【问题讨论】:

    标签: ms-access vba ms-access-2007


    【解决方案1】:

    好的,在最后测试了 3 种不同的方法后,其中一种给出了很好的响应,这正是我想要的。我将查询中的“like”命令更改为:
    喜欢“*”和[表格]![搜索报告]![SrchText]和“*
    突然它起作用了。我还发现 SQL Select 查询不适用于 VBA,特别是双击事件。 这是最终代码:

    Private Sub SearchResults_DblClick(取消为整数) '初始化字符串变量 将 strTitle 调暗为字符串 将 DocumentNo 变暗为字符串

    DocumentNo = Me.SearchResults.Column(0)
    DocumentNo = Replace(DocumentNo, "/", "")
    strTitle = Me.SearchResults.Column(1)
    strTitle = Replace(strTitle, "'", "''")
    SrchText.Value = DocumentNo
    
    SearchResults.RowSourceType = "Table/Query"
    SearchResults.RowSource = "QRY_OpenFile"
    

    结束子

    我无法从列表中获取路径和名称,将它们放在一起并启动到 Acrobat 的超链接...我必须做的是通过按钮发送事件以从列表中获取值。出于某种原因,在 SearchResults.RowSource = "QRY_OpenFile" 之后,list.Column(index) 返回 null。

    无论如何,感谢您阅读我的问题并思考它。

    【讨论】:

      【解决方案2】:

      那段代码真的运行了吗?你有一个纠结的 SQL 字符串:

      ''You need to watch out for quotes in the string, so
      strTitle = Replace(strtile, "'", "''")
      strSQL = "SELECT Files.FName FROM Files WHERE Files.FName Like '*" _
             & strTitle & "*';"
      

      这条线的点:

      Debug.Print (strSQL)
      

      是在查询设计窗口中获取一个 SQL 字符串进行测试。使用它。

      【讨论】:

      • 不,那个没有运行...这只是一个示例,我将其更改为其他格式以进行调试和反复试验。我已经以多种方式测试了该 sql ......它只是不起作用!我测试了你的,也不起作用。即使我将 DAO db 类型的 * 更改为 % 也没有运气......不过感谢您的帮助!它应该是非常小的东西......:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多