Архив рубрики: OLEDB_Provider

Обобщающая информация и ссылки

Инструмент поставщика данных OLE DB в «КАСКАД Цифра» позволяет осуществлять доступ к историческим данным (архивные значения) посредством внешних инструментов отчетности, которые используют OLE DB в качестве интерфейса (например, Crystal Reports, MS Excel). Кроме того, могут быть запрошены алармы. Инструмент поставщика данных был реализован в двух частях: компонент EXE (менеджер «КАСКАД Цифра») и компонент DLL.

РазделСодержание
Историческая база данныхБаза данных используемая для архивирования исторических значений
SQLИспользование SQL в «КАСКАД Цифра»

Записи в конфигурационном файле

Записи для поставщика данных OLE DB находятся в разделе [oledb]. Следующие записи поддерживаются инструментом поставщика:

«Name»ТипЗначение по умолчаниюДиапазонКомментарий
maxOleDbIdleTimeint0>=0 (max. 2147483648)Время (в секундах), в течение которого поставщик данных работает без активных запросов, прежде чем он закроется. Поставщик данных продолжает работать с настройкой по умолчанию 0.
maxOleDbWaitAnswerTimeint60>=0 (max. 2147483648)Максимальное время (в секундах) ожидания поставщика данных после отправки всех запросов в ValueArchive, для получения ответов на эти запросы. Установка значения 0 означает, что поставщик данных не будет ожидать совсем (не рекомендуется). Если время истекло, ответы, которые были получены до истечения времени, переадресуются, и в журнал отправляется сообщение об ошибке.
maxOleDbArchiveConnectTimeint5>0Максимальное время (в секундах), которое поставщик данных использует для установления соединения с ValueArchive.
numint1Номер менеджера поставщика данных OLE DB.
usePvssWildCards bool10,1Указывает для SQL, должен ли использоваться синтаксис SQL (0) или синтаксис «КАСКАД Цифра» (1) для знаков подстановки.SQL : % = любые символы           _ = любой одиночный символ»КАСКАД Цифра»: * = любые символы           ? = любой одиночный символ

Записи для приоритизации запросов в архиве находятся в разделе [valarch]. Поддерживаются следующие записи:

«Name»ТипЗначение по умолчаниюДиапазонКомментарий
exclusiveReadThreadsForDMint10-3Определяет, сколько потоков обрабатывают запросы от выбранного менеджера данных.
readThreadsPreferringOleDbint10-3Определяет, сколько потоков обрабатывают запросы от выбранного OLE DB (когда DM и OLE DB делают запрос одновременно).

ПРИМЕЧАНИЕ

Сумма параметров exclusiveReadThreadsForDM и readThreadsPreferringOleDb не может быть выше трех. Если общее число потоков чтения, однако, превышает три, отображается сообщение об ошибке, но происходит запуск.

Типы данных для поставщика данных OLE DB

Преобразование

При работе с потребителем данных, который поддерживает OLE DB, типы данных «КАСКАД Цифра» преобразуются в перечисленные типы следующим образом:

«КАСКАД Цифра»Типы данных OLE DB
struct
bit32DBTYPE_UI4
boolDBTYPE_BOOL
charDBTYPE_UI1
floatDBTYPE_R8
intDBTYPE_I4
unsignedDBTYPE_I4
stringDBTYPE_BSTR
langstringDBTYPE_BSTR (CONV.)
timeDBTYPE_DATE
typeref
dpidDBTYPE_BSTR
blob
dyn_boolARRAY |DBTYPE_BOOL
dyn_intARRAY |DBTYPE_I4
dyn_uintARRAY |DBTYPE_UI4
dyn_floatARRAY |DBTYPE_R8
dyn_stringARRAY |DBTYPE_BSTR
dyn_langStringARRAY |DBTYPE_BSTR (CONV:)
dyn_bit32ARRAY |DBTYPE_UI4
dyn_charARRAY |DBTYPE_UI1
dyn_timeARRAY |DBTYPE_DATE
dyn_dpidARRAY |DBTYPE_BSTR
dyn_blob
bool arrayARRAY |DBTYPE_BOOL
int arrayARRAY|DBTYPE_I4
uint arrayARRAY|DBTYPE_UI4
float arrayARRAY|DBTYPE_R8
string arrayARRAY|DBTYPE_BSTR
langString arrayARRAY|DBTYPE_BSTR
bit32 arrayARRAY|DBTYPE_UI4
char arrayARRAY|DBTYPE_UI1
time arrayARRAY|DBTYPE_DATE
dpid arrayARRAY|DBTYPE_BSTR
blob array

