0

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

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

示例:[DocNo] Smith/RT/2000/001
[Title] 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![Search For Reports]![SrchText] & *” 但是一旦我改变它,它就会起作用。快要疯了!!

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

4

2 回答 2

1

好的,在最后测试了 3 种不同的方法之后,其中一种给出了很好的回应,也是我想要的。我将查询中的“like”命令更改为:
Like " *" & [Forms]![Search For Reports]![SrchText] & " *"
突然它起作用了。我还发现 SQL Select 查询不适用于 VBA,特别是双击事件。这是最终代码:

Private Sub SearchResults_DblClick(Cancel As Integer) '初始化字符串变量 Dim strTitle As String Dim DocumentNo As String

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。

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

于 2013-03-30T02:49:56.827 回答
0

那段代码真的运行了吗?你有一个纠结的 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 字符串进行测试。用它。

于 2013-03-29T10:43:30.620 回答