2016-11-14 51 views
0

訪問我想插入從SQL Server圖像路徑領域到表中的VBA代碼的訪問,但它dosent運行併發送運行時錯誤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)。 Access認爲這是一個分隔符(不管你是否用雙引號括起來)。 請使用下面的代碼(我測試過了,它工作得很好)。

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 not found'。 –

+0

是的,我知道我從代碼中刪除它感謝您的提示 –