Dmitri Shumeyev
Junior Member / Новичок
Участник № / Member № 664
отправлено / posted
Есть необходимость переодически обновлять каналы из внешней программы. Раньше это делалось через ODBC и ADO+Delphi. Сейчас нужно вместо Delphi использовать Visual C 6.0. Написал код (см. ниже) все отлично: компилируется, выполняется и никаких сообщений об ошибках. Только вот в каналы ничего не записывает :-(
pCon->Open("DSN=TML_A;", "", "",adConnectUnspecified); pCmd->PutRefActiveConnection(pCon); pCmd->CommandText="UPDATE ARCHIVE SET VALUE='312' WHERE CHAN_ID=0 AND ATTR_ID=0"; pCmd->Execute(NULL,NULL,adCmdText);
отправлено / posted
Индекс атрибута (ATTR_ID) №0 - это Реальное значение канала, а Вам нужно записывать в его Вход - это индекс №2.
Сообщения / Posts 17353 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Dmitri Shumeyev
Junior Member / Новичок
Участник № / Member № 664
отправлено / posted
С тех пор, как это самый запрос в других программах (MS Query, Delphi) выполняется без проблем, то смена значения атрибута канала едва ли что-то изменит. Но все же попробовал. Не помогло. :-(
Сообщения / Posts 6 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Обработка SQL-запросов ODBC-драйвером не зависит от среды их формирования. Скорее всего, дело во взаимодействии ADO с VB. У нас нет практики работы с ADO, однако:
1) первое, что странно - параметр - adConnectUnspecified - мы не нашли его в документации по ADO;
2) по умолчанию Open (ADO) Opens a cursor (read-only by default). Syntax recordset.Open Source, ActiveConnection, CursorType, LockType, Options
открывает read-only курсор - может быть, поэтому не удается изменять данные;
3) вообще, наверное имеет смысл проанализировать, что возвращает каждая из функций Open, Execute; также можно попробовать коннектиться не к уже имеющемуся соединению PutRefActiveConnection - а создать новое, сразу на open.
Сообщения / Posts 17353 | Из / From: Россия
| IP / IP: IP адрес / IP address |