2017-09-08 8 views
0

データをデータベースに挿入するときに問題があります。 mssqlを使用しています。vbaアクセス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 

私はメッセージボックスを使用してEditM1の値をチェックすると、それが正しい表示されます。 しかし、このようなエラーメッセージが表示されます。 enter image description here

この問題を解決できる人はいますか? ありがとうございます。

答えて

2

あなたのSQLにリテラル値「EditM1.value」を入れている:あなたの代わりにコントロールの値を送信する必要があります。

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

関連する問題