Sql 通过VBA从Excel连接到多个数据源

Sql 通过VBA从Excel连接到多个数据源,sql,excel,vba,ms-access,ado,Sql,Excel,Vba,Ms Access,Ado,尝试连接到不同的数据源VFP数据库并从Excel内部访问文件以根据两个数据源的条件提取特定数据时,遇到了创建组合查询的问题。对VFP表的查询已经完成,现在我需要处理MS Access表。 我试着用下面的方法做,但没有成功: "left join [tblInAccess] in " & "[Microsoft.ACE.OLEDB.12.0;Data Source='D:\Data\temp_dump.accdb'] on [tblInVFP].ID=[tblInAccess].ID"

尝试连接到不同的数据源VFP数据库并从Excel内部访问文件以根据两个数据源的条件提取特定数据时,遇到了创建组合查询的问题。对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: 整个查询代码只需查询:


实际上,没有第二个“左连接”,它工作正常。当我尝试引用Access数据库时出现问题

如果您正在Access数据库上执行查询,则无需指定数据库类型,只需指定位置:

[tblInVFP].ID=[tblInAccess].ID上的D:\Data\temp\u dump.accdb中的左联接[tblInAccess] 有关更多详细信息,请参阅


还要注意:{^2015.12.30}可能会导致Access中出现语法错误。如果要按日期筛选,正确的语法是2015/12/30,以定义日期常量。

欢迎使用StackOverflow。虽然它不是我的领域,但我认为您只是查询的一部分。了解整个查询以及您得到的错误将很有帮助。@ZiyanJunaideen说,+您还需要共享执行查询的代码。这都是相关的。埃里克,谢谢你抽出时间来解决我的问题!问题是,整个查询通过ADO从EXCEL传递到VisualFoxPro数据库,而不是MS Access。但我想让ADO明白,一些数据是从临时访问表中获取的。所以我在搜索一种方法,在查询中使用Access db文件的驱动程序引用它,可能还有另一种方法——我不知道。关于日期格式:该格式是VFP数据库所要求的,在这种情况下是正确的。以前已经发布过类似的问题,但它与Excel连接。在我的例子中,我只需要构建一个有效的访问连接字符串
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