2013-08-19 118 views
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 
+1

只是一個猜測,但它可能抱怨,因爲你正在引用非字符的字段值。另外,考慮使用Prepared Statements - 它們有助於緩解這類問題。 – Joe

+0

首先告訴我們每個DataN是什麼 - 一個數字?一個字符串?還有什麼是數據庫列數據類型? – 2013-08-19 13:46:10

+0

其他每列都是數據庫中的日期,謝謝 – user2341069

回答

1

DB你連接到哪個?假設它是Access,日期字面量必須被#字符包圍,而不是單引號例如#7/12/2013#

但是更好的解決方案是使用參數化查詢 - 這樣您就不必擔心關於適當的引號並簡單地傳遞值。獎金:這將有助於避免可能的SQL注入。

相關問題