-1

我有一个关于如何在访问数据库中提交包含撇号的查询的问题。例如,我想搜索标题中包含“女性健康”的记录。当我尝试搜索时,即使有包含该短语的记录,也不会出现任何记录。如果我搜索女性健康,就会出现记录。我怎样才能克服撇号的问题?

我试过搜索以前的问题,其中大多数人说我应该在我的 SQL 查询中使用“”,但我正在使用它,但它仍然不能解决问题。我没有技术背景,谁能给我一些关于如何修复我的查询的建议,以便我可以使用撇号进行搜索?我的查询如下。谢谢!

SELECT [Off-site records].[File Name], [Off-site records].Unit, 
    [Off-site records].Branch, [Off-site records].Division, 
    [Off-site records].[Date Sent], [Off-site records].[Archives (Yes/No)], 
    [Off-site records].[Date range], [Off-site records].[Accession Number], 
    Off-site records].[Box #], [Off-site records].[File Name], 
    [Off-site records].ID, [Off-site records].[File Name], 
    [Off-site records].[File Name]
FROM [Off-site records]
WHERE ((([Off-site records].[File Name]) Like "" & Forms!Search![File name] & "") 
    And (([Off-site records].Unit) Like "" & Forms!Search!Unit & "") 
    And (([Off-site records].Branch) Like "" & Forms!Search!Branch & "") 
    And (([Off-site records].Division) Like "" & Forms!Search!Division & "") 
    And (([Off-site records].[Date Sent]) Like "" & Forms!Search![Date sent] & "") 
    And (([Off-site records].[Archives (Yes/No)]) Like "" & Forms!Search!Archives & "") 
    And (([Off-site records].[Date range]) Like "" & Forms!Search![Date range] & "") 
    And (([Off-site records].[Accession Number]) Like "" & Forms!Search![Accession number] & "") 
    And (([Off-site records].[Box #]) Like "" & Forms!Search![Box #] & "") 
    And (([Off-site records].[File Name]) Like "" & Forms!Search![File name 2] & "") 
    And (([Off-site records].[File Name]) Like "" & Forms!Search![File name 3] & "") 
    And (([Off-site records].[File Name]) Like "" & Forms!Search![File name 4] & ""));
4

1 回答 1

0

而不是这个:

Like "" & Forms!Search![File name] & ""

尝试这个:

Like " & chr(34) & Forms!Search![File name] & chr(34) & "

也就是说,将属于最终 SQL 的每个双引号替换为ASCII等效的。

这可能会解决您的问题。即使没有,这也是更好的做法。请注意,它专门针对 VBA 代码中的 SQL。

要解决 Access 中的查询问题,您必须尽可能简化查询以进行测试。如果插入变量失败,请将其作为静态查询安装并使其工作。如果它在 VBA 中失败,请将其转换为查询对象并让它以这种方式工作。(Debug.Print用于获取实际运行的最终 SQL 代码。)简化、求解,然后按照自己的方式返回(非常)复杂的结果。

顺便说一句,您可以通过删除[Off-site records].. 您已经在FROM子句中设置了表名,并且因为只有一个来源,所以[Off-site records].不需要所有其他用途。

于 2013-07-23T22:54:53.957 回答