Я пытаюсь обновить сквозной запрос, используя MS Access, на сервер ODBC, над которым я не контролирую. Причина, по которой я должен использовать сквозную передачу, заключается в том, что записи, к которым я обращаюсь, имеют более 255 полей (если бы я мог, я бы использовал связанную таблицу).
Я использовал этот ресурс для получения данных с помощью Passthrough (http://www.techonthenet.com/access/tutorials/passthrough/basics09.php)
Запрос простой: SELECT FullName, PointNumber FROM DNP3.CDNP3AnalogIn
ODBC Connect Str: ODBC;DSN=SCX6_DB;LOCATION=Main;UID=admin;PWD=password;LOCALTIME=False;
Теперь внутри базы данных Access у меня есть таблица (теги SCADA DB) с тем же именем для полей (FullName, PointNumber), и я хочу обновить поля внутри базы данных ODBC с помощью запроса на обновление, но я не уверен, как это сделать. это.
Я сохранил предыдущий запрос как запрос DNP3_CDNP3AnalogIn и попытался сделать новый запрос:
UPDATE [DNP3_CDNP3AnalogIn Query] INNER JOIN [SCADA DB Tags] ON
[DNP3_CDNP3AnalogInQuery].FullName = [SCADA DB Tags].FullName
SET [DNP3_CDNP3AnalogIn Query].[PointNumber] = [SCADA DB Tags].[PointNumber];
Но получаю от Access ошибку: Operation must use an updateable query.
Я знаю, что есть способ сделать это, но я не могу найти пример (возможно, я не ищу правильную фразу). Страница Microsoft (http://technet.microsoft.com/en-us/library/bb188204%28v=sql.90%29.aspx) говорит: There is, however, one important limitation: the results returned by SQL pass-through queries are always read-only. If you want to enable users to perform updates based on the data retrieved, you must write code to handle this.
К сожалению, это не дает примера для этого!
Может ли кто-нибудь дать мне решение, я могу использовать VBA, если это необходимо? Я также могу дать больше информации, если это необходимо. К сожалению, я не эксперт в Access, я просто пытаюсь придумать автоматизированное решение, которое могло бы сэкономить мне время.