Необходимо создать копию записи в той же таблице доступа, а затем обновить данные - PullRequest
0 голосов
/ 21 апреля 2020

Я использую базу данных Access 2016, которая не будет больше, чем 20000 записей. Я обновил таблицу инвентаризации полями с несколькими вариантами выбора, которые требуются для управления инвентаризацией, и все работает нормально с точки зрения добавления новых записей и обновления существующих записей с использованием макросов добавления и обновления в формах таблиц.

Теперь Я хочу иметь возможность создать копию существующей записи, выполнить обновление, а затем сохранить ее в той же таблице инвентаризации, чтобы у меня были исторические данные об обновленных деталях, а затем обновить форму, чтобы показать только последнюю запись

Я очень новичок в доступе и кодировании, поэтому я уверен, что нарушаю какое-то правило моделирования и попробовал следующее, чтобы заставить его работать безуспешно:

*** Создание обновленной записи в той же таблице * создать запрос на добавление, но доступ не поддерживает поля выбора muilti * создать макрос для копирования и вставки существующей записи, чтобы обновить и вставить новую версию записи в таблицу инвентаризации (кажется, что Копировать и Вставить не поддерживаются в Макрос) * создать VBA, которая создает копию существующего ecord, я могу получить это для создания копии, но это работает только после того, как я сделал обновление записи, что означает, что у меня осталось две копии записи обновления, а не исходная и обновленная запись

* ** Отфильтруйте форму, чтобы показать только последнюю запись. * Не знаю, с чего начать!

1 Ответ

0 голосов
/ 22 апреля 2020

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

Вам может понадобиться отдельное поле первичного ключа ID, которое не является автономным номером в таблице инвентаризации. Вы копируете данные из текущей записи в новую запись с полем идентификатора выше 20000, используя любой выбранный вами метод (например, кнопку на форме).

recid = DMax("ID", "tblInventory") + 1
If recid < 20001 then
    recid=20001
End if
mySQL = "INSERT INTO tblInventory (recid, field2, etc.) VALUES (" & recid & ", '" & _
        txtField1.Value & "','" & txtField2.Value & "," & etc.
CurrentDB.Execute mySQL

, а затем редактируете существующую запись с помощью новые данные.

Когда ваша форма загружает запрос, он основан на поиске записей только ниже 20000

У вас есть устаревшие данные, которые вы можете запросить отдельно, и новые данные, которые будут видны только в твоей форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...