'读取文件到内容 Set iStm = New ADODB.Stream With iStm .Type = adTypeBinary '二进制模式 .Open .LoadFromFile "c:\test.doc" End With
'打开保存文件的表 Set iRe = New ADODB.Recordset With iRe .Open "表", iConc, adOpenKeyset, adLockOptimistic .AddNew '新增一条记录 .Fields("保存文件内容的字段") = iStm.Read .Update End With
'完成后关闭对象 iRe.Close iStm.Close End Sub'从数据库中读取数据,保存成文件 Sub s_ReadFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset Dim iConc As String
'读取文件到内容 Set iStm = New ADODB.Stream With iStm .Type = adTypeBinary '二进制模式 .Open .LoadFromFile "c:\aaa.doc" End With
'打开保存文件的表 Set iRe = New ADODB.Recordset With iRe .Open "kaoshi", iConc, adOpenKeyset, adLockOptimistic .AddNew '新增一条记录 .Fields("content") = iStm.Read .Update End With
'完成后关闭对象 iRe.Close iStm.Close End Sub'从数据库中读取数据,保存成文件 Sub s_ReadFile() Dim iStm As ADODB.Stream Dim iRe As ADODB.Recordset Dim iConc As String
'打开表 Set iRe = New ADODB.Recordset iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly iRe.Filter = "id=64"
'保存到文件 Set iStm = New ADODB.Stream With iStm .Mode = adModeReadWrite .Type = adTypeBinary .Open .Write iRe("img") .SaveToFile "c:\test.doc" End With
'关闭对象 iRe.Close iStm.Close End SubPrivate Sub Command1_Click() Call s_SaveFile End Sub 这样后 一点command1 提示“运行时错误‘3001’参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突” 我编译通过了 我是想把aaa.doc里的东西用2进制存在bbb.mdb的第2个字段里 bbb.mdb格式如下 ID content 自动编号 aaa.doc的内容
我是想把aaa.doc里的东西用2进制存在bbb.mdb的第2个字段里 你不是已经写了吗?? With iRe .Open "kaoshi", iConc, adOpenKeyset, adLockOptimistic .AddNew '新增一条记录 .Fields("content") = iStm.Read .Update End With
'Objects: Form1
'引用 Microsoft ActiveX Data Objects 2.5 Libary
'或 Microsoft ActiveX Data Objects 2.6 Libary
Dim TempFileName As String
TempFileName = App.Path & "\TempFile.doc"
Dim adoConnection As New ADODB.Connection
Dim adoRecordset As New ADODB.Recordset
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\mmxdb97.mdb"
adoRecordset.Open "SELECT * FROM bmp", adoConnection, adOpenKeyset, adLockOptimistic ', adCmdTable
Debug.Print adoRecordset.Fields(1).Type '大字段
adoRecordset.AddNew
Dim adoStream As New ADODB.Stream
adoStream.Type = adTypeBinary
adoStream.Open
adoStream.LoadFromFile CommonDialog1.FileName
'将二进制文件写入大字段:
adoRecordset.Fields.Item(1).AppendChunk adoStream.Read'================================
'从大字段读取二进制数据:
adoStream.Write adoRecordset.Fields.Item(1).GetChunk(adoRecordset.Fields.Item(1).ActualSize)
adoStream.SaveToFile TempFileName, IIf(Len(Trim(Dir(TempFileName, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)ShellExcute(...TempFileName...)
'**
'** 使用 ADODB.Stream 保存/读取文件到数据库
'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
'**
'** ----- 数据库连接字符串模板 ---------------------------------------
'** ACCESS数据库
'** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
'** ";Data Source=数据库名"
'**
'** SQL数据库
'** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
'** "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
'**
'*************************************************************************
'
'保存文件到数据库中
Sub s_SaveFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcStr As String
'数据库连接字符串
iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=F:\My Documents\客户资料1.mdb"
'读取文件到内容
Set iStm = New ADODB.Stream
With iStm
.Type = adTypeBinary '二进制模式
.Open
.LoadFromFile "c:\test.doc"
End With
'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "表", iConc, adOpenKeyset, adLockOptimistic
.AddNew '新增一条记录
.Fields("保存文件内容的字段") = iStm.Read
.Update
End With
'完成后关闭对象
iRe.Close
iStm.Close
End Sub'从数据库中读取数据,保存成文件
Sub s_ReadFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConc As String
'数据库连接字符串
iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=\\xz\c$\Inetpub\zj\zj\zj.mdb"
'打开表
Set iRe = New ADODB.Recordset
iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly
iRe.Filter = "id=64"
'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe("img")
.SaveToFile "c:\test.doc"
End With
'关闭对象
iRe.Close
iStm.Close
End Sub
实时错误 -2147467259(80004005)
对数据库的格式有什么要求么?
还有怎么对存入哪个字段控制
对不起 我是刚学的
麻烦您说清楚点
如果是access97,使用Provider=Microsoft.Jet.OLEDB.3.51;
'*************************************************************************
'**
'** 使用 ADODB.Stream 保存/读取文件到数据库
'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
'**
'** ----- 数据库连接字符串模板 ---------------------------------------
'** ACCESS数据库
'** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
'** ";Data Source=数据库名"
'**
'** SQL数据库
'** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
'** "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
'**
'*************************************************************************
'
'保存文件到数据库中
Sub s_SaveFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcStr As String
'数据库连接字符串
iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=c:\bbb.mdb"
'读取文件到内容
Set iStm = New ADODB.Stream
With iStm
.Type = adTypeBinary '二进制模式
.Open
.LoadFromFile "c:\aaa.doc"
End With
'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "kaoshi", iConc, adOpenKeyset, adLockOptimistic
.AddNew '新增一条记录
.Fields("content") = iStm.Read
.Update
End With
'完成后关闭对象
iRe.Close
iStm.Close
End Sub'从数据库中读取数据,保存成文件
Sub s_ReadFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConc As String
'数据库连接字符串
iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=\\xz\c$\Inetpub\zj\zj\zj.mdb"
'打开表
Set iRe = New ADODB.Recordset
iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly
iRe.Filter = "id=64"
'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe("img")
.SaveToFile "c:\test.doc"
End With
'关闭对象
iRe.Close
iStm.Close
End SubPrivate Sub Command1_Click()
Call s_SaveFile
End Sub
这样后 一点command1 提示“运行时错误‘3001’参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突”
我编译通过了
我是想把aaa.doc里的东西用2进制存在bbb.mdb的第2个字段里
bbb.mdb格式如下
ID content
自动编号 aaa.doc的内容
你不是已经写了吗??
With iRe
.Open "kaoshi", iConc, adOpenKeyset, adLockOptimistic
.AddNew '新增一条记录
.Fields("content") = iStm.Read
.Update
End With
不知道VB处理文字的UNICODE编码很麻烦吗?
不知道纯二进制和STRING之间的关系吗?
没有见过ACCESS中的数据类型的定义吗?
你可以把法直接说出来,不用搞得这么夸张吧?
'保存文件到数据库中
Sub s_SaveFile()
..........
...........
'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "表", iConc, adOpenKeyset, adLockOptimistic '此处错了应改为 iConcStr .Open "表", iConcStr, adOpenKeyset, adLockOptimistic '正确的...........
..........
end sub
我这有时候接不到 内网