MS Access:如何将数据从查询加载到表单

时间:2018-11-06 21:27:07

标签: vba ms-access

我有一个表单可以帮助用户向数据库中添加一些数据,但是我注意到添加的每个产品上的一些字段非常相似。因此,我添加了第二个常用字段数据库,可以通过从组合框中选择来预填这些字段。
例如,如果用户要添加产品XX-X,但产品XX-X是YY-Y的同一系列,并且我在Database2中已经有YY-Y的数据,我只想加载这些参数。我做了一个查询,返回想要的参数,但是我不知道如何将其添加到FORM。
基本上,我有一个空白的VBA代码槽,用于“ ComboBox_Change”。
我希望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

1 个答案:

答案 0 :(得分:2)

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