Top.Mail.Ru
Ответы

Вопрос по MS Access 2016

Весь вечер голову ломаю с макрокомандами и запросами, никак не могу понять как сделать это.

В общем, у меня есть в БД таблица НДС,в которой ключевое поле data_stavka (Дата ставка) с типом данных Дата время, и само поле stavka(Ставка) которое у меня числовое процентное. Там для определенной даты привязана определенная ставка.
Так же у меня есть таблица Покупка, где есть поле stavka(ставка).
Через запрос я сделал чтоб показывался процент НДС на сегодняшний день (т.е самая последняя запись в таблице НДС), и теперь нужно чтобы собственно процент на сегодняшний день (самая последняя запись) САМ,автоматически подставлялся в поле stavka таблицы Покупка,когда рандомный пользователь начнет вводить там данные. Чтоб пользователь вообще не выбирал значение НДС , и список ему даже не показывался.

Думаю сделать через макрокоманду,но не знаю как её прописать чтобы она брала значение из запроса самое последнее, и вставляло в поле stavka в Покупка.
Если понимаете макрокоманды,либо знаете как это сделать адекватно,прошу, помогите.

По дате
По Рейтингу
Аватар пользователя
Просветленный

Для автоматического заполнения поля stavka в таблице Покупка с использованием макрокоманды в MS Access 2016, вы можете воспользоваться следующим подходом:

Создайте макрокоманду:
Откройте вашу базу данных в MS Access.
Перейдите на вкладку “Создание”.
В группе “Макросы и код” нажмите кнопку “Макрос”.
Создайте новую макрокоманду.
Добавьте действие, которое будет заполнять поле stavka в таблице Покупка.
Используйте VBA (Visual Basic for Applications):
Вместо макрокоманды вы можете написать код на VBA для автоматического заполнения поля stavka.
В форме таблицы Покупка создайте событие “После обновления” для поля name.
В этом событии используйте функции DLookup для получения значения из таблицы НДС.
Пример кода:

123456789101112131415
 Private Sub name_AfterUpdate() 
    Dim lCount As Long 
    Dim sVal As String 
 
    If IsNull(Me!Name) Then Exit Sub 
 
    sVal = "name = '" & Me!Name & "'" 
    lCount = DCount("*", "genus", "name = '" & Me!Name & "'") 
 
    If lCount > 0 Then 
        Me![ID] = DLookup("id", "genus", sVal) 
        Me!parentname = DLookup("parentname", "genus", sVal) 
    End If 
End Sub 
 

Этот код будет проверять, есть ли в таблице genus запись с указанным именем, и если есть, то автоматически заполнит поля ID и parentname в таблице Покупка.
Установите связи между таблицами:
Убедитесь, что у вас есть связи между таблицами НДС и Покупка.
Это позволит автоматически заполнять поля на основе значений из другой таблицы.