哈哈,一举两得!1.把文件内容写到数据库中
Const BLOCKSIZE As Long = 4096
Sub FileToColumn(Col As ADODB.Field, DiskFile As String)
'从一个临时文件中获取数据,并把它保存到数据库中
'col为一个ADO字段,DiskFile为一个文件名,它可以为一个远程文件。
Dim strData() As Byte '声明一个动态数组
Dim NumBlocks As Long '读写块数
Dim FileLength As Long '文件长度
Dim LeftOver As Long '剩余字节数
Dim SourceFile As Long ‘文件句柄
Dim i As Long
SourceFile = FreeFile '获得剩余的文件句柄号
Open DiskFile For Binary Access Read As SourceFile '以二进制读方式打开源文件。
FileLength = LOF(SourceFile) '获得文件长度
If FileLength = 0 Then
Close SourceFile '关闭文件
Peedy.Speak DiskFile & " Empty or Not Found." ‘调用Msagent控件,提示信息
Else
NumBlocks = FileLength \ BLOCKSIZE ‘获得块数
LeftOver = FileLength Mod BLOCKSIZE ‘最后一块的字节数
Col.AppendChunk Null ‘追加空值,清除已有数据
ReDim strData(BLOCKSIZE) ‘从文件中读取内容并写到文件中。
For i = 1 To NumBlocks
Get SourceFile, , strData
Col.AppendChunk strData
Next I
ReDim strData(LeftOver)
Get SourceFile, , strData
Col.AppendChunk strData
Close SourceFile
End If
End Sub 2.从数据库中把文件内容读出来,并写到一个文件中。 Private Sub ColumnToFile(Col As ADODB.Field, DiskFile As String, rsset As Recordset)
'从数据库获得数据并把它们写到硬盘上的一个临时文件中。
'快的大小以4096为单位 Dim NumBlocks As Long '注释见上文
Dim LeftOver As Long '
Dim strData() As Byte Dim DestFileNum As Long
Dim i As Long
Dim ColSize As Long '确保你存取的不是一个空记录集
If Not rsset.EOF And Not rsset.BOF Then
ColSize = Col.ActualSize
'获得列的实际大小
'如果文件长度为零,将删除文件内容
If Len(Dir$(DiskFile)) > 0 Then
Kill DiskFile
End If
DestFileNum = FreeFile
Open DiskFile For Binary As DestFileNum
NumBlocks = ColSize \ BLOCKSIZE
LeftOver = ColSize Mod BLOCKSIZE
'把数据写到文件中
For i = 1 To NumBlocks
ReDim strData(BLOCKSIZE)
strData = Col.GetChunk(BLOCKSIZE)
Put DestFileNum, , strData
Next i ReDim strData(LeftOver)
strData = Col.GetChunk(LeftOver)
Put DestFileNum, , strData
Close DestFileNum
End If
End Sub
Const BLOCKSIZE As Long = 4096
Sub FileToColumn(Col As ADODB.Field, DiskFile As String)
'从一个临时文件中获取数据,并把它保存到数据库中
'col为一个ADO字段,DiskFile为一个文件名,它可以为一个远程文件。
Dim strData() As Byte '声明一个动态数组
Dim NumBlocks As Long '读写块数
Dim FileLength As Long '文件长度
Dim LeftOver As Long '剩余字节数
Dim SourceFile As Long ‘文件句柄
Dim i As Long
SourceFile = FreeFile '获得剩余的文件句柄号
Open DiskFile For Binary Access Read As SourceFile '以二进制读方式打开源文件。
FileLength = LOF(SourceFile) '获得文件长度
If FileLength = 0 Then
Close SourceFile '关闭文件
Peedy.Speak DiskFile & " Empty or Not Found." ‘调用Msagent控件,提示信息
Else
NumBlocks = FileLength \ BLOCKSIZE ‘获得块数
LeftOver = FileLength Mod BLOCKSIZE ‘最后一块的字节数
Col.AppendChunk Null ‘追加空值,清除已有数据
ReDim strData(BLOCKSIZE) ‘从文件中读取内容并写到文件中。
For i = 1 To NumBlocks
Get SourceFile, , strData
Col.AppendChunk strData
Next I
ReDim strData(LeftOver)
Get SourceFile, , strData
Col.AppendChunk strData
Close SourceFile
End If
End Sub 2.从数据库中把文件内容读出来,并写到一个文件中。 Private Sub ColumnToFile(Col As ADODB.Field, DiskFile As String, rsset As Recordset)
'从数据库获得数据并把它们写到硬盘上的一个临时文件中。
'快的大小以4096为单位 Dim NumBlocks As Long '注释见上文
Dim LeftOver As Long '
Dim strData() As Byte Dim DestFileNum As Long
Dim i As Long
Dim ColSize As Long '确保你存取的不是一个空记录集
If Not rsset.EOF And Not rsset.BOF Then
ColSize = Col.ActualSize
'获得列的实际大小
'如果文件长度为零,将删除文件内容
If Len(Dir$(DiskFile)) > 0 Then
Kill DiskFile
End If
DestFileNum = FreeFile
Open DiskFile For Binary As DestFileNum
NumBlocks = ColSize \ BLOCKSIZE
LeftOver = ColSize Mod BLOCKSIZE
'把数据写到文件中
For i = 1 To NumBlocks
ReDim strData(BLOCKSIZE)
strData = Col.GetChunk(BLOCKSIZE)
Put DestFileNum, , strData
Next i ReDim strData(LeftOver)
strData = Col.GetChunk(LeftOver)
Put DestFileNum, , strData
Close DestFileNum
End If
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货