Это включает в себя две таблицы в нашей Access 2007.Обновить таблицу базы на другой таблицы
«Станция Master» таблица состоит из записей рабочих станций
«Move-Add-Change» таблицы состоят из записей для перемещения, добавления, изменения шагов для специфики Идентификатор проекта.
Я создал запрос, чтобы вытащить все записи из «Move-Add-Change», которые соответствуют идентификатору проекта . Тогда мне нужно будет обработать следующим образом:
пройти через каждую строку в "Pull MAC Records by Project # Qry"
запросе (есть Sequence поле нумерация от 1 подсчитывая там тоже)
Если поле Действие в строке Move :
Если «для Loc» той же строки не начинается с TSS (используется для инвентаризации Loc), обновление записей в «станция Master» с Loc Имя, равной «От Loc» поле той же строке в
"Pull MAC Records by Project # Qry"
запросе, изменить его значение к Чтобы Loc поле той же строке в"Pull MAC Records by Project # Qry"
запросеЕсли «К Loc» той же строки, начиная с TSS, удалите записи в «Мастер станции», который имеет имя локации, соответствующее «From Loc» той же строки в запросе
"Pull MAC Records by Project # Qry"
.
Если поле Действие в строке Добавить:
- Создать новую запись в "Station Master" с Loc Name является "Для Loc" поле строки
Если поле Действие в строке Изменение:
- Сделайте то же самое, как Move плюс udpate на Описание «Станция Master» используя информацию из поля Notes той же строки в
"Pull MAC Records by Project # Qry"
запросе
Код должен идти один на один ряд в "Pull MAC Records by Project # Qry"
, потому что мы могли бы переместить другую станцию в место, которое только что отошло.
Пример частичные результаты запроса:
Project Id Seq Action From Loc To Loc Notes
A123456 1 Move WFC1234 TSSRepair For OEM service
A123456 2 Move WFC9999 WFC1234 Test station
...
Если я вызываю запрос, чтобы сделать обновление, похоже, она не проходит через построчно и побудит за нарушение (я думаю, что он пытался изменить WFC9999 до WFC1234 если оригинал WFC1234 запись все еще есть, причина дубликат).
Вот SQL моего запроса:
UPDATE [Station Master], [Pull MAC Records by Project # Qry]
SET [Station Master].[Loc Name] = [Pull MAC Records by Project # Qry]![To Loc],
[Station Master].[Loc Function] = Left([Pull MAC Records by Project # Qry]![To Loc],3), [Station Master].[LoC#] = Right([Pull MAC Records by Project # Qry]![To Loc],Len([Pull MAC Records by Project # Qry]![To Loc])-3)
WHERE
((([Station Master].[Loc Name]) = [Pull MAC Records by Project # Qry]![From Loc]));
Что я сделал не так? Могу ли я иметь все эти процессы исключительно в коде VBA (что мне не нравится)?
Я попробую эту идею. Мне, вероятно, придется закодировать цикл для каждого действия, чтобы идти по строкам подряд. Это важно, потому что станция может быть перемещена в другое место, затем другая станция будет перемещена в ее прежнее пространство и займет свое прежнее имя Лока. По мере того как запрос идет, он просто вышел из строя и жалуется на дублированный индекс. Благодарю. Если я заблужусь, вернусь к большему руководству. :-) – user2490287