无DSN的ODBC Access-VBA

时间:2012-05-14 12:19:14

标签: ms-access odbc access-vba dsn

(在Sage Line 100和MS Access之间)

我试图通过Sage Line 100将表格导入MS Access万无一失。 由于必须导入来自多个源的几个表并且查询要按特定顺序运行,我想通过一键单击(表单按钮将运行宏来导入dbases运行查询并导出)来自动执行此操作。

有几个源位置从哪里导入表,并不是所有用户都设置了系统DSN(我也不想为每个人设置它们 - 我不是IT人(没有IT人))

这是我正在尝试的代码:

DoCmd.TransferDatabase acImport, "ODBC Database", _<br>
    "ODBC;DRIVER={SAGE Line 100}; LOG=S:\apps\L100;" & _ 
    "SCH=S:\apps\svnp;DIR=S:\data\svnd\mfg;" & _
    "UID=abcd;PWD=defg;LANGUAGE=us_english;" & _
    "DATABASE=ACCOUNTING_SYSTEM.STOCK_CONTROL_FILE", _
    acTable, "ACCOUNTING_SYSTEM.STOCK_CONTROL_FILE", "ASSCF"

以上导致:

First Window

单击“确定”:

Error Window

同样的结果:

Dim strSQL As String
    strSQL = "SELECT * INTO ASSCF" & _
             " FROM [ODBC;DRIVER={SAGE Line 100};" & _
             "LOG=S:\apps\L100;SCH=S:\apps\svnp;DIR=S:\data\svnd\mfg;" & _
             " UID=ajay;PWD=ajoo].ACCOUNTING_SYSTEM.STOCK_CONTROL_FILE;"
CurrentDb.Execute strSQL, dbFailOnError

注意:

当我使用我在系统上设置的DSN时,我可以成功导入数据:

Dim strSQL As String
    strSQL = "SELECT * INTO ASSCF" & _
             " FROM [ODBC;DSN=SAGE-mfg" & _
             " UID=ajay;PWD=ajoo].ACCOUNTING_SYSTEM.STOCK_CONTROL_FILE;"
CurrentDb.Execute strSQL, dbFailOnError

任何想法?

1 个答案:

答案 0 :(得分:0)

为什么不设置odbc连接字符串,然后通过连接字符串打开连接并执行sql,而不是在您的sql语句中嵌入DRIVER。我认为你的sql语句中“DRIVER”前面的“ODBC”导致错误。