ЖУРНАЛ «СТА» №4/2006
Employees _By_PID , имеющимся в де- монстрационной конфигурации Сер- вера баз данных (рис. 24). Настраиваемые запросы Строка настраиваемого запроса име- ет следующий синтаксис: ICONICS.DatabaseOPCServer.3\ [Соединение_БД].[Источник]<[Параметр]; [Параметр]>.<[Столбец]> Количество и порядок параметров устанавливаются в Конфигураторе Сервера баз данных при создании ис- точника данных (рис. 25) а «Стол- бец» — имя столбца, который должен возвращаться в результате запроса. Один из способов получить строку настраиваемого запроса — открыть из любого приложения ICONICS Универ- сальный навигатор данных\ Доступ к ба- зе данных и из списка элементов (те- гов) указанного источника выбрать встроенный тег “@@column” (рис. 26). Для выбранного нами примера строка тега будет иметь следующий вид: ICONICS.DatabaseOPCServer.3\Administ rationDB.Employees_By_PID<PID>.<Colu mn Name>. Подставляя вместо <PID> и <Column Name> необходимые значе- ния, пользователь может изменять ус- ловия запроса и получать различные выборки из базы данных. Например, тег, возвращающий имя сотрудника (столбец Name), порядковый номер которого (параметр PID) равен 3, будет выглядеть так: ICONICS.DatabaseOPCServer.3\ AdministrationDB.Employe es_By_PID<3>.<Name> Динамические запросы Было бы удобно задавать значения параметров и имен столбцов с помощью локаль- ных или глобальных псевдо- нимов и, управляя их значе- ниями, динамически изме- нять запросы к Серверу баз данных. Однако этот способ не подходит для тех случаев, когда параметр или имя столбца задаются значением ОРСтега. В качестве примера рассмотрим случай, когда пе- ременным значением, зада- ваемым с помощью тега ОРС, являет- ся параметр PID, изменяя который, необходимо получать значение столбца Name. Если задать параметр PID с помощью псевдонима, привязанного, например, к тегу ОРС ICONICS.Simulator.1\ GlobalVariables.Analog1, получим в ре- зультате строку тега следующего вида: ICONICS.DatabaseOPCServer.3\ AdministrationDB.Employees_By_PID <ICONICS.Simulator.1\ GlobalVariables.Analog1>.<Name>. Она неверна — сервер не сможет по ней сделать корректную выборку из ба- зы данных (см. синтаксис строки). Для того чтобы правильно сформировать строку динамического запроса, есть 2 способа: написать короткий сценарий VBA или воспользоваться возможно- стями, предоставляемыми сервером данных DataWorX32. Способ 1 Для создания сценария VBA необхо- димо сделать следующее: 1. Добавить в экранную форму дина- мический элемент « Параметр» , ус- тановив ему в качестве источника данных тег ОРС, в котором будет находиться значение параметра. Это вспомогательный элемент, необхо- димый для сценария. Его можно скрыть (с помощью динамики « Скрыть/Блокировать» или располо- жить в скрытом слое), если нужно, чтобы он не был виден при исполне- нии проекта. 2. Добавить в экранную форму ещё один элемент «Параметр» , в котором будет отображаться результат запро- са к базе данных. Оставьте поле Ис- точник данных пустым, так как ис- 88 СТА 4/2006 ВОП Р ОСЫ - О Т В Е Т Ы www.cta.ru Private Sub GwxDisplay_DataEntryValueEntered( ByVal dataEntry As Object ) ’ Определение объекта, в который вводились данные. ’ «Параметр1» имя динамического объекта Параметр. If dataEntry.objectName = ”Параметр1” Then ’ Текст сценария, записывающего дополнительное значение в другой ОРСтег ’ Пример: Dim Add_Tag As GwxPoint ’другой ОРСтег Set Add_Tag = ThisDisplay.GetPointObjectFromName( ”ICONICS.Simulator.1\GlobalVariables.Analog1”) Add_Tag.Value = 77 End If If dataEntry.objectName = ”Параметр2” Then ’ Текст сценария, записывающего дополнительное значение в другой ОРСтег End If End Sub Листинг 3 Рис. 24. Демонстрационная конфигурация Сервера баз данных Рис. 25. Свойства источника данных Employees _By_PID. Параметр запроса — столбец PID
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy