【问题标题】:VBA Insert Query: "Query input must contain at least one table or query""VBA 插入查询:“查询输入必须包含至少一个表或查询”
【发布时间】:2016-10-18 18:06:39
【问题描述】:

我正在将 Excel 电子表格中的数据导入到 tblPOLinesTemp 表中,然后我必须将这些数据附加到 tblPOLines 表中。我正在尝试从 VBA 执行 insert into SQL 语句,但不断收到“查询输入必须包含至少一个表或查询”作为错误,我似乎无法弄清楚什么是错误的,因为 SQL 语句在运行时有效在访问!它快把我逼疯了!你能帮忙吗?

我的代码(我将 AppendPOlines 设为字符串):

AppendPOLines = "INSERT INTO tblPOlines ( PurchaseOrderID, PurchaseOrderLineID, [Material#], FirstDeliveryDate, Quantity, CreatedBy )" _
    & "SELECT tblPOLinesTemp.PurchaseOrderID, tblPOLinesTemp.PurchaseOrderLineID, tblPOLinesTemp.[Material#], tblPOLinesTemp.FirstDeliveryDate, tblPOLinesTemp.Quantity, [TempVars]![VarUserID] AS CreatedBy" _
    & "FROM tblPOLinesTemp LEFT JOIN tblPOlines ON (tblPOLinesTemp.PurchaseOrderLineID = tblPOlines.PurchaseOrderLineID) AND (tblPOLinesTemp.[PurchaseOrderID] = tblPOlines.[PurchaseOrderID])" _
    & "WHERE (((tblPOlines.PurchaseOrderLineID) Is Null) AND ((tblPOlines.PurchaseOrderID) Is Null));"

    CurrentDb.Execute AppendPOLines, dbFailOnError

请注意,左连接是为了确保查询不会插入具有相似采购订单和采购订单行 ID 的行 - 以避免重复行。

谢谢!

【问题讨论】:

    标签: sql ms-access vba ms-access-2010


    【解决方案1】:

    在每个 ["] 之后和之前放置一个空格:

    AppendPOLines = " INSERT INTO tblPOlines( PurchaseOrderID, PurchaseOrderLineID, [Material#], FirstDeliveryDate, Quantity, CreatedBy ) " _
        & " SELECT tblPOLinesTemp.PurchaseOrderID, tblPOLinesTemp.PurchaseOrderLineID, tblPOLinesTemp.[Material#], tblPOLinesTemp.FirstDeliveryDate, tblPOLinesTemp.Quantity, [TempVars]![VarUserID] AS CreatedBy " _
        & " FROM tblPOLinesTemp LEFT JOIN tblPOlines ON (tblPOLinesTemp.PurchaseOrderLineID = tblPOlines.PurchaseOrderLineID) AND (tblPOLinesTemp.[PurchaseOrderID] = tblPOlines.[PurchaseOrderID]) " _
        & " WHERE (((tblPOlines.PurchaseOrderLineID) Is Null) AND ((tblPOlines.PurchaseOrderID) Is Null)); "
    

    您的查询执行如下:

    插入 tblPOlines(PurchaseOrderID, PurchaseOrderLineID, [Material#], FirstDeliveryDate, Quantity, CreatedBy )SELECT tblPOLinesTemp.PurchaseOrderID, tblPOLinesTemp.PurchaseOrderLineID, tblPOLinesTemp.[Material#], tblPOLinesTemp.FirstDeliveryDate, tblPOLinesTemp .Quantity, [TempVars]![VarUserID] AS CreatedByFROM tblPOLinesTemp 左加入 tblPOlines ON (tblPOLinesTemp.PurchaseOrderLineID = tblPOlines.PurchaseOrderLineID) AND (tblPOLinesTemp.[PurchaseOrderID] = tblPOlines.[PurchaseOrderID]) WHERE (((tblPOlines.PurchaseOrderLineID) 为空) AND ((tblPOlines.PurchaseOrderID) 为空));

    所以 CreatedByFrom 是错误的,你会得到这个错误: "查询输入必须至少包含一个表或查询"

    【讨论】:

    • 谢谢!这解决了这个问题。但现在我在 currentdb.Execute "Too few parameters. Expected 1" 上得到错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 2021-12-08
    • 1970-01-01
    • 2018-11-14
    相关资源
    最近更新 更多