ПРИМЕЧАНИЕ

Типы данных integer (целое число) (кроме I2) не работают в Excel 97, то есть, при доступе OLE DB используя VBA выдается ошибка времени выполнения. Это конкретная проблема Excel 97.

Преобразование типов данных

При работе с программами VB, применяется следующая матрица преобразования при импорте данных в переменные определенного типа:

Из/Вbit32boolcharfloatintunsignedstringlangStringtime
bit32xxxx
boolxxxxxx
charxxxxx
floatxxxxx
intxxxxxxx
unsignedxxxxxxx
stringxxxx
langStringxx
timexxxx

Определение приоритетов запросов в архиве

Целью определения приоритетов запросов является снижение нагрузки на архивы посредством запросов поставщика данных OLE DB, вместо запросов диспетчера данных.

Определение приоритетов может быть настроено пользователем, и реализуется посредством трех потоков чтения. Конфигурационный параметр exclusiveReadThreadsForDM = только МД и readThreadsPreferringOleDb = предпочтительно OLE DB определяет, будет ли использоваться МД или OLE DB. При установке неверной конфигурации (например, общее количество потоков чтения превышает 3), отображается предупреждение, и используются значения по умолчанию. То, был ли создан запрос ДМ или OLE DB, может быть обнаружено с помощью идентификатора (только ДМ, предпочтительно ДМ или предпочтительно OLE DB). Оба записи конфигурации должны быть определены в разделе [valarch] конфигурационного файла.

Настройкой по умолчанию для трех потоков является следующее: один поток обрабатывает запросы не от OLE DB, второй оба (предпочтительно не от OLE DB), и третий также оба (предпочтительно OLE DB). Предпочтительно означает, что поток обрабатывает запросы из пула, пока он не опустеет. Запросы не из предпочтительного пула обрабатываются позже.

Поля в таблице ALERTS

В следующей таблице содержатся поля таблицы ALERTS, которые могут быть доступны посредством запросов с использованием SQL. Таблица ALERTS создана для моделирования панели алармов. Примеры запросов SQL описаны в главе Примеры запросов.

«Name»Тип OLE DB
ABBRDBTYPE_BSTR
DPNAMEDBTYPE_BSTR
STIMEDBTYPE_BSTR
ALIASDBTYPE_BSTR
ОПИСАНИЕDBTYPE_BSTR
UNITDBTYPE_BSTR
ФОРМАТDBTYPE_BSTR
ACK_TIMEDBTYPE_BSTR
ACK_STATEDBTYPE_I4
ACK_TYPEDBTYPE_I4
ACK_USERDBTYPE_UI4
ACKABLEDBTYPE_BOOL
ALERT_COLORDBTYPE_BSTR
ARCHIVEDBTYPE_BOOL
COMMENTDBTYPE_BSTR
DESTDBTYPE_I4
DEST_TEXTDBTYPE_BSTR
DIRECTIONDBTYPE_BOOL
INACT_ACKDBTYPE_BOOL
LASTDBTYPE_BOOL
LAST_OF_ALLDBTYPE_BOOL
OBSOLETEDBTYPE_BOOL
OLDEST_ACKDBTYPE_BOOL
PANELDBTYPE_BSTR
PARTN_IDXDBTYPE_I4
PARTNERDBTYPE_BSTR
PRIORDBTYPE_I1
SINGLE_ACKDBTYPE_BOOL
TEXTDBTYPE_BSTR
VALUEDBTYPE_VARIANT
VISIBLEDBTYPE_BOOL

