Я пытаюсь перестроить некоторую логику запроса на обновление MS Access с помощью кода VBA, поскольку в логике обновления отсутствует несколько аргументов.
Ссылка на диск Google
В моей базе данных "Распределение счета-фактуры" есть 3 таблицы:
- Account_Mapping
- Load_ID
- Status_ID.
Учетная запись счета по умолчанию в таблицах (Load_ID
и Status_ID
) обновляется учетной записью счета из таблицы Account_Mapping.
Первичным ключом является «ID», поскольку он существует в таблицах - Load_ID и Status_ID.К таблицам Account_Mapping и Load_ID могут быть присоединены:
Страна происхождения и Страна происхождения,
Страна происхождения Почтовый индекс и почтовый индекс,
Страна назначения и Место назначения, и
Почтовый код и Почтовый код назначения.
В таблице account_mapping есть несколько «isnotnull», это означает, что строковое значение может принимать все что угодно.
Использование запроса на обновление для этого обновления не является надежным.В идеале должен быть выполнен цикл, чтобы сначала проверить страну происхождения, а затем найти совпадения на основе почтового индекса происхождения, страны назначения и почтового индекса.
UPDATE
([Load_ID]
INNER JOIN
Account_Mapping
ON ([Load_ID].Origin country = Account_Mapping.[Origin country]) AND
([Load_ID].Destination = Account_Mapping.[destination country]) AND
([Load_ID].Origin country = Account_Mapping.[Origin country]))
INNER JOIN
Status_ID
ON [Load_ID].ID = Status_ID.[ID]
SET
[Load_ID].Default Invoice Account = [Invoice Account],
Status_ID.[ID] = [Invoice Account]
WHERE
((([Load_ID].Origin country)=));
В идеале цикл «для»
'A loop that iterates 4 columns looking for a match based on 4 matches.
'Also, incase of "isnotnull", it simply means ""not empty.
Dim db as Database
Dim rs as Recordsset
Set db = CurrentDb
Set rs = db.OpenRecordset("tblestudents",dbOpenSnapshot)
my_rs.MoveLast
lastrecord = my_rs.RecordCount
For i = 0 To rs.RecordCount
For j = 0 To rs.RecordCount
For k = 0 To rs.RecordCount
'if the [Load_ID].Origin country = Account_Mapping.[Origin country]
'And
' if the [Load_ID].Origin Postal code = Account_Mapping.[Postal code]
' And
' if the [Load_ID].Destination country =
'Account_Mapping.[Destination]
' And
'if the [Load_ID]. Destination Postal code=
'Account_Mapping.[Destination Postal code]
'update [Load_ID].Default Invoice Account with Account_Mapping.Invoice 'Account
'for the "isnotnull" criteria,
' Else
'If Account_Mapping.[Origin Postal code] = "Isnotnull"
' Or
'if the Account_Mapping. Destination= "Isnotnull"
' Or
'if the Account_Mapping. Destination Postal code= "Isnotnull"
'update [Load_ID].Default Invoice Account with Account_Mapping.Invoice 'Account
' rs.MoveNext
Next k
Next j
Next i
rs.Close
Set.Close
Set rs = Nothing
db.Close
Как выполнить цикл по 3 таблицам, сопоставить условие и обновить значения столбцов таблицы.Большое спасибо за помощь.