MS Access SQL语句追加

问题描述:

我对MS Access和SQL相对较新。MS Access SQL语句追加

我有一个访问数据库中的查询来追加一个表到另一个,由一个特定的列升序,然后我用它来添加列以分配一个唯一的标识符的目的。

查询本身在访问中运行良好,但是,我想将它写入一个窗体的VBA代码中,以便在单击按钮时执行操作。

访问中的SQL视图给了我下面的代码,但是当我将它写入我的代码中时,它指出操作符丢失,任何人都可以提出建议?

代码:

DoCmd.RunSQL ("INSERT INTO tblImport (CustomerAccount, OrderReference, OrderDate, DueDate, CustomerRef," & _ 
    "StockNo, OrderQuantity, AddressName, Add1, Add2, Add3, Town, County, PostCode, Country, ServiceLine)" & _ 
    "SELECT tblImport2.CustomerAccount, tblImport2.OrderReference, tblImport2.OrderDate, tblImport2.DueDate," & _ 
    "tblImport2.CustomerRef, tblImport2.StockNo, tblImport2.OrderQuantity, tblImport2.AddressName, tblImport2.Add1," & _ 
    "tblImport2.Add2, tblImport2.Add3, tblImport2.Town, tblImport2.County, tblImport2.PostCode, tblImport2.Country," & _ 
    "tblImport2.ServiceLine" & _ 
    "FROM tblImport2" & _ 
    "ORDER BY tblImport2.OrderReference") 
+0

你能告诉我们你有错误的vba代码吗? 'SQL'显示看起来不错,但是在你如何将它转换为'VBA'的过程中可能存在错误。 – Dave

+0

这有点太长了:) – Tim

+0

根据你的语法错误,我有一次快速猜测,但即使你只是发布'vba'语句来设置你的'SQL',它应该足以确定问题(假设我的猜测是不正确的) – Dave

保存查询。然后你就可以从代码中调用它:

CurrentDb.QueryDefs("NameOfYourAppendQuery").Execute 

或没有查询:

Dim Sql As String 

Sql = "<Your SQL string>" 
Debug.Print Sql  ' Check SQL. 
CurrentDb.Execute Sql 
+0

谢谢古斯塔夫。我知道如何从表单代码运行查询,我只是希望将查询写入代码。我有一些事情正在使用这种形式,所以我想把db中的查询数量降到最低,这样我就不会失去跟什么链接的信息。 – Tim

+0

哦。我已经添加了答案。 – Gustav

+0

谢谢Gustav,我试过了,它的失败方式和我原来的代码一样。查询表达式'tblImport2.ServiceLine来自tblImport2 Order by tblimport2.orderReference'中的语法错误(缺少运算符)。看起来像我缺少一个逗号或分号或其他东西,但我不知道在哪里 – Tim

您是否知道,在VBA指定一个多行字符串(如您的查询是这里),你需要加入像这样的线?否则VBA不会知道它应该是一个单一的字符串。

mySql = "INSERT INTO tblImport (CustomerAccount, OrderReference, OrderDate, DueDate, CustomerRef, StockNo, OrderQuantity, AddressName, Add1, Add2, Add3, Town, County, PostCode, Country, ServiceLine) " & _ 
"SELECT tblImport2.CustomerAccount, tblImport2.OrderReference, tblImport2.OrderDate, tblImport2.DueDate, tblImport2.CustomerRef, tblImport2.StockNo, tblImport2.OrderQuantity, tblImport2.AddressName, tblImport2.Add1, tblImport2.Add2, tblImport2.Add3, tblImport2.Town, tblImport2.County, tblImport2.PostCode, tblImport2.Country, " & _ 
"tblImport2.ServiceLine " & _ 
"FROM tblImport2 " & _ 
"ORDER BY tblImport2.OrderReference; " 
+0

这是正确的戴夫,我原来的代码是DoCmd.RunSQL等等所有行结束“&_和以下行开始”。当我在访问中运行查询时,执行完美。没有办法在这里添加附件吗? – Tim

+0

不,但您可以将语句本身复制并粘贴到问题的编辑中。语法错误意味着某事与陈述不符,所以看到陈述是必要的,以帮助解决它。 – Dave

+0

完美。试过在这里弹出它,但是太长了200个奇怪的字符:) – Tim