Столбец PRIOR представлен в OLE DB как INTEGER, а не как CHAR в «КАСКАД Цифра» SQL.

В дополнение к значениям, представленным выше, есть 3 столбца, которые могут быть использованы условии WHERE для ограничения запроса:

«Name»Тип OLE DB
ELEMENTTYPEDBTYPE_BSTR
DPTYPEDBTYPE_BSTR
ISLEAFDBTYPE_BSTR

Для ISLEAF требуется, в отличие от «КАСКАД Цифра» SQL, логическое (булевское) сравнение. Это означает, что WHERE _LEAF становится WHERE ISLEAF = TRUE в OLE DB SQL.

Поля в таблице HISTVAL

В следующей таблице содержатся поля таблицы HISTVAL, которые могут быть доступны в запросе с использованием SQL.

«Name»Тип OLE DB
DPSYSTEMDBTYPE_I1
DPIDDBTYPE_UI4
DPELDBTYPE_I2
DPTYPEIDDBTYPE_I2
DPTYPEDBTYPE_BSTR
DPNAMEDBTYPE_BSTR
STIMEDBTYPE_BSTR *)
ОПИСАНИЕDBTYPE_BSTR
ALIASDBTYPE_BSTR
ФОРМАТDBTYPE_BSTR
UNITDBTYPE_BSTR
ORIGINALVALUEVARIANT **)
ONLINEVALUEVARIANT
OFFLINEVALUEVARIANT
DEFAULTVALUEVARIANT
CORRECTIONVALUEVARIANT
STATUSBITSDBTYPE_UI4 ***)
ACTIVE_BITDBTYPE_BOOL
EXP_DEFAULT_BITDBTYPE_BOOL
AUTDEFAULT_BITDBTYPE_BOOL
DEFAULT_BITDBTYPE_BOOL
OUT_PRANGE_BITDBTYPE_BOOL
OUT_RANGE_BITDBTYPE_BOOL
EXP_INV_BITDBTYPE_BOOL
AUT_INV_BITDBTYPE_BOOL
INVALID_BITDBTYPE_BOOL
BAD_BITDBTYPE_BOOL
DEFAULT_BAD_BITDBTYPE_BOOL
ONLINE_BAD_BITDBTYPE_BOOL
OFFLINE_BAD_BITDBTYPE_BOOL
FROM_GI_BITDBTYPE_BOOL
FROM_SI_BITDBTYPE_BOOL
PER_ACTIVE_BITDBTYPE_BOOL
CORR_BITDBTYPE_BOOL
COMPR_BITDBTYPE_BOOL
COMP_CORR_BITDBTYPE_BOOL
CORR_ADD_BITDBTYPE_BOOL
COMP_INV_BITDBTYPE_BOOL
STIME_INV_BITDBTYPE_BOOL
USERBIT1_BITDBTYPE_BOOL
USERBIT2_BITDBTYPE_BOOL
USERBIT3_BITDBTYPE_BOOL
USERBIT4_BITDBTYPE_BOOL
USERBIT5_BITDBTYPE_BOOL
USERBIT6_BITDBTYPE_BOOL
USERBIT7_BITDBTYPE_BOOL
USERBIT8_BITDBTYPE_BOOL
USERDBTYPE_UI2
MANAGERDBTYPE_UI2
EVENTTYPEDBTYPE_UI2
ARCHIVENUMBERDBTYPE_UI2

*): Чтобы не утратить точности до миллисекунд, все виды «КАСКАД Цифра» TimeVar преобразуются в DBTYPE_BSTR в определенном формате времени по умолчанию, а также передаются в этом формате запрашивающему приложению.

