2015-03-25 1 views
2

В моем Access datebase У меня есть две таблицы:Access - сравнить две таблицы и обновления или вставки данных в первой таблице

Table1:

PersNum Name Surname 
    2321 Lenora Springer 
    2320 Donya Gugino 
    3326 Leland Wittmer 
    4588 Elmer Mcdill 

Table2:

PersNum Name Surname 
    2321 Lenora Farney 
    2320 Donya Willimas 
    3326 Leland Wittmer 
    4588 Maya Mcdill 
    7785 Yolanda Southall 
    1477 Hailey Pinner 

мне нужно найти способ проверить персональный номер (поле «PersNum»), а затем, если PersNum существует, обновите имя и фамилию в таблице 1. Если PersNum не существует, вставьте новую строку в таблицу1.

Ожидаемые результаты:

PersNum Name Surname 
    2321 Lenora Farney  (updated surname) 
    2320 Donya Willimas (updated surname) 
    3326 Leland Wittmer  (without change) 
    4588 Maya Mcdill  (without change) 
    7785 Yolanda Southall (new person) 
    1477 Hailey Pinner  (new person) 

Я ищу каких-либо решений, основанных на SQL/VBA/DAO/ADO.

ответ

1

Один из вариантов - это «upsert» или комбинированный запрос добавления/обновления.

Этот старый наконечник от Smart Access является одним из моих любимых:

Update и добавления записей вы знаете, что вы можете использовать запрос на обновление с одним запросом

Алан Биггс

сделал в доступе к обновить и добавить записи одновременно? Это полезно, если у вас есть две версии таблицы, tblOld и tblNew, и вы хотите интегрировать изменения с tblNew на tblOld.

Выполните следующие действия:

  1. Создать запрос на обновление и добавить две таблицы. Присоединитесь к двум таблицам, перетащив ключевое поле tblNew в соответствующее поле tblOld.

  2. Дважды щелкните ссылку и выберите параметр соединения, который включает все записи из tblNew и только те, которые соответствуют tblOld.

  3. Выделить все поля от tblOld и перетащить их на сетку QBE.

  4. Для каждого поля в типе Update To в tblNew.FieldName, где FieldName соответствует имени поля tblOld.

  5. Выберите «Свойства запроса» в меню «Вид» и измените «Уникальные записи» на «Неверно». (Это отключает опцию DISTINCTROW в представлении SQL . Если вы оставите это, вы получите только одну пустую запись в своих результатах, но вы хотите, чтобы одна пустая запись для каждой новой записи была добавлена ​​ на tblOld.)

  6. Запустите запрос, и вы увидите, что изменения в tblNew теперь находятся в tblOld.

    Это добавит только записи в tblOld, которые были добавлены в tblNew. Записи в tblOld, которых нет в tblNew, по-прежнему останутся в tblOld.

+0

Отлично работает! Густав, большое спасибо за вашу помощь! – Zygmunt

 Смежные вопросы

  • Нет связанных вопросов^_^