我正在使用 Excel 将数据输入到 Access 数据库中,并且我的一些数据字符串包含用于测量的撇号。
这是我的 SQL 输入字符串
stSQL = "INSERT INTO Products (ProductName, ProductDescription, ProductUnit, SupplierID) " & _
"Values ('" & cboxItemNum & "', '" & txtDescription & "', '" & txtUnit & "', " & linkPID & ")"
cn.Execute (stSQL)
我的字符串如下:
Aliplast 4E 白色。 30"X 80' X 1/4"软。
在此字符串中,80 之后的 ' 导致了错误,我不知道如何解决这个问题。我不能只是告诉用户不要输入撇号。我该如何解决这个问题?
谢谢
最佳答案
您可以通过使用参数(推荐)或使用替换来更正此问题。
& Replace(txtDescription,"'","''") &
参数
Dim cmd As New ADODB.command
cn.Open ServerConnect
cmd.ActiveConnection = cn
stSQL = "INSERT INTO Products (ProductName, " _
& "ProductDescription, ProductUnit, SupplierID) " _
& "Values (param1,param2,param3,param4)"
cmd.CommandText = stSQL
cmd.CommandType = adCmdText
With cmd
.Parameters.Append .CreateParameter( _
"param1", adInteger, adParamInput, , cboxItemNum)
.Parameters.Append .CreateParameter( _
"param2", adVarChar, adParamInput, 50, txtDescription )
.Parameters.Append .CreateParameter( _
"param3", adInteger, adParamInput, , txtUnit )
.Parameters.Append .CreateParameter( _
"param4", adInteger, adParamInput, , linkPID )
End with
cmd.Execute recs
请注意,虽然我将这些参数命名为 param1 到 param4,但这是为了方便起见,重要的是顺序,它必须与参数的使用顺序相匹配。
关于sql - Excel Vba - 在 sql 字符串中使用撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796973/