**): Типом данных Variant в OLE DB может стать любой тип данных из «КАСКАД Цифра» (например, float, int, bool, string и др.) Страница Типы данных для поставщика данных OLE DB содержит информацию о преобразовании типов данных «КАСКАД Цифра» в типы данных OLE DB.

***): Поскольку запрашивающее приложение будет отображать целое число без знака в качестве числа, биты состояния преобразуются в BSTR, и также передаются в этом формате. Он содержит битовую строку из 32 символов (каждый 0 или 1).

Поскольку тип Variant ограничивается точностью временных данных до секунд, информация о времени, содержащаяся в исходном значении, оперативном значении и др., автоматически преобразуется в текст в стандартном формате времени, а затем всегда обрабатывается и отображается в виде текста.

Биты состояния также преобразуются в текст, представляющий битовую комбинацию.

Язык запросов SQL

Запрос из таблицы HISTVAL, используя поставщика данных OLE DB, основан на языке SQL запросов:

  • Запросы только для чтения (SELECT)
  • Простой синтаксис SQL (нет соединений, подзапросов и перекрестных запросов или союзов)
  • Допускаются запросы, составленные только на «нейтральном языке»
  • Знаки подстановки разрешены, даже в именах ТД (также иерархические)
  • Расширение запросов времени до миллисекунд
  • Допускаются групповые алармы, сочетающие несколько одиночных алармов при обработке алармов (таблица ALERTS).

Поддерживаемые команды SQL

КомандаЗначение
SELECT FROM WHEREВыбор столбцов из таблиц в соответствии с конкретными условиямиПримечание: В запросах SELECT допускаются только * или двоеточия, без выражений.
ASДля указания заголовка столбца
ANDСоединение условий посредством AND (и)
ORСоединение условий посредством OR (или)
NOTОтрицание условий
( )Взятие условий в скобки
INВыбор из списка
BETWEEN (AND)Все между 2 значениями
LIKEСравнение с использованием знаков подстановки
NOT LIKEОтрицание сравнения с использованием знаков подстановки.
GROUP BYГруппирование связанных строк
SUMСумма всех строк, которые были выбраны с помощью GROUP BY
Мин.Минимум из всех строк, которые были выбраны с помощью GROUP BY
Макс.Максимум из всех строк, которые были выбраны с помощью GROUP BY
COUNTКоличество строк, которые были выбраны с помощью GROUP BY
AVGСреднее из всех строк, которые были выбраны с помощью GROUP BY
ORDER BY (DESC)Сортировка строк результата (по убыванию)

Поддерживаемые операторы

ОператорЗначение
=Равно
<Меньше, чем
>Больше, чем
<>Не равно
<=Меньше или равно
>=Больше или равно
+Прибавление
Вычитание
*Умножение
/Деление
||Объединение строк
IS NULLЗапрос того, является ли содержание столбцов неопределенным
? :Оператор знака вопроса (допускается только с выбором столбца)

Функции SQL

ФункцияЗначение
STR(x)Преобразует x в строку
INT(X)Преобразует x в целое число
FLOAT(X)Преобразует x в число с плавающей запятой
STR2DATETIME(s,f)Преобразует s (строку) в DBTYPE_DATE, где f указывает формат данных
DATETIME2STR(d,f)Преобразует d (DBTYPE_DATE) в (строку), где f указывает требуемый формат данных

Советы и рекомендации

