vba - MS Access:如何将查询中的数据加载到表单中
问题描述
我有一个表单可以帮助用户将一些数据添加到数据库中,但是我注意到添加的每个产品上的一些字段非常相似。因此,我添加了第二个常用字段数据库,可以通过从组合框中进行选择来预填充这些字段。
例如,如果用户正在添加产品 XX-X,但产品 XX-X 属于 YY-Y 的同一系列,并且我在 Database2 中已经有 YY-Y 的数据,我只想加载这些参数。我做了一个查询,可以根据需要返回参数,但是我不知道如何将其添加到 FORM 中。
基本上我有一个用于“ComboBox_Change”的空白 VBA 代码槽。
我希望 ComboBox_Change 函数从查询中加载字段 X 并将其粘贴到当前表单上的字段 X1 中。希望我正确地解释自己。
谢谢!
感谢您的建议,这是迄今为止有错误的代码
Private Sub LoadMatCB_Change()
Dim rs As Recordset
Dim db As Database
Set db = CurrentDb
Set rs = CurrentDb.OpenRecordset("VendorDeetsQuery")
If Nz(Me.Input_Vendor.Value, "") = "" Then Me.Input_Vendor.Value = rs![Origin]
Set rs = Nothing
Set db = Nothing
End Sub
解决方案
您将需要使用表的 ID 字段将查询中的相关记录抓取到记录集对象中。然后,您可以使用记录集的字段在要填充的每个其他字段中设置值;如果这是您需要的条件,您可以添加 if 语句来检查控件是否为空白。
Dim rs As Recordset
Dim db as Database
Dim qry as QueryDef
Set db = CurrentDb
Set qry = db.QueryDefs("YourQueryName")
qry.Parameters("ParamName") = comboBox.Value '<pass your parameter here>
'repeat the above for any other parameters you need to pass
Set rs = qry.OpenRecordset
'for each of these, use your control names and whatever you named the fields from your query'
If Nz(Me.txtBox1.Value, "") = "" Then Me.txtBox1 = rs![fieldName1]
If Nz(Me.txtBox2.Value, "") = "" Then Me.txtBox2 = rs![fieldName2]
...
...
If Nz(Me.txtBoxN.Value, "") = "" Then Me.txtBoxN = rs![fieldNameN]
Set rs = Nothing
Set qry = Nothing
Set db = Nothing
推荐阅读
- javascript - 如何从具有匿名函数的 div 中删除事件侦听器
- python-3.x - 如何在python中多拆分列
- spring - 我无法在 Jpa 单元测试中从 H2 获取我的数据
- node.js - `Extensions` 字段未显示在 apollo graphql 响应数据中
- python - 尽管训练是 100%,但无法提高验证准确度以及如何将从视频中提取的图像提供给深度学习模型
- datepicker - 在 datePicker 中禁用手动输入日期
- javascript - 我应该避免使用 px 使 react-app 移动友好吗?
- php - 我需要向我的动态数据表添加超链接
- laravel - 如何在 laravel 中更新一行的多维数组
- android - 谷歌播放控制台不支持少于 26 个 Targetsdkversion?