access vba 用recordset读取表中数据的简单方法

'strQuery是表名,查询名等
Public  Function Getrs(Byval strQuery as string)  as ADODB.Recordset
Dim objRs As New ADODB.Recordset
on Error GoTo  Error_Getrs
objRs.open  strQuery,CurrentProject.connection
'程序调试用
'Do While Not objRs.EOF
'        Debug.Print objRs(0) & vbTab & objRs(1) & vbTab & _
'                    objRs(2)
'        objRs.MoveNext
'Loop
Set  Getrs =objRs
Exit _Getrs:
Exit  Function
Error_Getrs:
MsgBox (Err.Description)
Resume Exit _Getrs
End  Function
VBA (Visual Basic for Applications) 中,如果你想要通过ADO (ActiveX Data Objects) 从数据库的 Ole 对象(通常是嵌入式 OLE 图片对象)读取图片文件,并将其显示在一个Image控件中,你可以按照以下步骤操作: 1. **引用必要的库**: 首先,确保在你的VBA模块中引用了`Microsoft ActiveX Data Objects 6.0 Library` 和 `Microsoft DAO 3.6 Object Library`。 ```vba Option Explicit Dim Connection As ADODB.Connection Dim Recordset As ADODB.Recordset Dim imgData As Byte() Dim ImageControl As MSForms.Image ``` 2. **连接到数据库**: 使用Connection对象创建一个ADODB.Connection实例,设置适当的数据库连接信息(如Provider、ConnectionString等)。 ```vba Set Connection = New ADODB.Connection Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<your_database>;Extended Properties='Excel 8.0;HDR=YES';" ``` 替换 `<your_database>` 为实际的数据库路径。 3. **查询图片数据**: 创建Recordset对象,编写SQL查询以获取包含图片数据的记录。假设你想从名为"Sheet1"的工作表中的第一行开始: ```vba Set Recordset = New ADODB.Recordset Recordset.Open "SELECT * FROM [Sheet1$A1] WHERE IsNull([Picture]) = False", Connection, adOpenStatic, adLockOptimistic ``` 4. **读取并保存图片数据**: 循环遍历Recordset读取每个图像作为二进制数据存储在imgData数组中。 ```vba Do While Not Recordset.EOF imgData = GetImageData(Recordset!Picture) '这里有一个辅助函数GetImageData()用于将OLE对象转换为二进制数据 Recordset.MoveNext Loop ``` 5. **显示图片**: 将二进制数据赋给ImageControl的Picture属性,将其显示出来。 ```vba If Not imgData Is Nothing Then Set ImageControl = Me.Controls("YourImageControlName") ImageControl.Picture = LoadPicture(Pack(imgData, , 1)) 'Pack是为了处理图像数据 End If ``` 别忘了替换 `"YourImageControlName"` 为实际的Image控件名称。 6. **清理资源**: 释放Recordset和Connection对象,关闭它们以防止内存泄漏。 ```vba Recordset.Close Connection.Close Set Recordset = Nothing Set Connection = Nothing ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值