Ознакомьтесь с разделом SQL справочной системы.

  • Указание формата в двух функциях даты является обязательным. Форматом по умолчанию является: «yyyy.mm.dd hh:mm:hh.mmm», например, «2001.04.22 12:11:31.000».
  • Параметры, приведенные в функции strftime() стандарта ANSI для C могут использоваться в строке формата:ФункцияЗначение%aСокращенное имя дня недели%AПолное имя дня недели%bСокращенное имя месяца%BПолное имя месяца%cМестный способ представления даты и времени%dДень месяца (01 -31)%HЧас (00 -23)%IЧас (00 -12)%jДень в году (001 -366)%mМесяц (01 — 12)%MМинута (00 -59)%pМестный аналог AM (утро) или PM (дневное время)%SСекунда (00 -59)%UНеделя в году (воскресенье — первый день недели) (00 — 53)%wДень недели (0-6, Воскресенье = 0)%WНеделя в году (понедельник — первый день недели) (00 — 53)%xМестный способ представления даты%XМестный способ представления времени%yГод без указания столетия (00-99)%YГод с указанием столетия%ZНазвание временной зоны%%%
  • Строки могут быть заключены в одинарные (‘) или двойные кавычки («) в качестве ограничителей. Размещение обратной косой черты перед специальным символом (то есть, разделитель строки или знак подстановки) отменяет его значение. Две обратных косых черты обозначают саму обратную косую черту в качестве символа.
  • При указании знаков подстановки в запросе может использоваться как синтаксис SQL («%» означает любые символы, «_» означает любой одиночный символ), так и синтаксис «КАСКАД Цифра» («*» означает любые символы, «?» означает любой одиночный символ) (см. также конфигурационный параметр usePvssWildCards в разделе Записи в конфигурационном файле). Синтаксис «КАСКАД Цифра» используется по умолчанию, что является более практичным, потому что символ «_» часто используется в именах точек данных, а в синтаксисе SQL в каждом случае потребуется ведущий символ «/».
  • Если в условии появляется время источника, значение оператора равенства изменяется только в этом случае. Она возвращает значения, которые были действительны на это время. Однако они не должны быть созданы в это время, и, следовательно, могут иметь более раннее время источника в базе данных.

ПРИМЕР

SELECT ORIGINALVALUE, STIME FROM HISTVAL WHERE STIME = «2001.05.01 10:30:00.000»

Это может возвращать «2001.05.01 10:25:55:910» если последняя запись была сделана перед 10:30. Это исключение применяется только ко времени источника в операторе WHERE.

Неподдерживаемые ключевые слова SQL

CREATE (DLL)

CREATE (DML)

CLOSE DATABASE

COMMIT

CONNECT

CONNECT BY PRIOR

CRINSTAB

DELETE FROM

DISTINCT

DROP

EXISTS

GRANT

HAVING

INNER JOIN

INSERT

INTERSECT

INTO TEMP

LEFT JOIN

RENAME

RESOURCE

REVOKE

RIGHT JOIN

SET AUTOCOMMIT

START WITH

UNION

UPDATE SET

Пример запросов

Для примера запросов ниже в архивах должны находиться следующие записи данных (для ясности показаны только выбранные столбцы):

Таблица HISTVAL

DPNAMEDPTYPEORIGINAL
VALUE
STIMEINVALID
_BIT
valve1valve12001.01.30 10:31:02.2110
valve2valve12001.01.30 10:31:02.2120
valve3valve12001.01.31 2:11:01.1110
valve1valve02001.01.31 2:31:02.2110
valve1valve12001.01.31 2:35:02.2111
red1.m.switchmotor12001.01.31 2:38:02.2110
red1.f.sw1motor1,52001.01.31 10:31:02.2110
red1.speedmotor1,72001.01.31 10:32:02.2110
red1.m.tempmotor63,12001.01.31 10:33:02.2110
red2.m.tempmotor66,42001.01.31 10:33:02.2121
red1.m.tempmotor61,22001.01.31 10:33:02.2130
red2.m.tempmotor64,32001.01.31 10:33:02.2140
red3.m.tempmotor65,32001.01.31 10:33:02.2150
red1.m.switchmotor02001.01.31 10:33:02.2151

ПРИМЕР

В следующем запросе извлекаются все точки данных и исходные значения для времени источника 30.1.2001:

