2016-11-14 13 views
0

vbaコードでアクセスするSQL SERVERのイメージパスフィールドを挿入したいが、実行時エラー3075を実行し送信すると、パスを除いてすべてのフィールドが正常に挿入される。vbaによるアクセスでイメージパスをテーブルに挿入する

Dim sqlstr As String 
    Dim sqlstr1 As String 
    dim strSQL as string 



Set rs = CreateObject("ADODB.Recordset") 
      rs.CursorType = adOpenDynamic 

     rs.LockType = adLockReadOnly 
       rs.ActiveConnection = db 

       DoCmd.SetWarnings False 
       DoCmd.RunSQL "delete from tb_brws" 
       DoCmd.SetWarnings True 

      rs.Open "SELECT [sno] [imgp] from books_tb where [sno] like '" & Me.sno_txt & "' ;" 

      rs.MoveFirst 

Do 
sqlstr = rs![sno] 
sqlstr1 = rs1![imgp] 
DoCmd.SetWarnings False 


    strSQL="insert into tb_brws (sno,imgp) values ('" & sqlstr & "', '" & sqlstr1 & "')" 
DoCmd.RunSQL strSQL 

DoCmd.SetWarnings True 

rs.MoveNext 
    Loop While Not rs.EOF 



Set rs = Nothing 
+0

実行しようとしている解決済みのSQLを投稿してください。おそらく 'sno'は数字ですが、あなたは/ nとして扱いますか?おそらく、[imgp]内のいくつかの値は最終的なSQLを見る必要があります。 –

+0

sqlで何の問題もありません。imgp(イメージパス)の値をテキストに入れても問題ありませんが、テーブルに挿入すると文法エラーと演算子が見つかりませんでした。 –

+0

DOCMDを実行しようとするとエラーが発生しますか?そうであれば、実行しようとしている文字列全体を確認する必要があります。 –

答えて

0

実際のSQL文字列を示してくれてありがとう - それは文字列(01-08-2016'123.pdf)での単一引用符があることを示しているため、それは大いに助けました。アクセスはデリミタであると考えます(二重引用符で囲んでも構いません)。 次のコードを使用してください(私はテストして、うまく動作します)。

DoCmd.SetWarnings False 
' this will change any ' characters to '' which will allow the SQL to run. 
sqlstr1 = Replace(sqlstr1, "'", "''")  ' REPLACE SINGLE QUOTE 

strSQL = "insert into tb_brws (sno,imgp) values ('" & sqlstr & "', '" & sqlstr1 & "')" 
Debug.Print "MySQL: " & strSQL 
DoCmd.RunSQL strSQL 
DoCmd.SetWarnings True 
+0

ありがとうございました。しかし、パスに一重引用符を追加するのではなく、あなたの助けを借りて一重引用符を削除します。 –

+0

ファイル/パスに実際に名前に引用符が含まれていれば、コードを使用して削除できます。ファイル名を変更して引用符を削除すると、将来的に頭が傷つくことがあります。たとえば、Accessテーブルを読み取ってファイルを開こうとするコードを作成すると、 'File –

+0

はい、私はメモのコードのおかげでそれを削除することを知っています –

関連する問題