Форум TRACE MODE: техническая поддержка   
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 5 » Работа в MS Windows (ODBC/DDE/OPC/NET) / Working under MS Windows » Чтение архива через ADO в DELPHI 5

   
Автор / Author Тема / Topic: Чтение архива через ADO в DELPHI 5
HI-TIGER
Junior Member / Новичок
Участник № / Member № 1045


Icon 9 отправлено / posted      Профиль для / Profile for HI-TIGER           Редактировать/удалить сообщение / Edit/Delete Post 
При попытке почитать данные запросом вида
SELECT DISTINCT ARCHIVE.CHAN_NAME, ARCHIVE.CHAN_ID, ARCHIVE.ATTR_CODE, ARCHIVE.ATTR_NAME, ARCHIVE.FLAGS, ARCHIVE.VALUE FROM ARCHIVE
прекрасно читаю все данные, получая срез по последим изменениям из архива.
Стоит только добавить в запрос поле ARCHIVE.TIME -возникает исключение [Недоумение / Confused] , либо возвращается пустой набор данных. ADO я патчил, результат тотже. При этом SQL Explorerom запрос выполняется хорошо и с ARCHIVE.TIME - это поле идентифицируется как тип TIMESTAMP (16 битное). Быть может Вам приходилось отвечать на подобный вопрос или решать подобную проблему. Ничего не стоит перейти с Dеlphi на С++, интересует сама природа проблемы.

Сообщения / Posts 6 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Причина здесь скорее всего в формате времени - дело в том, что в SQL дата и время передаются в строковом формате и нет единого стандарта по этому поводу, каждый драйвер реализует собственный синтаксис (кто во что горазд). Скорее всего при работе из Delphi - синтаксис отличается от того же SQL Explorer (даже у MS SQL и MS Access они отличаются), что и приводит либо к ситуации с фатальной ошибкой, либо к просто ошибочной выборке.
Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
HI-TIGER
Junior Member / Новичок
Участник № / Member № 1045


Icon 1 отправлено / posted      Профиль для / Profile for HI-TIGER           Редактировать/удалить сообщение / Edit/Delete Post 
С этой проблемой я частично разобрался. Запрос не выполнялся по той причине, что в архиве встречаются записи с искаженной или неправильной временной меткой в поле TIME [attention / внимание] (что именно записано в этом месте пока сказать сложно). Стоило исключить из запроса места с "битым" временем, как он стал выполняться. Есть вопросы:
1. По какой причине в архиве появляются такие записи.
2. Как правильно сформировать запрос с временным интервалом.

Сообщения / Posts 6 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 5 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
1) А как выглядят эти записи с "битыми" метками времени?
2) Для запроса интервала Вам необходимо выполнять обычный запрос без DISTINCT.

Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
HI-TIGER
Junior Member / Новичок
Участник № / Member № 1045


Icon 1 отправлено / posted      Профиль для / Profile for HI-TIGER           Редактировать/удалить сообщение / Edit/Delete Post 
Вот фрагмент выборки сделанной в MS Access из архива запросом :
SELECT DISTINCT TIME, VALUE, CHAN_ID
FROM ARCHIVE;

TIME VALUE CHAN_ID
19.07.2004 1:00:00 8,761896 385
19.07.2004 10:06:13 1006,094 386
19.07.2004 9:25:30 1042,666 387
78,09516 388
21.05.2004 11:19:26 88,38087 389
19.07.2004 10:15:13 4,21245 390
19.07.2004 1:00:00 0,5584854 391
.....................................
19.07.2004 1:00:00 46,0317 442
19.07.2004 10:26:34 44,38091 443
329,9142 444
19.07.2004 7:30:50 39,072 445
65,23071 446
19.07.2004 10:29:00 205,2306 447
19.07.2004 6:43:07 343,5894 448


Пробел или пустая ячейка в итоговой таблице, как раз и есть такое "битое" место в архиве. Собственно, ADO возвращает пустой набор данных из-за этого, то есть как только встречается в результате запроса неправильное значение соответствующее данному типу - набор данных считается неверным [А-а! / Eek!] .

Сообщения / Posts 6 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 5 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
В проекте даные каналы не по M-Link получают значения?Какой релиз ТМ?
Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
HI-TIGER
Junior Member / Новичок
Участник № / Member № 1045


Icon 1 отправлено / posted      Профиль для / Profile for HI-TIGER           Редактировать/удалить сообщение / Edit/Delete Post 
Релиз 5.11. Подтип канала КОНТР_2. Драйвер реализует прием данных от аппаратуры по TCP/IP.
Сообщения / Posts 6 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 2 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
КОНТР_2 - это посложнее будет... Дело в том, что если метка времени в канале задана вне диапазона времени (максимальное значение 0xFFFFFFF), то в СПАДЕ появляются записи с пустыми метками времени. Очень похоже на Ваш случай - может стоит в драйвере лог встроить, чтобы посмотреть какие метки у Вас по этим каналам приходят?
Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

   Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2