SELECT DPNAME,ORIGINALVALUE,STIME FROM HISTVAL WHERE STIME BETWEEN «2001.01.30 01:00:00.000» AND «2001.01.31 01:00:00.000»

DPNAMEORIGINALVALUESTIME
valve112001.01.30 10:31:02.211
valve212001.01.30 10:31:02.212

ПРИМЕР

В следующем запросе извлекаются все точки данных, в том числе исходные значения и время источника, с именем точки данных, заканчивающимся на «switch» (переключатель) или «temp» (температура):

SELECT DPNAME,ORIGINALVALUE,STIME FROM HISTVAL WHERE DPNAME IN («*.*.switch.»,»*.*.temp.»)

DPNAMEORIGINALVALUESTIME
red1.m.switch12001.01.31 2:38:02.211
red1.m.temp63,12001.01.31 10:33:02.211
red2.m.temp66,42001.01.31 10:33:02.212
red1.m.temp61,22001.01.31 10:33:02.213
red2.m.temp64,32001.01.31 10:33:02.214
red3.m.temp65,32001.01.31 10:33:02.215
red1.m.switch02001.01.31 10:33:02.215

ПРИМЕР

В этом запросе все записи с заданным INVALID_BIT типа точки данных «motor» (двигатель):

SELECT (INVALID_Bit),DPNAME,ORIGINALVALUE,STIME FROM HISTVAL WHERE DPTYPE = «motor»

DPNAMEORIGINALVALUESTIME
red1.m.switch12001.01.31 2:38:02.211
red1.f.sw11,52001.01.31 10:31:02.211
red1.speed1,72001.01.31 10:32:02.211
red1.m.temp63,12001.01.31 10:33:02.211
red2.m.temp66,42001.01.31 10:33:02.212
red1.m.temp61,22001.01.31 10:33:02.213
red2.m.temp64,32001.01.31 10:33:02.214
red3.m.temp65,32001.01.31 10:33:02.215
red1.m.switch02001.01.31 10:33:02.215

ПРИМЕР

В следующем запросе извлекаются все точки данных, исходные значения и время источника, с именем точки данных, начинающимся с «red» (красный) и содержащим одну точку (знак точки) в имени:

SELECT DPNAME,ORIGINALVALUE,STIME FROM HISTVAL WHERE DPNAME LIKE «red*.*.»

DPNAMEORIGINALVALUESTIME
red1.speed1,72001.01.31 10:32:02.211

ПРИМЕР

В следующем запросе извлекаются максимальные исходные значения для всех переключателей (в порядке возрастания имен точек данных):

SELECT DPNAME,MAX(ORIGINALVALUE)FROM HISTVAL WHERE DPNAME LIKE «*.*.temp.» GROUP BY DPNAME ORDER BY DPNAME

ПРИМЕЧАНИЕ

Групповые функции, такие как MAX, MIN, следует использовать только для запроса значений точек данных, которые принадлежат к одному типу (см. пример выше). Поскольку существуют элементы точек данных различных типов (Float, String, DynBool и другие), вся таблица не может быть правильно запрошена такими типами, и отображается сообщение об ошибке.

ПРИМЕЧАНИЕ

При использовании имени точки данных в качестве критерия фильтрации в операторе SQL, необходимо всегда добавлять точку после имени точки данных, например, WHERE DPNAME LIKE «red1.m.temp.»

DPNAMEORIGINALVALUE
red1.m.temp63,1
red2.m.temp66,4
red3.m.temp65,3

Таблица ALERTS

ПРИМЕЧАНИЕ

Нельзя выполнять запросы с общим доступом, такие как UNION и JOIN, для таблиц HISTVAL и ALERTS. Можно запросить только закрытые интервалы для таблицы ALERTS.

