我正在为我的工作开发一个数据库,我正在尝试在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
。
我很感激我得到的任何答案。 非常感谢提前。
答案 0 :(得分:0)
快速谷歌“运行时错误3464”表明这是一种数据类型不匹配。当您尝试将日期值保存在字符串字段或类似内容中时,通常会看到此内容。
仔细检查传递给SQL语句的类型是否与应保存的列匹配 - 如果发现差异,则应用任何必要的转换。
同样最后一个问题......通过动态构建SQL字符串,您会让自己容易受到SQL注入攻击 - 您应该考虑使用带参数的ADOCommands。
答案 1 :(得分:0)
我的错误是尝试将整数与字符串进行比较。即使你创建一个新条目,sql确实将它从一个整数转换为一个字符串,如果你想在一个地方进行比较,它就不会强制转换它。