【问题标题】:SQL insert into with various select multiple rows and fieldsSQL插入各种选择多行和字段
【发布时间】:2018-09-05 00:37:34
【问题描述】:

我需要使用 SQL VBA 在 Access 2016 中插入多个行和字段。我在下面做这件事 - 与联合 - 但它不起作用,它说我与联合的 sintax 是错误的。我需要找出问题所在,否则一一运行查询,我有 9 个这样的! (编辑:找到解决方案!)

query = "INSERT INTO tblInvoice2 ( Quantity, Price, MMDCarrier) SELECT qryTotals.JRN AS SumOfJRN, qryTotals.[Rate JRN],"
query = query & "qryTotals.MMDCarrier from qryTotals where qryTotals.MMDCarrier like " & Me.Combo0 & " union "

query = query & "SELECT qryTotals.MG AS SumOfMG, qryTotals.[Rate MG],"
query = query & "qryTotals.MMDCarrier from qryTotals where qryTotals.MMDCarrier like " & Me.Combo0 & ""

这是有效方法的答案,与下面有人向我展示的代码非常相似,但不同之处改变了一切(没有错误消息,它确实插入到表格中!)。我不得不将选择放入一个选择中,仍然给了我一个错误,并且由于某种原因,当我将 -> 添加为价格和数量时它起作用了。我仍然不确定为什么它现在有效,如果您有解释,请告诉我!

query = "INSERT INTO tblInvoice2 ( Quantity, Price, MMDCarrier ) SELECT * FROM (SELECT qryTotals.JRN as Quantity, qryTotals.[Rate JRN] as Price, qryTotals.MMDCarrier FROM qryTotals where qryTotals.MMDCarrier like '" & Me.Combo0 & "'"
query = query & " UNION SELECT qryTotals.MG , qryTotals.[Rate MG], qryTotals.MMDCarrier From qryTotals where qryTotals.MMDCarrier like '" & Me.Combo0 & "')" 

【问题讨论】:

  • 最后(括号内)有一个额外的逗号。除非您使用参数,否则您可能还会遇到其他不明显的错误。
  • Me.Combo0 的值是多少?如果上面没有单引号,那么您的查询将如下所示:其中 qryTotals.MMDCarrier like 。这没有引号,会抛出错误
  • @âńōŋŷXmoůŜ 它不会引发错误...我已经使用了更简单的查询。真的不是这个问题。
  • @CetinBasoz 是的,我没有看到,我删除了一些忘记逗号的东西,但现在它抛出了更多的 sinxtaxt 错误,说我缺少一个运算符
  • 在您做任何其他事情之前,您需要阅读、理解并开始实施参数化查询,然后才能访问 bobby 表。 bobby-tables.com

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


【解决方案1】:

如果您将INSERT INTO ... SELECT 与联合一起使用,则需要将所有联合放在子查询中,例如:

INSERT INTO tblInvoice2 ( Quantity, Price, MMDCarrier)
SELECT * FROM (
    SELECT qryTotals.JRN AS SumOfJRN, qryTotals.[Rate JRN], qryTotals.MMDCarrier from qryTotals 
    where qryTotals.MMDCarrier like 'something'
    UNION
    SELECT qryTotals.MG AS SumOfMG, qryTotals.[Rate MG],
    qryTotals.MMDCarrier from qryTotals where qryTotals.MMDCarrier like 'somethingElse'
) As A

或者,在您的 VBA 实现中:

query = "INSERT INTO tblInvoice2 ( Quantity, Price, MMDCarrier) SELECT * FROM (SELECT qryTotals.JRN AS SumOfJRN, qryTotals.[Rate JRN],"
query = query & "qryTotals.MMDCarrier from qryTotals where qryTotals.MMDCarrier like " & Me.Combo0 & " union "

query = query & "SELECT qryTotals.MG AS SumOfMG, qryTotals.[Rate MG],"
query = query & "qryTotals.MMDCarrier from qryTotals where qryTotals.MMDCarrier like " & Me.Combo0 & ") As A"

请注意,您的查询还包含INSERT INTO 部分中的尾随逗号,这不是 Access SQL 中的语法错误,而是大多数其他形式的 SQL 中的一个错误,并且仍然是一种不好的做法。另外,LONG 可能是对的,你想要那些单引号(但实际上,你应该使用参数)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 2019-02-02
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    相关资源
    最近更新 更多