用VB6开发一个autocad图样管理软件,用mstream将SqlServer中保存的autocad图样读出并写到硬盘,程序可以执行并在硬盘上产生autocad图样文件,但用autocad打开时却报告“文件格式错误,无法打开”,为什么?ADO Lib用的是2.7版
程序如下:
Dim rstDrawingLib As ADODB.Recordset'rstDrawingLib指向sqlserver数据库,肯定无问题
Dim mstream As ADODB.Stream Set mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.Write rstDrawingLib.Fields("Drawing").Value
mstream.SaveToFile App.Path + "c:\Temp.DWG", adSaveCreateOverWrite
每次产生的c:\Temp.DWG文件autocad都无法打开,说文件格式错误为什么?谢谢!
程序如下:
Dim rstDrawingLib As ADODB.Recordset'rstDrawingLib指向sqlserver数据库,肯定无问题
Dim mstream As ADODB.Stream Set mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.Write rstDrawingLib.Fields("Drawing").Value
mstream.SaveToFile App.Path + "c:\Temp.DWG", adSaveCreateOverWrite
每次产生的c:\Temp.DWG文件autocad都无法打开,说文件格式错误为什么?谢谢!
完整的代码如下:如果是用SQL那么保存文件的字段类型应该是Binary。如果是用Access,那么保存文件的字段应该用OLE对象,在表中显示为长二进制数据。
'将任何文件从数据库中下载到本地:
Public Function LoadFile(ByVal col As ADODB.Field, ByVal FileName As String) As Boolean '获得binary数据
On Error GoTo myerr:
Dim arrBytes() As Byte
Dim FreeFileNumber As Integer
lngsize = col.ActualSize
arrBytes = col.GetChunk(lngsize)
FreeFileNumber = FreeFile
Open FileName For Binary Access Write As #FreeFileNumber
Put #FreeFileNumber, , arrBytes
Close #FreeFileNumber
LoadFile = True
myerr:
If Err.Number <> 0 Then
LoadFile = False
Err.Clear
End If
End Function
'将文件从本地上传到数据库中
Public Function UpLoadFile(ByVal FileName, ByVal col As ADODB.Field) As Boolean
On Error GoTo myerr:
Dim arrBytes() As Byte
Dim FreeFileNumber As Integer
FreeFileNumber = FreeFile
Open FileName For Binary As #FreeFileNumber
n = LOF(FreeFileNumber)
ReDim arrBytes(1 To n) As Byte
Get #FreeFileNumber, , arrBytes
Close #FreeFileNumber
col.AppendChunk (arrBytes)
UpLoadFile = True
myerr:
If Err.Number <> 0 Then
UpLoadFile = False
Err.Clear
End If
End Function