обновить основную таблицу из двух других с изменением данных перед обновлением - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть две таблицы, которые мне нужно обновить. Я должен просмотреть каждую запись в одной таблице, затем внести некоторые изменения в данные, а затем загрузить измененные данные в другую таблицу!

В двух таблицах содержится 3000 записей и 11 000 записей. Плюс я тоже должен проверить некоторую информацию из третьей таблицы с около 50 записей!

Dim id
Dim fly_SQL
id="user1"
Dim rsc1_conn As ADODB.Connection

Set rsc1_conn = CreateObject("ADODB.Connection")
rsc1_conn.Provider = "SQLOLEDB"
rsc1_conn.ConnectionString = "SERVER=companyserver;UID=" & id & 
";Trusted_Connection=Yes;DATABASE=DATAbank" '
rsc1_conn.Open

Set rsc1 = CurrentDb.OpenRecordset("SELECT * FROM main_database", 
dbOpenDynaset, dbSeeChanges)
rsc1.movefirst
do until rsc1.EOF 

    fly_SQL = "Select * from alt_db where alt_db.number = main.net_number" 

    Set rsc2 = CurrentDb.OpenRecordset(fly_SQL)

    do stuff 

    code = dlookup( "type_def", "third_rec" , alt_db.activity = activity) 

Обе таблицы используют net_number в качестве ссылки, которая на главном является уникальным первичным ключом, но alt_db имеет несколько записей.

Таким образом, в основном я должен пройтись по каждому net_number на основном, посмотреть на соответствующий net_number на alt_db , а затем сравнить активность поле с третьей таблицей, чтобы увидеть, какое поле я обновляю на главной! Если это расходы на управление проектом, я положил их в main.PM_cost. net_number в alt_db может повториться для 10 других расходов, которые необходимо направить в соответствующие категории расходов в основной БД! Как пример:

Основной стол выглядит как

net_number  

первая запись показывает

main.netnumber = 123456 
main.cont_cost
main.PM_cost
main.mgmt_cost

Таблица alt_db выглядит как

alt_db.net_number
alt_db.activity
alt_db.PM_cost
alt_db.const_cost
alt_db.mgmt_cost 

third_rec выглядит как

third_rec.code
third_type

где данные могут быть чем-то вроде con1, sabb,

code     type
sauf     construction
con1     management
I130     project management

И необходимые правила:

  • проверка alt_db.activity с third_rec.act и возврат activity тип

  • Если вид деятельности строительный, тогда я помещаю alt_db.cost в main.const_cost

  • Если тип деятельности project_mgmt , тогда я помещаю alt_db.cost в main.PM_cost. Alt_db.activity может быть con1 или SAF4, а тип определяется таблицей third_rec .

Попытка выяснить лучший (самый эффективный способ) сделать это.

Есть предложения?

В приведенном выше коде, безусловно, будут отсутствовать правильные определения переменных и тому подобное, но это просто для объяснения моей дилеммы!

Возможно, я мог бы сделать это с DLookup, но я не думаю, что это было бы очень эффективно!

Пит

1 Ответ

0 голосов
/ 03 ноября 2018

Лучшим способом было создать запрос, который выдает файл, отфильтрованный из данных Main и alt_db, чтобы сгруппировать действия по net_number. Затем используйте регистр, чтобы определить, какие поля из alt_db нужно обновить, используя третий файл, и обновите результат в соответствующих полях главной базы данных.

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