Sql server vba访问mssql插入数据

Sql server vba访问mssql插入数据,sql-server,vba,ms-access,Sql Server,Vba,Ms Access,我在将数据插入数据库时遇到一些问题。 我正在使用mssql Private子编辑方法添加\单击() 将rs设置为ADODB.Recordset 暗淡的介绍 作为字符串的Dim strState 作为字符串的Dim strsql1 作为字符串的Dim strsql2 像线一样模糊 作为字符串的Dim strConn Dim conn作为ADODB连接 MsgBox(“EditM1.Value:&EditM1.Value”) strConn=“DRIVER=SQL Server;Server=CHU

我在将数据插入数据库时遇到一些问题。 我正在使用mssql

Private子编辑方法添加\单击()
将rs设置为ADODB.Recordset
暗淡的介绍
作为字符串的Dim strState
作为字符串的Dim strsql1
作为字符串的Dim strsql2
像线一样模糊
作为字符串的Dim strConn
Dim conn作为ADODB连接
MsgBox(“EditM1.Value:&EditM1.Value”)
strConn=“DRIVER=SQL Server;Server=CHU-AS-0004;DATABASE=RTC\u LaplaceD\u DEV;Trusted\u Connection=Yes;”
strsql1=“插入dbo.Method(MethodID、MethodClass、Category、Description、Description2、MSA、ReqType、设备、位置、Spec1、Spec2、Spec3、Spec4、Spec5、Spec6、PilotingYN)”
strsql2=“值(EditM1.value,‘Piloting’、EditM3.value、Null、Null、Null、EditM2.value、EditM4.value、EditM5.value、EditM6.value、EditM7.value、EditM8.value、EditM9.value、EditM10.value、Null)”
全部=strsql1和strsql2
MsgBox(“全部”&全部)
Set conn=新的ADODB.连接
连接开放式结构
Set rs=New ADODB.Recordset
rs.全打开,康涅狄格州
MsgBox(“插入成功”)
编辑方法列表。重新查询
关闭连接
设置rs=无
设置连接=无
MsgBox“数据已更新”
编辑方法列表。重新查询
端接头
当我使用MsgBox检查EditM1的值时,它显示correct。 但我收到了这样的错误信息

有人能解决这个问题吗?
提前感谢。

您正在将文本值“EditM1.value”放入SQL中:您应该改为发送控件的值:

strsql2 = "   VALUES(" & EditM1.value & ", 'Piloting', " & _
                         EditM3.value & ", Null,..." 'etc

如果发送的任何值不是数字,那么它们应该用单引号括起来

您正在将文本值“EditM1.value”放入SQL中:您应该改为发送控件的值:

strsql2 = "   VALUES(" & EditM1.value & ", 'Piloting', " & _
                         EditM3.value & ", Null,..." 'etc
如果发送的任何值不是数字,那么它们应该用单引号括起来

删除以下行:

strsql1=。。。
strsql2=。。。
全部=strsql1和strsql2
然后写下这个

all=“插入dbo.Method(MethodID、MethodClass、Category、Description、Description2、MSA、需求类型、设备、位置、Spec1、Spec2、Spec3、Spec4、Spec5、Spec6、PilotingYN)”
all=all&“值(“&EditM1.value&”、'Piloting'、“&EditM3.value&”、Null、Null、Null、“&EditM2.value&”、“&EditM4.value&”、”
all=all&EditM5.value&“,&EditM6.value&“,&EditM7.value&“,&EditM8.value&“,&EditM9.value&“,&EditM10.value&”,Null)”
如果像您那样将EditM1.value插入双引号,VBA会将其作为字符串读取,而不会引用其值。您需要将字符串和值与&连接起来以创建查询。

删除行:

strsql1=。。。
strsql2=。。。
全部=strsql1和strsql2
然后写下这个

all=“插入dbo.Method(MethodID、MethodClass、Category、Description、Description2、MSA、需求类型、设备、位置、Spec1、Spec2、Spec3、Spec4、Spec5、Spec6、PilotingYN)”
all=all&“值(“&EditM1.value&”、'Piloting'、“&EditM3.value&”、Null、Null、Null、“&EditM2.value&”、“&EditM4.value&”、”
all=all&EditM5.value&“,&EditM6.value&“,&EditM7.value&“,&EditM8.value&“,&EditM9.value&“,&EditM10.value&”,Null)”

如果像您那样将EditM1.value插入双引号,VBA会将其作为字符串读取,而不会引用其值。您需要将字符串和值与&连接起来以创建查询。

不要这样做。使用参数查询,下面是一个解释和示例:不要这样做。使用参数查询,下面是一个解释和示例: