尝试从Excel内部连接到不同的数据源(VFP数据库和Access文件),以根据两个来源的标准提取特定数据,并遇到创建组合查询的问题。对VFP表的查询已经完成,现在我需要解决MS Access表。 我尝试过以下方式,但没有成功:
"left join [tblInAccess] in " & "[Microsoft.ACE.OLEDB.12.0;Data
Source='D:\Data\temp_dump.accdb'] on [tblInVFP].ID=[tblInAccess].ID"
任何人都可以指出正确的语法吗?
UPD : 整个查询代码(只是查询):
SELECT DB.DATE AS DBF_DATE,
DB.EN AS DBF_EN,
DB.NU AS DBF_NUMERO,
LIB.LL AS DBF_LIBELLE,
SUM(IIF(DB.DEBIT = '1000', - DB.AMOUNT, 0.00) + IIF(DB.CREDIT = '1000', DB.AMOUNT, 0.00))
FROM [VFP_DB] AS DB
LEFT JOIN (
SELECT LT.LL AS LL,
LT.EN
FROM [VFP_DB] AS LT
) AS LIB ON DB.EN = LIB.EN
LEFT JOIN (
SELECT id
FROM [Provider=Microsoft.ACE.OLEDB.12.0;Data Source="D:\Data\temp_dump.accdb";].[tblTemp]
) TEMP_DB ON DB.NN = TEMP_DB.id
WHERE DB.DATE >= { ^ 2015.12 .30 }
AND DB.DATE <= { ^ 2017.01 .07 }
AND TEMP_DB.id IS NULL
GROUP BY DB.DATE,
DB.NU,
DB.EN,
LIB.LL
HAVING SUM(IIF(DB.DEBIT = '1000', - DB.AMOUNT, 0.00) + IIF(DB.CREDIT = '1000', DB.AMOUNT, 0.00)) <> 0
ORDER BY DB.DATE,
DB.NU,
DB.EN ASC
实际上,如果没有第二次加入&#39;它工作正常。我尝试引用Access数据库时出现问题
答案 0 :(得分:0)
如果您正在Access数据库上执行查询,则无需指定数据库类型,只需指定位置:
LEFT JOIN [tblInAccess] in D:\Data\temp_dump.accdb on [tblInVFP].ID=[tblInAccess].ID
有关详细信息,请参阅MSDN。
另请注意:{ ^ 2015.12 .30 }
可能会在Access中导致语法错误。如果您想按日期过滤,正确的语法是#2015/12/30#
来定义日期常量。