簡體   English   中英

MS Access 運行時錯誤 3464

[英]MS Access runtime error 3464

我正在為我的工作開發一個數據庫,我正在嘗試在 vb 編輯器中使用 sql 從表中插入和更新值這是我的代碼:

Option Compare Database

Private Sub Übernehmen_Click()
    Dim strSQL1 As String
    Dim strSQL2 As String
    Dim strSQL3 As String
    Dim ArtikelNr As Integer
    Dim Stück As Integer
    Dim Lieferant As String
    Dim Bestellnr As Integer
    Dim EkPreis As String
    Dim Mwst As String
    Dim Einkaufsort As String
    Dim GhIndex As String
    Dim Datum As String
    Dim Uhrzeit As String
    Dim Lager As String
    Dim Beschreibung As String

    ArtikelNr = [Forms]![Einkauf]![ArtikelNr].Value
    Stück = [Forms]![Einkauf]![Stück].Value
    Lieferant = [Forms]![Einkauf]![Lieferant].Value
    Bestellnr = [Forms]![Einkauf]![Bestellnr].Value
    EkPreis = [Forms]![Einkauf]![EK-Preis].Value
    Mwst = [Forms]![Einkauf]![Mwst-Satz].Value
    Einkaufsort = [Forms]![Einkauf]![Einkaufsort].Value
    GhIndex = [Forms]![Einkauf]![GH-Index].Value
    Datum = [Forms]![Einkauf]![Datum].Value
    Uhrzeit = [Forms]![Einkauf]![Uhrzeit].Value
    Lager = [Forms]![Einkauf]![Lager].Value

    strSQL1 = "INSERT INTO Einkäufe (ArtikelNr, Stück, Lieferant, Bestellnr, EKPreis, MwstSatz, Einkaufsort, GHIndex) VALUES (" & ArtikelNr & "," & Stück & ",'" & Lieferant & "','" & Bestellnr & "','" & EkPreis & "','" & Mwst & "','" & Einkaufsort & "','" & GhIndex & "');"

    Beschreibung = DLast("EinkaufID", "Einkäufe")

    strSQL2 = "INSERT INTO Transaktionen VALUES ('" & ArtikelNr & "','" & Datum & "','" & Lager & "','" & Stück & "','EinkaufID ' + '" & Beschreibung & "' ,'Einkauf',NULL,NULL,'" & Uhrzeit & "');"
    strSQL3 = "UPDATE Lagerbestand SET Stück = Stück+" & Stück & " WHERE ArtikelNr = '" & ArtikelNr & "' AND Lager = '" & Lager & "';"

    DoCmd.RunSQL strSQL1
    DoCmd.RunSQL strSQL2
    DoCmd.RunSQL strSQL3

End Sub

在嘗試按下按鈕后,它首先添加兩個條目並在第三個條目處停止,只是為了拋出一個錯誤,說“運行時錯誤:3464”。 在我按下調試后,它標記了DoCmd.RunSQL strSQL3行。

我會很感激我得到的任何答案。 提前謝謝了。

“運行時錯誤 3464”的快速谷歌表明這是數據類型不匹配。 當您嘗試在字符串字段或類似字段中保存日期值時,您通常會看到這一點。

仔細檢查傳遞給 SQL 語句的類型是否與它們應保存到的列匹配 - 如果發現差異,則應用任何必要的轉換。

還有最后一個提醒……通過動態構建 SQL 字符串,您很容易受到 SQL 注入攻擊 - 您應該考慮使用帶有參數的 ADOCommands。

我的錯誤是嘗試將整數與字符串進行比較。 即使在創建新條目時 sql 確實將其從整數轉換為字符串,但如果您想在 where 中進行比較,它也不會轉換它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM