Microsoft Access喜欢/不喜欢
我似乎在基于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*"
由于这工作:
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*"
虽然上面有单引号和双引号的组合(提示:将来当试图用电脑修复某些东西时 – 保持一致非常重要)。
在上面跳出的唯一真正的问题是date是Access中的保留字。 细节也是。 因此,在上面的保留字旁边放置[]括号
所以你必须必须validation以下的声明是如何工作的:
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*"
所以请注意[]周围的date和细节。
再次testing上面的第二个例子。 如果以上的工作,你和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系统不支持类似命令的“不”的可能性很大。
所以尝试工作查询[]。 如果[]工作,然后尝试将NOT添加到正在工作的查询中。
and NOT (details like "*WAGES*")
作为一个侧面说明string开头的通配符将会很慢。
用户也得到一个错误:
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 *”周围使用了双引号。 另外,通配符是一个百分比符号。 您可能需要根据您正在使用的数据库来检查这一点。