'将图片保存到数据库 '******************将图片文件保存到数据库中************************* '需要添加commondialog控件 Sub savePicToDB(CN As ADODB.Connection) Dim stm As ADODB.Stream Set stm = New ADODB.Stream Set rs1 = New ADODB.Recordset rs1.Open "select * from tablename", cn1, adOpenKeyset, adLockOptimistic With stm .Type = adTypeBinary .Open .LoadFromFile dlg.FileName End With With rs1 .AddNew .Fields("tp") = stm.Read .Update End With rs1.Close Set rs1 = Nothing End Sub
'将图片或者文件从数据库中读出 '需要添加一个listview Sub GetPicFromDB(CN As ADODB.Connection) On Error Resume Next Dim fld As Field Dim strTemp As String Dim stm As ADODB.Stream Set stm = New ADODB.Stream 'strTemp = "c:\temp.bmp" Set rs1 = New ADODB.Recordset rs1.Open "select * from rs_http where htbh='" & frm_manage.Grid2.TextMatrix(frm_manage.Grid2.RowSel, 0) & "'", CN, , , adCmdText While Not rs1.EOF '*********将数据库中的文件读到硬盘上************************* ' strTemp = App.Path + "\temp\" + rs1!Name '`临时文件,用来保存读出的图片 With stm .Type = adTypeBinary .Open .Write rs1("tp").value strTemp = App.Path & "\temp1\" & rs1!Name .SaveToFile strTemp, adSaveCreateOverWrite .Close End With Set itemX = lvwPic.ListItems.Add(, App.Path & "\temp1\" & rs1!Name, rs1!Name, 1, 1) itemX.SubItems(1) = rs1!bz rs1.MoveNext Wend Set stm = Nothing rs1.Close Set rs1 = Nothing End Sub
'将图片文件存入Ado -image字段 Public Sub SavePictureToAdodc(rs As ADODB.Recordset, ByVal filename As String, FieldName As String) Dim Length As Long, f As Integer '''''''''''''''' Dim pid As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数 p = "c:\arj a c:\" + FieldName + ".arj " + filename + " -y"pid = Shell(p, vbHide) ' Shell 传回 Process Id
pHnd = OpenProcess(SYNCHRONIZE, 0, pid) ' 取得 Process Handle If pHnd <> 0 Then Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束 Call CloseHandle(pHnd) End If '''''''''''''''''' If pid = 0 Then MsgBox "Arj.exe未发现,请将该文件拷贝至c:\", vbCritical, "提示 " Exit Sub End If Length = FileLen("c:\" + FieldName + ".arj") ReDim barray(Length) As Byte f = FreeFile Open "c:\" + FieldName + ".arj" For Binary As #f Get #f, , barray Close #1
rs(FieldName).Value = barray
End Sub '将image调入图片文件 Public Sub LoadPictureFromAdodc(rs As ADODB.Recordset, FieldName As String, Pict As Image, filename As String) Dim Length As Long, f As Integer Length = Len(rs(FieldName).Value) f = FreeFile barray = rs(FieldName).Value Open "c:\" + FieldName + ".arj" For Binary As #f Put #f, , barray Close #1
''''''''''''''''Dim pid As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数 p = "c:\arj e c:\" + FieldName + ".arj c:\" + " -y" pid = Shell(p, vbHide) ' Shell 传回 Process IdpHnd = OpenProcess(SYNCHRONIZE, 0, pid) ' 取得 Process Handle If pHnd <> 0 Then Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束 Call CloseHandle(pHnd) End If '''''''''''''''''' If pid = 0 Then MsgBox "Arj.exe未发现,请将该文件拷贝至c:\", vbCritical, "提示 " Exit Sub End IfOn Error GoTo er1 Pict.Picture = LoadPicture(filename) GoTo ok er1: 'MsgBox "调入 " + FieldName + " 失败!" + Chr(13) + Chr(13) + err.Description, vbCritical, "调入图片" ok: End Sub 方法旧了点(99年用过),希能有点帮助
使用picture
也可以只保存路径,使用的时候loadpic
'******************将图片文件保存到数据库中*************************
'需要添加commondialog控件
Sub savePicToDB(CN As ADODB.Connection)
Dim stm As ADODB.Stream
Set stm = New ADODB.Stream
Set rs1 = New ADODB.Recordset
rs1.Open "select * from tablename", cn1, adOpenKeyset, adLockOptimistic
With stm
.Type = adTypeBinary
.Open
.LoadFromFile dlg.FileName
End With
With rs1
.AddNew
.Fields("tp") = stm.Read
.Update
End With
rs1.Close
Set rs1 = Nothing
End Sub
'需要添加一个listview
Sub GetPicFromDB(CN As ADODB.Connection)
On Error Resume Next
Dim fld As Field
Dim strTemp As String
Dim stm As ADODB.Stream
Set stm = New ADODB.Stream
'strTemp = "c:\temp.bmp"
Set rs1 = New ADODB.Recordset
rs1.Open "select * from rs_http where htbh='" & frm_manage.Grid2.TextMatrix(frm_manage.Grid2.RowSel, 0) & "'", CN, , , adCmdText
While Not rs1.EOF
'*********将数据库中的文件读到硬盘上*************************
' strTemp = App.Path + "\temp\" + rs1!Name '`临时文件,用来保存读出的图片 With stm
.Type = adTypeBinary
.Open
.Write rs1("tp").value
strTemp = App.Path & "\temp1\" & rs1!Name
.SaveToFile strTemp, adSaveCreateOverWrite
.Close
End With
Set itemX = lvwPic.ListItems.Add(, App.Path & "\temp1\" & rs1!Name, rs1!Name, 1, 1)
itemX.SubItems(1) = rs1!bz
rs1.MoveNext
Wend
Set stm = Nothing
rs1.Close
Set rs1 = Nothing
End Sub
在数据库中存储图片路径,在填充到excel的worksheet中进行打印
excel对象参考可以在office2000帮助文档中查找
http://www.uepoch.com
众合打表,完美支持数据类表格、不规则表格、嵌套表格、票据套打等
在c/s下与在b/s下效果完全一致
首创web打印在服务端运行组件,客户端得到的是纯html页面,而打印显示效果与c/s下完全一致,包括斜线之类的特殊效果对于图片,支持一般的二进制格式、Access中的OLE对象格式、文件格式
Public Sub SavePictureToAdodc(rs As ADODB.Recordset, ByVal filename As String, FieldName As String)
Dim Length As Long, f As Integer
''''''''''''''''
Dim pid As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数
p = "c:\arj a c:\" + FieldName + ".arj " + filename + " -y"pid = Shell(p, vbHide) ' Shell 传回 Process Id
pHnd = OpenProcess(SYNCHRONIZE, 0, pid) ' 取得 Process Handle
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束
Call CloseHandle(pHnd)
End If
''''''''''''''''''
If pid = 0 Then
MsgBox "Arj.exe未发现,请将该文件拷贝至c:\", vbCritical, "提示 "
Exit Sub
End If
Length = FileLen("c:\" + FieldName + ".arj")
ReDim barray(Length) As Byte f = FreeFile
Open "c:\" + FieldName + ".arj" For Binary As #f
Get #f, , barray
Close #1
rs(FieldName).Value = barray
End Sub
'将image调入图片文件
Public Sub LoadPictureFromAdodc(rs As ADODB.Recordset, FieldName As String, Pict As Image, filename As String)
Dim Length As Long, f As Integer
Length = Len(rs(FieldName).Value)
f = FreeFile
barray = rs(FieldName).Value
Open "c:\" + FieldName + ".arj" For Binary As #f
Put #f, , barray
Close #1
''''''''''''''''Dim pid As Long, pHnd As Long ' 分别声明 Process Id 及 Process Handle 变数
p = "c:\arj e c:\" + FieldName + ".arj c:\" + " -y"
pid = Shell(p, vbHide) ' Shell 传回 Process IdpHnd = OpenProcess(SYNCHRONIZE, 0, pid) ' 取得 Process Handle
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE) ' 无限等待,直到程序结束
Call CloseHandle(pHnd)
End If
''''''''''''''''''
If pid = 0 Then
MsgBox "Arj.exe未发现,请将该文件拷贝至c:\", vbCritical, "提示 "
Exit Sub
End IfOn Error GoTo er1
Pict.Picture = LoadPicture(filename)
GoTo ok
er1:
'MsgBox "调入 " + FieldName + " 失败!" + Chr(13) + Chr(13) + err.Description, vbCritical, "调入图片"
ok:
End Sub
方法旧了点(99年用过),希能有点帮助
要打印的时候下载到机器。