我正在使用Access 2010和SQL Server 2008.我必须在我的一个表单中捕获附件并将附件移动到SQL Server。服务器是远程的,我不允许提供相对于服务器的文件路径。 以下是我尝试过但没有成功的事情: 1.使用ADODB.Stream但我在使用转换函数(将数据转换为varbinary)后获取文件值后使用对象的.Read函数时出错 2.尝试在表单中创建附件类型,并将附件插入到本地访问数据库表中,数据类型为附件。我无法将此表中的数据移动到SQL服务器表。
任何指针或解决方案都会有很大的帮助。
谢谢
答案 0 :(得分:1)
我明白了。谢谢你们所有的建议。 我所做的只是创建一个ADODB.Stream对象,读取文件并将其传递给sql server中的proc,该服务器插入数据。
插入数据的代码如下所示 Dim conn As ADODB.Connection Dim cmd作为ADODB.Command Dim coll As Collection
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
结束功能
答案 1 :(得分:0)
我会做那样的事情,使用记录集对我来说更容易......
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
祝你好运