【问题标题】:Syntax error on INSERT INTO ... SELECT statement (Access SQL)INSERT INTO ... SELECT 语句上的语法错误 (Access SQL)
【发布时间】:2014-02-07 23:15:31
【问题描述】:

我正在尝试在 tbl1 中插入一个字段 'SID' 值,但要获取 SID 它必须引用名字和姓氏到另一个表(tbl2)获取SID,然后我使用了以下SQL语句和后续代码。

    Dim sqlquery As String = "INSERT INTO tblPayments (StudentID,Payment,PaymentDate) VALUES (SELECT StudentID FROM tblStudents WHERE Forename = @Forename AND Surname = @Surname , Payment = @SPaid, PaymentDate = @todaysdate)"

    Dim sqlcommand As New OleDbCommand
    With sqlcommand

        .CommandText = sqlquery

        .Parameters.AddWithValue("@SPaid", Paidtxt.Text)
        .Parameters.AddWithValue("@todaysdate", Today.Date)
        .Parameters.AddWithValue("@Forename", Forenametxt.Text)
        .Parameters.AddWithValue("@Surname", Surnametxt.Text)

        .Connection = conn

        .ExecuteNonQuery()
    End With
    MsgBox("query executed, closing connection")
    conn.Close()

然而,SQLQuery 给出了错误:

“System.Data.OleDb.OleDbException”类型的未处理异常 发生在 System.Data.dll 附加信息:查询表达式中的语法错误 'SELECT StudentID FROM tblStudents WHERE Forename = @Forename AND Surname = @姓氏。

但是我看不出语句中被指定为错误的部分有什么问题,谁能告诉我哪里错了?

【问题讨论】:

    标签: sql vb.net vba ms-access


    【解决方案1】:

    我认为错误非常明显。 insert . . . select 的语法不使用 values 关键字:

    INSERT INTO tblPayments(StudentID, Payment, PaymentDate) 
        SELECT StudentID,  @SPaid, @todaysdate
        FROM tblStudents
        WHERE Forename = @Forename AND Surname = @Surname;
    

    【讨论】:

    • OH 当然,我为我很少使用 SQL 的愚蠢行为道歉。感谢您的快速响应!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多