2017-09-08 179 views
0

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

Private Sub EditMethodAdd_Click() 

Dim rs As ADODB.Recordset 
Dim introw 
Dim strState As String 
Dim strsql1 As String 
Dim strsql2 As String 
Dim all As String 

Dim strConn As String 
Dim conn As ADODB.Connection 

MsgBox ("EditM1.Value:" & EditM1.value) 


strConn = "DRIVER=SQL Server;SERVER=CHU-AS-0004;DATABASE=RTC_LaplaceD_DEV;Trusted_Connection=Yes;" 

strsql1 = " INSERT INTO dbo.Method(MethodID, MethodClass, Category, Description, Description2, MSA, ReqType, Equipment, Location, Spec1, Spec2, Spec3, Spec4, Spec5, Spec6, PilotingYN) " 
strsql2 = " VALUES(EditM1.value, 'Piloting', EditM3.value, Null, Null, Null, Null, EditM2.value, EditM4.value, EditM5.value, EditM6.value, EditM7.value, EditM8.value, EditM9.value, EditM10.value, Null)" 


all = strsql1 & strsql2 

MsgBox ("ALL" & all) 


Set conn = New ADODB.Connection 
conn.Open strConn 

Set rs = New ADODB.Recordset 
rs.Open all, conn 
MsgBox ("Insert Success") 

EditMethodList.Requery 

conn.Close 
Set rs = Nothing 
Set conn = Nothing 

MsgBox "Data has been updated" 
EditMethodList.Requery 

End Sub 

当我使用MSGBOX检查EditM1值,它显示正确。 但我得到这样的错误消息。 enter image description here

有没有人可以解决这个问题? 预先感谢您。

回答

2

你把字面值“EditM1.value”到SQL:你应该改为发送控制的价值:

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

如果任何值被送进是不是数字,然后他们应该用单引号包装。

+0

你能给我完整的代码吗?因为我一直在收到错误....对不起... –

+0

@ yowe3k - 已修复,谢谢 –

2

删除线:

strsql1 = ... 
strsql2 = ... 

all = strsql1 & strsql2 

,写这个代替

all = "INSERT INTO dbo.Method(MethodID, MethodClass, Category, Description, Description2, MSA, ReqType, Equipment, Location, Spec1, Spec2, Spec3, Spec4, Spec5, Spec6, PilotingYN) " 
all = all & "VALUES(" & EditM1.value & ", 'Piloting'," & EditM3.value & ", Null, 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读取它作为一个字符串,它不是指它的价值。您需要连接字符串和值与&来创建您的查询。

+0

它不工作...它显示'错误的语法附近..... –

+2

不要这样做。使用参数查询,这里是一个解释和示例:https://stackoverflow.com/a/46057683/3820271 – Andre