MS Access: как загрузить данные из запроса в форму - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть форма, которая помогает пользователю добавлять некоторые данные в базу данных, однако я заметил, что некоторые поля в каждом добавленном продукте очень похожи. Поэтому я добавляю вторую базу данных часто используемых полей, которые можно предварительно заполнить, выбрав в поле со списком.
Например, если пользователь добавляет продукт XX-X, но продукт XX-X относится к тому же семейству YY-Y, и у меня уже есть данные YY-Y в базе данных 2, я хочу просто загрузить эти параметры. Я сделал запрос, который возвращает параметры, как я хочу, однако я не знаю, как добавить это в форму.
В основном у меня есть пустой слот кода 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 голосов
/ 07 ноября 2018

Вам нужно будет использовать поле идентификатора таблицы, чтобы захватить связанную запись из вашего запроса в объект набора записей. Затем вы можете использовать поля набора записей, чтобы установить значение в каждом из других полей, которые вы хотите заполнить; Вы можете добавить операторы 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...