Rez*_*nor 2 sql excel ms-access vba excel-vba
我正在使用excel将数据输入到Access数据库中,并且我的一些数据字符串包含用于测量的撇号.
这是我的SQL输入字符串
stSQL = "INSERT INTO Products (ProductName, ProductDescription, ProductUnit, SupplierID) " & _
"Values ('" & cboxItemNum & "', '" & txtDescription & "', '" & txtUnit & "', " & linkPID & ")"
cn.Execute (stSQL)
Run Code Online (Sandbox Code Playgroud)
我的字符串如下:
Aliplast 4E白色.30"X 80'X 1/4"柔软.
在这个字符串中'80之后导致错误,我不知道如何解决这个问题.我不能告诉用户不要输入撇号.我怎么能绕过这个?
谢谢
Fio*_*ala 10
您可以使用参数(推荐)或使用替换来更正此问题.
& Replace(txtDescription,"'","''") &
Run Code Online (Sandbox Code Playgroud)
参数
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
Run Code Online (Sandbox Code Playgroud)
请注意,虽然我已将这些参数param1命名为param4,但为了方便起见,重要的是顺序,它必须与参数的使用顺序相匹配.