首页 > 解决方案 > 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

标签: vbams-access

解决方案


您将需要使用表的 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

推荐阅读