ABBRDPNAMEDPTYPESTIMEACK_TIMEPRIORACK_TYPE
Avalve1valve2002.02.15 8:15:03.2132002.02.15 8:15:07.21360 TYPE_3: ‘Входящий аларм’ является квитируемым
Ared1.f.schl1motor2002.02.15 08:20:01.2022002.02.15 8:21:01.20460TYPE_4: Для пары алармов требуется квитирование
aA red1.m.switchmotor2002.02.10 9:15:01.2092002.02.10 9:16:01.20920TYPE_4: Для пары алармов требуется квитирование
aAred1.f.schl1motor2002.02.15 08:20:01.2022002.02.15 08:20:01.20220TYPE_3: ‘Входящий аларм’ является квитируемым
Ared1.rotmotor2002.02.16 12:22:01.2012002.02.16 12:22:01.20160TYPE_3: ‘Входящий аларм’ является квитируемым
Ared1.m.tempmotor2002.02.16 12:22:01.2022002.02.16 12:22:01.20260TYPE_3: ‘Входящий аларм’ является квитируемым
aAred2.m.tempmotor2002.02.16 12:22:01.2032002.02.16 12:23:03.20320TYPE_3: ‘Входящий аларм’ является квитируемым

ПРИМЕР

В следующем запросе извлекаются все точки данных, оканчивающиеся словом «switch» или «temp» и временем источника в диапазоне 10.02.02-16.02.02:

SELECT ABBR,DPNAME,STIME,ACK_TIME,PRIOR, ACK_TYPE FROM ALERTS WHERE DPNAME IN («*.*.switch.»,»*.*.temp.») AND STIME BETWEEN «2002.02.10 07:00:00.000» AND «2002.02.16 01:00:00.000»

В запросе показаны аббревиатура приоритета, время источника, время квитирования, приоритет диапазона алармов и тип квитирования всех точек данных с вышеупомянутыми именами:

ABBRDPNAMESTIMEACK_TIMEPRIORACK_TYPE
aAred1.m.switch2002.02.10 9:15:01.2092002.02.10 9:16:01.20920TYPE_4: Для пары алармов требуется квитирование
Ared1.m.temp2002.02.16 12:22:01.2022002.02.16 12:23:01.20260TYPE_3: ‘Входящий аларм’ является квитируемым
aA red2.m.temp2002.02.16 12:22:01.2032002.02.16 12:23:03.20320TYPE_3: ‘Входящий аларм’ является квитируемым

ПРИМЕР

В следующем запросе извлекаются все точки данных в течение периода 14.02.2002-17.02.02

SELECT DPNAME,STIME,ACK_TIME FROM ALERTS WHERE STIME BETWEEN «2002.02.14 01:00:00.000» AND «2002.02.17 01:00:00.000»

DPNAMESTIMEACK_TIMEACK_TYPE
valve12002.02.15 8:15:03.2132002.02.05 8:15:03.213TYPE_3: ‘Входящий аларм’ является квитируемым 
red1.f.schl1 2002.02.15 08:20:01.2022002.02.16 12:22:01.202TYPE_3: ‘Входящий аларм’ является квитируемым
red2.m.temp2002.02.16 12:22:01.2032002.02.16 12:22:01.203TYPE_3: ‘Входящий аларм’ является квитируемым

Example: how to query data using MS Excel

В этом примере показано, как запрашивать данные с помощью Microsoft Excel. Используется следующий параметр конфигурации:

Потребитель, поставщик (EXE и DLL), DM и архивы на одном общем компьютере
Все они используют конфигурационный файл проекта «КАСКАД Цифра» и устанавливаются с помощью инсталляции «КАСКАД Цифра». Связь между поставщиком и потребителем (Provider-DLL) осуществляется через COM.

Действуйте следующим образом:

  1. Добавьте запись WCCOAoledb manager в файл progs в разделе KASKAD_Project_Path/config

windows/WCCOAoledb | manual | 30 | 2 | 2 |

ПРИМЕЧАНИЕ

