Private Function DatabaseToFile(ByVal DataField As ADODB.Field, ByVal vSaveAs As String, ByVal vFileExpendName As String) As String
Dim fnum As Long, bytesleft As Long, bytes As Long
Dim lSumSize As Long, lNowSize As Long
Dim tmp() As Byte
On Error GoTo ErrHandleDatabaseToFile
If Trim(vSaveAs) = "" Then
DatabaseToFile = GetTempFileName(vFileExpendName)
Else
DatabaseToFile = Trim(vSaveAs)
End If
fnum = FreeFile
Open (DatabaseToFile) For Binary As fnum
bytesleft = DataField.ActualSize
lSumSize = CLng(bytesleft / 8192)
Do While bytesleft
bytes = bytesleft
If bytes > 8192 Then bytes = 8192
tmp = DataField.GetChunk(bytes)
Put #fnum, , tmp
bytesleft = bytesleft - bytes
lNowSize = lNowSize + 1
RaiseEvent TransmitData(lNowSize, lSumSize, False)
Loop
Close #fnum
Exit Function
ErrHandleDatabaseToFile:
DatabaseToFile = ""
Err.Clear
End FunctionPrivate Function FileToDatabase(ByVal vDataField As ADODB.Field, ByVal vFileName As String)
Dim fnum As Long, bytesleft As Long, bytes As Long
Dim lSumSize As Long, lNowSize As Long
Dim tmp() As Byte
On Error GoTo ErrHandleFileToDatabase
fnum = FreeFile
Open vFileName For Binary As fnum
bytesleft = LOF(fnum)
lSumSize = CLng(bytesleft / 8192)
Do While bytesleft
bytes = bytesleft
If bytes > 8192 Then bytes = 8192
ReDim tmp(1 To bytes) As Byte
Get #fnum, , tmp
vDataField.AppendChunk tmp
bytesleft = bytesleft - bytes
lNowSize = lNowSize + 1
DoEvents
RaiseEvent TransmitData(lNowSize, lSumSize, True)
Loop
Close #fnum
Exit Function
ErrHandleFileToDatabase:
Err.Clear
End Function
Dim fnum As Long, bytesleft As Long, bytes As Long
Dim lSumSize As Long, lNowSize As Long
Dim tmp() As Byte
On Error GoTo ErrHandleDatabaseToFile
If Trim(vSaveAs) = "" Then
DatabaseToFile = GetTempFileName(vFileExpendName)
Else
DatabaseToFile = Trim(vSaveAs)
End If
fnum = FreeFile
Open (DatabaseToFile) For Binary As fnum
bytesleft = DataField.ActualSize
lSumSize = CLng(bytesleft / 8192)
Do While bytesleft
bytes = bytesleft
If bytes > 8192 Then bytes = 8192
tmp = DataField.GetChunk(bytes)
Put #fnum, , tmp
bytesleft = bytesleft - bytes
lNowSize = lNowSize + 1
RaiseEvent TransmitData(lNowSize, lSumSize, False)
Loop
Close #fnum
Exit Function
ErrHandleDatabaseToFile:
DatabaseToFile = ""
Err.Clear
End FunctionPrivate Function FileToDatabase(ByVal vDataField As ADODB.Field, ByVal vFileName As String)
Dim fnum As Long, bytesleft As Long, bytes As Long
Dim lSumSize As Long, lNowSize As Long
Dim tmp() As Byte
On Error GoTo ErrHandleFileToDatabase
fnum = FreeFile
Open vFileName For Binary As fnum
bytesleft = LOF(fnum)
lSumSize = CLng(bytesleft / 8192)
Do While bytesleft
bytes = bytesleft
If bytes > 8192 Then bytes = 8192
ReDim tmp(1 To bytes) As Byte
Get #fnum, , tmp
vDataField.AppendChunk tmp
bytesleft = bytesleft - bytes
lNowSize = lNowSize + 1
DoEvents
RaiseEvent TransmitData(lNowSize, lSumSize, True)
Loop
Close #fnum
Exit Function
ErrHandleFileToDatabase:
Err.Clear
End Function
解决方案 »
- VB调用cmd
- 对于指定的操作,该主题不受信任
- 无法与数据库相连 ?!
- 请问在SQL中定义存储过程的VHARCHAR(15)参数,在VB中用什么类型匹配?等待中。。。。
- Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)里的三个参数source、X、Y各代表什么意思?
- 什么是非綁定數據庫編程?
- 我们为什么要在CSDN上回答问题??——简单的Up者勿进!
- 那有纯中文的MSDN呢?告诉小弟一声!狂感谢!狂给分!我下类后送你一份
- 高分求用api作饼图的代码,谢谢!
- 能在vb环境下开多线程吗 怎么开,如果开多进程呢?
- 有懂GIS系统的大哥吗?有什么软件可以绘制电子地图吗?Mapinfo太烂了。谢谢告诉我一个可以下载的地方重奖!!!
- 新手请教一个关于string的问题?
(1)如果是把word文档内容存入数据库,比如表格,你可以使用自己定义的特殊字符,就直接用sql语句insert进去。读出来的时候,根据特殊字符来生成WORD文档的内容。
(2)如果是把文档的名称(包括路径存入),就在生成WORD文档的时候,直接在程序中把此文档保存(在程序里写代码),把路径写入数据库。打开此文档的方法如下:读出文档的路径,使用API,就可以把此文档打开
(3)代码部分,可以直接在VB里面写程序把文档存入数据库。也可以在VB里面写代码,把代码传到WORD文档的close事件中,当文档关闭的时候,执行程序代码