0

基準式のデータ型の不一致。以下のコードは正しいと思っていましたが、今はこのエラーが発生しています。追加した内容が間違っているかどうかはわかりません。

以下のコードはデータベースに投稿しています

そして、関数 Main() はDBに接続するだけです

Private Sub adddata()
    Main
    Dim strSQL As String

    Data1 = Sheets("Sticker").Range("B6").Value
    Data2 = Sheets("Sticker").Range("D4").Value
    Data3 = Sheets("Sticker").Range("A2").Value
    Data4 = Sheets("Sticker").Range("C8").Value
    Data5 = Sheets("Sticker").Range("B14").Value
    Data6 = Sheets("Sticker").Range("D12").Value
    Data7 = Sheets("Sticker").Range("A10").Value
    Data8 = Sheets("Sticker").Range("C16").Value
    strSQL = "INSERT INTO STICKER (CertNo, IssueDate, Serial, RecalDue,CertNo_Vic, IssueDate_Vic, Serial_Vic, RecalDue_Vic)" & _
            "VALUES('" & _
            Data1 & "','" & _
            Data2 & "','" & _
            Data3 & "','" & _
            Data4 & "','" & _
            Data5 & "','" & _
            Data6 & "','" & _
            Data7 & "','" & _
            Data8 & "')"

    adoConnection.Execute strSQL, , adCmdText + adExecuteNoRecords
    MsgBox "Added info to the db   ", vbExclamation, "Connection.Execute"
End Sub
4

1 に答える 1

1

どのDBに接続していますか? アクセスだと仮定すると、日付リテラルは # 文字で囲む必要があります。例: #7/12/2013#

しかし、より良い解決策は、パラメーター化されたクエリを使用することです。この方法では、適切な引用符について心配する必要がなく、値をそのまま渡すだけです。おまけ: SQL インジェクションの可能性を回避するのに役立ちます。

于 2013-08-19T14:33:32.890 に答える