|Запись менеджера WCCOAoledb должна заканчиваться знаком. Следите за тем, чтобы в конце строки не было ”пробела»!

  1. Зарегистрируйте следующие компоненты в качестве пользователя с правами администратора с помощью командной строки. Перед регистрацией компонентов перейдите в каталог KASKAD_Path/bin/windows. Обратите внимание, что вы регистрируете компоненты в заданном порядке:
  • WCCOAoledb.exe /regserver
  • regsvr32 WCCOAOleDbExeps.dll
  • regsvr32 WCCOAoledb.dll

Обратите внимание, что имя поставщика — WCCOAoledb OLE DB Provider и что поставщик является 32-разрядным. Поэтому вам необходимо добавить менеджер в файл progs вашего проекта под управлением 64-разрядной версии Windows.

  1. Запустите в консоли проект «КАСКАД Цифра» и менеджер WCCOAoledb:

Рисунок: «КАСКАД Цифра» Консоль и менеджер WCCOAoledb

  1. Откройте Microsoft Excel и меню “Данные“. В меню “Данные» выберите опцию «Из других источников“.

Рисунок: Microsoft Excel: меню “Данные” -> Опция «Из других источников»

  1. В мастере подключения к данным выберите опцию “Другое/Дополнительно«. Нажмите Далее >

Рисунок: Microsoft Excel: Мастер подключения к данным -> Опция “Другое / Дополнительно”

  1. Выберите опцию “WCCOA oledb OLE DB Provider” и нажмите Далее>

Рисунок: Microsoft Excel: Мастер подключения к данным -> Опция “Другое / Дополнительно“-> «Поставщик”

  1. На вкладке «Подключение» нажмите «ОК«. Вам не нужно вводить источник данных.

Рисунок: Microsoft Excel: Мастер подключения к данным -> Свойства канала передачи данных -> Вкладка Подключения

  1. Выберите либо таблицу значений (HISTVAL), либо таблицу оповещений (ALERTS).

Рисунок: Выберите таблицу базы данных

Выберите, как и где должны отображаться данные, и нажмите на OK.

Рисунок: Microsoft Excel, опция импорта данных

Данные отображаются в Excel.

Рисунок: Значения запроса в Microsoft Excel

SampleHistDB.xls Пример

Вы можете найти другой пример в разделе _WBR__КАСКАДКАСКАД/source/. SampleHistDB.xls Файл содержит три кнопки. Вы можете запросить текущие и исторические значения типа точки данных “ExampleDP*”, а также выполнить пользовательский запрос, добавив инструкцию SQL в ячейку A1 (см. Рисунок ниже).:

Рисунок: SampleHistDB.xls пример

Интеграция поставщика данных OLE DB в «КАСКАД Цифра»

В «КАСКАД Цифра» поставщик данных OLE DB для исторической БД разделен на 2 модуля (компоненты EXE и DLL). Они взаимодействуют через простой COM-интерфейс.

ВНИМАНИЕ

В ОС Windows 64 бит поставщик данных OLE DB поддерживается только для одинарных серверных систем, что означает, что менеджер OLE DB (WCCOAoledb) работает на одном сервере, где на проекте запущен прокси. Менеджер OLE DB не поддерживается для систем с резервированием.

EXE-компонент поставщика интегрирован в этой версии в качестве менеджера «КАСКАД Цифра» (WCCOAoledb). Связь с отдельными архивами осуществляется посредством TCP/IP. DLL-компонент поставщика данных предоставляет запрашиваемые данные потребителю (программе, которую можно использовать для доступа к данным в «КАСКАД Цифра» с использованием OLE DB):

Рисунок: Доступ к данным «КАСКАД Цифра»

Возможные конфигурации

  • Потребитель, поставщик (EXE и DLL), DM и архивы на одном обычном компьютере.
    Это простейший вариант. Они все используют конфигурационный файл проекта «КАСКАД Цифра» и устанавливаются при установке «КАСКАД Цифра». Связь между поставщиком и потребителем (поставщик-DLL) реализуется посредством COM.