2016-05-20 12 views
0

このコードを実行すると、無効なSQLステートメントエラーが発生します。VBAで無効なSQLステートメント、AccessフォームのWordフォームフィールド

私はここからコードを得ましたWord Forms to Acces私はそれが私のために働くように部分を更新しました。

私の問題は、正しく動作するようにSQL文を追加することです。

Dim appWord As Word.Application 
Dim doc As Word.Document 
Dim cnn As New ADODB.Connection 
Dim rst As New ADODB.Recordset 
Dim strDocName As String 
Dim blnQuitWord As Boolean 

On Error GoTo ErrorHandling 

strDocName = C:\Word file 

Set appWord = GetObject(, "Word.Application") 
Set doc = appWord.Documents.Open(strDocName) 

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
"Data Source=N:\Direction\4-Signalliste\" & _ 
"Signal_liste.accdb;Jet OLEDB:Database Password=1234" 

rst.Open "Order", cnn, _ 
adOpenKeyset, adLockOptimistic 

With rst 
.AddNew 
!CompanyID = doc.FormFields("CompanyID").Result 
!swgNr = doc.FormFields("SWGNr").Result 
!SWG_typical = doc.FormFields("SWG_typical").Result 
!Signal_niveau = doc.FormFields("Signal_niveau").Result 
!protocol = doc.FormFields("Protocol").Result 
!Baud_rate = doc.FormFields("Baud_Rate").Result 
!casdu = doc.FormFields("CASDU").Result 
!casdu1 = doc.FormFields("CASDU1").Result 
!casdu2 = doc.FormFields("CASDU2").Result 
!IP_A = doc.FormFields("IP_A").Result 
!IP_B = doc.FormFields("IP_B").Result 
!IP = doc.FormFields("IP").Result 
!gate = doc.FormFields("Gate").Result 
!Subnet = doc.FormFields("Subnet").Result 
!Link_addr = doc.FormFields("Link_addr").Result 
.Update 
.Close 
End With 
doc.Close 
If blnQuitWord Then appWord.Quit 
cnn.Close 
MsgBox "Data Imported!" 

Cleanup: 
Set rst = Nothing 
Set cnn = Nothing 
Set doc = Nothing 
Set appWord = Nothing 
Exit Sub 
ErrorHandling: 
Select Case Err 
Case -2147022986, 429 
Set appWord = CreateObject("Word.Application") 
blnQuitWord = True 
Resume Next 
Case 5121, 5174 
MsgBox "You must select a valid Word document. " _ 
    & "No data imported.", vbOKOnly, _ 
    "Document Not Found" 
Case 5941 
MsgBox "The document you selected does not " _ 
    & "contain the required form fields. " _ 
    & "No data imported.", vbOKOnly, _ 
    "Fields Not Found" 
Case Else 
MsgBox Err & ": " & Err.Description 
End Select 
GoTo Cleanup 

End Sub 
+0

は完全なエラーを表示します。 – BIDeveloper

+0

"無効なSQLステートメント;予期した 'DELETE'、 'INSERT'、 'PROCEDURE'、 'SELECT'、または 'UPDATE'" – Azk

答えて

0

(単に接続、テーブル名、およびフィールドを変更)私は自分のPCで似たような状況を作成し、このコードが働いた:

Private Sub CommandButton1_Click() 

Dim appWord As Word.Application 
Dim doc As Word.Document 
Dim cnn As New ADODB.Connection 
Dim rst As New ADODB.Recordset 
Dim strDocName As String 
Dim blnQuitWord As Boolean 

On Error GoTo ErrorHandling 

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
"Data Source=F:\app\test.accdb" 

rst.Open "Table1", cnn, _ 
adOpenKeyset, adLockOptimistic 

With rst 
.AddNew 
!Field1 = ActiveDocument.FormFields("Text1").Result 
!Field2 = ActiveDocument.FormFields("Text1").Result 
!Field3 = ActiveDocument.FormFields("Text1").Result 
.Update 
.Close 
End With 
'doc.Close 
If blnQuitWord Then appWord.Quit 
cnn.Close 
MsgBox "Data Imported!" 

Cleanup: 
Set rst = Nothing 
Set cnn = Nothing 
Set doc = Nothing 
Set appWord = Nothing 
Exit Sub 
ErrorHandling: 
Select Case Err 
Case -2147022986, 429 
Set appWord = CreateObject("Word.Application") 
blnQuitWord = True 
Resume Next 
Case 5121, 5174 
MsgBox "You must select a valid Word document. " _ 
    & "No data imported.", vbOKOnly, _ 
    "Document Not Found" 
Case 5941 
MsgBox "The document you selected does not " _ 
    & "contain the required form fields. " _ 
    & "No data imported.", vbOKOnly, _ 
    "Fields Not Found" 
Case Else 
MsgBox Err & ": " & Err.Description 
End Select 
GoTo Cleanup 

End Sub 
+0

変更と以前と同じエラーが発生しました " INSERT '、' PROCEDURE '、' SELECT '、または' UPDATE '" – Azk

+0

私はあなたにこれを行うために使用したファイル(アクセスとワード)を送ることができます。あなたが私に電子メールアドレスを与えるなら、私はあなたを送るでしょう。 Microsoft ActiveX Data Objectsライブラリへの参照を追加しましたか? –

+0

私はあなたのファイルを仕事に持って来ました、私はフォームオブジェクトライブラリ2.0を見逃しました – Azk

関連する問題