2016-11-14 39 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

是的,我知道我从代码中删除它感谢您的提示 –