1

在以下基于 SAGE 数据库的查询中,我似乎遇到了 MS Access 问题

以下代码不起作用 - 它不喜欢“不喜欢”部分

SELECT tran_number, Inv_ref, Details, date, Net_amount, amount_paid
FROM AUDIT_HEADER

WHERE type = 'BP' and 
deleted_flag= 0 and details NOT like "*WAGES*"

这段代码确实有效,但速度很慢,当我将它链接到 excel 时不起作用 -

预期参数 = 1 错误??

SELECT tran_number, Inv_ref, Details, date, Net_amount, amount_paid
FROM AUDIT_HEADER

WHERE type = 'BP' AND deleted_flag= 0 and 
details NOT IN (SELECT details from audit_header where details like "*WAGES*");

此外,奇怪的是,这段代码有效,但显然,我想排除细节中包含 WAGES 的交易

SELECT tran_number, Inv_ref, Details, date, Net_amount, amount_paid
FROM AUDIT_HEADER

WHERE type = 'BP' and 
deleted_flag= 0 and details like "*WAGES*"
4

3 回答 3

1

由于这有效:

SELECT tran_number, Inv_ref, Details, date, Net_amount,
amount_paid FROM AUDIT_HEADER
WHERE type = 'BP' and 
deleted_flag= 0 and details like "*WAGES*"

虽然上面确实混合了单引号和双引号(提示:将来尝试用计算机修复某些东西时——保持一致非常重要)。

上面跳出来的唯一真正的问题是日期是 Access 中的保留字。细节也是。因此将 [] 括号放在上述保留字周围

因此,您必须必须验证您声称的以下内容是否有效:

SELECT tran_number, Inv_ref, Details, date, Net_amount,
amount_paid FROM AUDIT_HEADER
WHERE type = "BP" and 
deleted_flag= 0 and details like "*WAGES*"

现在尝试使用括号中的保留字,如下所示:

SELECT tran_number, Inv_ref, Details, [date], Net_amount,
amount_paid FROM AUDIT_HEADER
WHERE type = "BP" and 
deleted_flag= 0 and [details] like "*WAGES*"

所以请注意日期和详细信息周围的 []。

再次测试上面的第二个示例。如果上述方法有效,并且您检查了 DOUBLE 和 TRIPLE,那么这也应该有效:

SELECT tran_number, Inv_ref, Details, [date], Net_amount,
amount_paid FROM AUDIT_HEADER
WHERE type = "BP" and 
deleted_flag= 0 and [details] NOT like "*WAGES*"

如果上述失败,那么 SAGE 系统很可能不支持 like 命令的“NOT”。

因此,请尝试 WORKING 查询上的 []。如果 [] 有效,则尝试将 NOT 添加到工作查询中。

于 2015-12-04T17:21:52.120 回答
0
and NOT (details like "*WAGES*")

作为旁注,字符串开头的通配符会很慢。

于 2015-12-03T14:52:23.337 回答
0

用户也会收到一个错误:

ODBC Call Failed - Syntax - Invalid filter in WHERE clause (#0)

如果您使用 ODBC 调用并从 Access 调用非 Access 数据库,则需要检查您的 SQL 对于您调用的任何数据库是否有效。因此,如果您使用的是 SQL 服务器,您将使用:

SELECT tran_number, Inv_ref, Details, date, Net_amount, amount_paid
FROM AUDIT_HEADER WHERE type = 'BP' and deleted_flag= 0 and details NOT LIKE '%WAGES%'

因为 SQL 使用单引号而不是双引号。这个引号点可能值得检查,因为您在 'BP' 周围使用了单引号,但在 "*WAGE*" 周围使用了双引号。此外,通配符是一个百分比符号。您可能想根据您正在使用的任何数据库检查这一点。

于 2015-12-03T14:49:50.550 回答