当我使用ms access 2007时,它可以完美运行。我打开ms访问2010,现在它不起作用。
DoCmd.RunSQL ("INSERT INTO Pending_Orders (Customer, ItemNumber, Description, Qty, [Order #], Temp, ShipDate) VALUES (" & _
"'" & Replace(rst!Customer, "'", "''") & "','" & rst![Item #] & "','" & rst!Description & "'," & rst!Qty & ",'" & rst![Order #] & "'," & NextTemp & ",#" & rst![Ship Date] & "#)")
我现在收到此错误。
它可能是什么?
答案 0 :(得分:0)
我建议你将上面代码中的单引号替换为双引号,这是Paul O' Connor等名称的一个常见问题。也可以在DoCmd.RunSQL上使用CurrentDb.Execute。使用currentBD可以抑制恼人的消息并查看更多信息。最后,总是使用String来获取SQL查询,因此调试可能会容易得多。
尝试以下方法,
strSQL = "INSERT INTO Pending_Orders (Customer, ItemNumber, Description, Qty, [Order #], " & _
"Temp, ShipDate) VALUES (" & Chr(34) & rst!Customer & Chr(34) & _
", " & Chr(34) & rst![Item #] & Chr(34) & _
", " & Chr(34) & rst!Description & Chr(34) & _
", " & rst![Qty] & ", " & Chr(34) & rst![Order #] & Chr(34) & _
", " & NextTemp & ", " & Format(rst![Ship Date], "\#mm\/dd\/yyyy\#") & ")
CurrentDB.Execute strSQL
答案 1 :(得分:0)
除了Paul Francis的回答,我还提供了EscapeDBstring函数,它解决了" Paul O' Connor"中的嵌入引用问题。通过转义嵌入的引用:
' dbEscapeString -- escape the single quote in a string that will be included in
' an SQL statement. The single quote is the database/SQL string delimiter.
Public Function dbEscapeString(ByVal s)
Dim i
i = 1
While (i <= Len(s))
If (Mid(s, i, 1) = "'") Then
'If (Mid(s, i + 1, 1) = "'") Then ' this would consider two single quotes to be escaped already
' i = i + 1
'Else
s = Mid(s, 1, i) + Mid(s, i)
i = i + 1
'End If
End If
i = i + 1
Wend
dbEscapeString = s
End Function