2015-04-23 27 views
1

我正在使用Access 2010和SQL Server 2008.我必须在我的一个窗体中捕获附件并将附件移动到SQL服务器。服务器是远程的,我不允许提供文件相对于服务器的路径。 这里是我尝试没有任何成功的事情: 1.使用ADODB.Stream,但我得到错误,当我使用转换函数(将数据转换为varbinary)获取文件值后使用.Read函数的对象 2.试过在我的表单中创建一个附件类型,并将附件插入数据类型为附件的本地访问数据库表中。我无法将该表中的数据移动到SQL Server表中。通过Access向远程SQL服务器添加附件

任何指针或解决方案将有很大的帮助。

谢谢

+0

你是什么意思“捕获附件”? – PhilS

+0

如果您显示了您尝试的实际代码,将会有所帮助 –

+0

是 - 发布您尝试的代码和发生的错误。 –

回答

0

我会做财产以后这样,它正在easyier我使用一个记录集...

dim Conn as ADODB.Connection 
dim RS as ADODB.RecordSet 
dim binObj as ADODB.Stream 
Conn.ConnectionString="Provider=SQLOLEDB;Persist Security Info=False;User ID=sa;Password=;Initial Catalog=khc405;Network Library=dbmssocn; Data Source=db1;" 
Conn.Open 
Set RS = New ADODB.Recordset 
            sql = "SELECT * FROM SOMETABLE WHERE FILENAME='HOWTO.PDF' 
            RS.Open sql, GLBcn, adOpenDynamic, adLockOptimistic 
            If Not (RS.BOF And RS.eof) Then 
             Set binObj = New ADODB.Stream 
             binObj.Type = adTypeBinary 
             binObj.Open 
             binObj.LoadFromFile (App.Path & "\SomeFolder\" & ''HOWTO.PDF'' 
             RS!FILEDATA = binObj.Read 
             RS!FileName ='HOWTO.PDF' 
             RS.Update 
             binObj.Close 
             Set binObj = Nothing 
    End If 

我得到这个从 - http://www.sqlservercentral.com/Forums/Topic243427-169-1.aspx

祝你好运

+0

谢谢Zvi,但这是一个付费网站。我14天的试用期很久以前。 – Kunal

+0

对不起!没有注意到... 我会编辑我的答案 –

1

我明白了。感谢所有的建议家伙。 我所做的只是创建一个ADODB.Stream对象,读取该文件并将其传递给插入数据的sql server中的proc。

插入数据的代码看起来像这样 暗淡康恩作为ADODB.Connection昏暗 CMD作为ADODB.Command 昏暗科尔为集合

Set conn = New ADODB.Connection 
Set coll = New Collection 

stConnect = GetADOConnectionString() 
conn.ConnectionString = stConnect 
conn.Open 
If conn.State = 1 Then ' open 
    Set cmd = New ADODB.Command 
    cmd.CommandType = adCmdStoredProc 
    cmd.CommandText = "proc_insert_review_doc" 
    cmd.ActiveConnection = conn 

    coll.Add cmd.CreateParameter("@LoanID", adVarChar, adParamInput, 10, LoanId) 
    coll.Add cmd.CreateParameter("@WorkStreamID", adVarChar, adParamInput, 10, WorkstreamID) 
    coll.Add cmd.CreateParameter("@QuestionSetID", adVarChar, adParamInput, 10, QuestionSetID) 
    coll.Add cmd.CreateParameter("@FileValue", adVarBinary, adParamInput, , FileValue) 


    For Each coll_i In coll 
     cmd.Parameters.Append (coll_i) 
    Next coll_i 

    cmd.Execute 

    Set cmd = Nothing 
    conn.Close 

Else 
    MsgBox "Failed to open a connection to the database server!", vbCritical 
End If 
    Set conn = Nothing 

端功能