与Access语句一起定义与Access SQL的关系

我正在尝试使用MS Access和SQL从许多表中查询数据。 查询涉及大量的标准。 例如这里是我目前使用的代码:

SELECT * FROM [tblA] IN "G:\path\data.mdb" WHERE ((([tblA].[var1])="435")) OR ((([tblA].[var1])="3")) OR ((([tblA].[var1])="4")) OR ((([tblA].[var1])="634")) OR ((([tblA].[var1])="234")) OR ((([tblA].[var1])="234")); 

标准的数量可以高达50,每次有人使用这个代码时,他们会有所不同。 问题更严重,因为这是需要多次input这些标准的较长代码的一部分。

而不是让用户input条件,我想创build一个包含这些约束的excel文件作为主键,然后将tblA中的var1设置为外键,并在Excel表中引用主键。 这样我可以运行:

 SELECT * FROM [tblA] IN "G:\path\data.mdb" 

我只会得到符合上述所有标准的数据。 有谁知道如何使用IN语句连接到外部表时创build这些关系? 可以使用ALTER TABLE吗? 如果是这样,在代码中的位置?

IN另一个数据库中的表与另一个文件中的电子表格之间build立一个实际的关系可能是困难的(或不可能的),但是为了您的特定目的,确实没有必要。 如果你的标准是在这样一个Excel工作表…

Excel.png

…那么你可以使用WHERE var1 IN (SELECT ...)子句,如下所示:

 SELECT * FROM [tblA] IN "C:\Users\Gord\Desktop\data.mdb" WHERE var1 IN ( SELECT CStr(var1) FROM [Excel 8.0;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Users\Gord\Desktop\criteria.xls].[Sheet1$] )