如何Image控件绑定Access2000数据库中的图片?Access97的可以绑定,但是2000的就不行了(用ADODC)
解决方案 »
- 跪求如何使用FindFirstFile和FindNextFile查找某个目录下的所有图片(包括子目录)的VB代码?
- 各位大哥怎样将汉字转化成16进制,谢谢各位
- 我刚入来,我只有120分,现我给100分求解一问题(excel)
- 关于Timer控件的问题
- vb 对AutoCAD的二次开发,怎样添加图层,设置线型 线宽?
- 如何在datagird上显示几个字段的数据,急,希望大家帮忙!
- 怎样对多人进行修改的文件进行修改痕迹保存
- 在线等待:backspace键的keycode 是多少?
- 字符串的高级技巧
- Delphi函数定义转为VB
- 我如何知道一个treeview树最深有几层?
- 在点击TreeView控件某节点时如何判断该节点位于第几级目录?
用绑定的方法我没有试过.给你一段代码试试看:'/以流放问数据库中的二进制字段时的读/写标志
Public Enum SmRsType
RsWrite = 1
RsRead = 2
End Enum
'
'读写二进制数据(流)
'函数名:AdoStream
'参数: M_Conn ADODB连接,TabName 目标数据表,FldName 目标字段,WhereStr 更新条件,
' FileName 源文件名或由流生成的文件名,RsStyle 记录集的操作类型.W:File to Recode,R:Recode to File
'返回值:
'例: CALL AdoStream(P_Cnn,"AchGoods","GdsPhoto","Where gdsid='001'","C:\Tmp.Bmp","W")Public Function AdoStream(M_Conn As ADODB.Connection, _
TabName As String, _
FldName As String, _
Optional WhereStr As String = "", _
Optional Filename As String, _
Optional RsStyle As SmRsType = RsWrite) As String
Dim StrSql As String
Dim TmpFileName As String
Dim Rs As New ADODB.Recordset
Dim AdoSem As New ADODB.Stream
Dim ReturnVal As String
Dim WorkPath As String
Dim RsType As Long
Dim RsStyleStr As String
On Error Resume Next
WorkPath = App.Path
If Right$(WorkPath, 1) <> "\" Then WorkPath = WorkPath & "\"
ReturnVal = ""
AdoSem.Type = adTypeBinary '流数据类型
AdoSem.Open '打开流
'/-----------------------------------------------------------
'将流写入记录集
RsType = RsStyle
RsStyleStr = Choose(RsType, "W", "R")
If RsStyleStr = "W" Then
If Left$(Trim$(UCase$(WhereStr)), Len("where")) <> UCase$("where") Then WhereStr = " Where " & Trim$(WhereStr)
StrSql = "Select Top 1 [" & TabName & "].[" & FldName & "] From [" & TabName & "] " & WhereStr
Set Rs = RsOpen(M_Conn, StrSql, False) '连接式记录集
If Not (Rs.EOF And Rs.BOF) Then
Rs.MoveFirst
AdoSem.LoadFromFile Filename '将文件LOAD到流
DoEvents
Rs.Fields(FldName).AppendChunk AdoSem.Read
Rs.Update
End If
AdoStream = ""
ElseIf RsStyle = "R" Then
'/将流从记录集中取出
If Len(Trim$(Filename)) = 0 Then Filename = "TmpFile.Bmp"
If Len(Trim$(Dir$(TmpFileName, vbNormal + vbHidden))) > 0 Then Kill Filename
If Left$(Trim$(UCase$(WhereStr)), Len("where")) <> UCase$("where") Then WhereStr = " Where " & Trim$(WhereStr)
StrSql = "Select Top 1 [" & TabName & "].[" & FldName & "] From [" & TabName & "] " & WhereStr
Set Rs = RsOpen(M_Conn, StrSql)
If Not (Rs.EOF And Rs.BOF) Then
Rs.MoveFirst
If Not (IsNull(Rs.Fields(FldName))) Then
TmpFileName = WorkPath & Filename
AdoSem.Write Rs.Fields(FldName).GetChunk(Rs.Fields(FldName).ActualSize)
DoEvents
AdoSem.SaveToFile TmpFileName, IIf(Len(Trim$(Dir$(TmpFileName, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
AdoStream = TmpFileName
Else
AdoStream = ""
End If
Else
AdoStream = ""
End If
End If
AdoSem.Close: Set AdoSem = Nothing
Rs.Close: Set Rs = Nothing
Err.Clear
End Function