RUS  ENG 

Плагин Delphi/SQL

Страницы: 1
RSS
Плагин Delphi/SQL, Мнемосхемы
 
Здравствуйте,
Два вопросика (Втокой навернео не по теме)
Я исплользую Zulu версии 7.0.0.6342

Вопрос №1: Появилась потребность визуализации на базе Zulu (отображение Он-Лайн данных из внешней БД или с регулярным автоматическим обновлением) мнемосхемы с текущими показаниями датчиков и показывать отклонение показаний от норматива, (напрмер автоматической сменой картинки на красную).
Не могли бы вы направить - какой инструмент в Zulu для этого наиболее предпочтителен?

Вопрос №2: пользователи когда открывают и работают с Zulu а потом сохраняет и закрывают - они сохраняет свой экран и следующихй пользователь который запускает программу видит активные слои и место последнего сохранившего карту, можно ли настроить чтобы каждый пользователь видел то место на карте и те слои, в общем то стосяние которое он сам закрыл последний раз?
 
Юрий, добрый день!
1. Мнемосхему можно реализовать в виде слоя ZuluGIS. Данные от датчиков можно отображать в виде бирок. Окрашивать объекты слоя в зависимости от состояния можно с помощью тем. Т. о. задачей плагина будет получение данных онлайн и запись из в нужные таблицы слоя, плюс вызов обновления изображения схемы. Окно схемы само отобразит мнемосхему с нужными показаниями в бирках и цветами объектов.
2. Если один пользователь сохранил открытую с сервера карту, то и он и другие пользователи открыв её, увидят последнее состояние. Чтобы каждые видел своё, пользователь может открывать свою карту (не обязательно с сервера, главное, чтобы слои с сервера были) и сохранять всё как ему нужно. Можно, допустим, открыть карту с сервера и выбрать Сохранить Как к себе в Документы
 
1. Я сделал модуль загрузки данных из БД в Зулу - но он на самом деле не очень хорошо работает, принцип такой - на панели располагается кнопка, при её нажатии вызывается Дельфи прораммы, в которой указываются параметры загрузки, слои и выбранное время (срез), система готовит VBS-скрипт который следующим кликом загружает все данные в БД. НО перед нажатием на кнопку загрузки - появляется сообщение что-то вроде "такой-то скрипт был изменен, перезугрузить его?" и надо кликнуть Да.
По идее я бы мог динамически готовить VBS-скрипт для загрузки данных - но я незнаю как его автоматически в Зулу загрузить и атоматически с заданным интервалом исполнить.

2. А проблем не возникнет? На сколько я помню система плохо относится к тому что часть сохраняется локально а часть на сервере, я просто пытался включить в карту на сервере локальный слой расположенный в общедоступной сетевой папке (просто до сервера канал уже чем до папки), и ничего не получилось.
 
Юрий,
1. Не совсем понятно зачем так сложно. Зачем генерить vbs-скрипт, если весь нужный код можно выполнить в самом плагине? Дальше, плагин может загружаться при старте программы и по таймеру выполнять какие-либо действия - вот Вам автоматическая загрузка/обновление с заданным интервалом.

2. Карта - это список слоёв плюс параметры отображения. Действительно, в серверную карту нельзя добавить локальный слой, т. к. сервер никак не сможет достучаться до вашего слоя на клиентской машине. А вот в локальную карте можно добавить слой с сервера.
Какие-нибудь проблемы конечно могут возникнуть. Например, когда состав/дизайн карты на сервере изменился, а локальная копия осталась прежней.
 
А что вы имеете ввиду под плагином?

Я на панели Zulu разместил скрипт:
Sub ZuluXDB
Dim WshShell
Set WshShell = CreateObject("wscript.shell")
ret = WshShell.Run("C:\ZuluXDB\ZuluXDB.exe"&"", 1, TRUE)
End Sub

Программа выполняется и готовит данные по заданным параметрам.
Фактически готовит следующий скрипт, который тоже выведен под кнопку на панели Zulu - но перед запуском надо дождаться когда Zulu его загрузит: выдаст сообщение "Script *** was changeg. Reload?".

Sub ZuluXDBw
Set L = CreateObject("zululib.Layer")
Set Db = CreateObject("zb.database")
L.Open "zulu://*********"
Db.Open L.ObjectTypes.Item(5).BaseName
Set Ds = Db.SelectAll
Ds.MoveFirst
Do
If Ds.EOF = True Then Exit Do
Application.StatusText = ""
Key = Ds.GetFieldValueVar(0)
If Key = "51493" Then Db.UpdateBaseRecord Key, "Gr", 0.00, 0
Ds.MoveNext
Loop
Application.StatusText = ""
Db.Open L.ObjectTypes.Item(5).BaseName
Set Ds = Db.SelectAll
Ds.MoveFirst
Do
**********************************************
If Ds.EOF = True Then Exit Do
Application.StatusText = ""
Key = Ds.GetFieldValueVar(0)
If Key = "51324" Then Db.UpdateBaseRecord Key, "Gr", 0.23, 0
Ds.MoveNext
Loop
Application.StatusText = ""
Set mess = CreateObject("wscript.shell")
mess.Popup "Заррузка выполнена", 20, "Сообщение"
End Sub


Пытаюсь сделать автозапуск скрипта:
Sub ZuluXDB
Dim WshShell
Set WshShell = CreateObject("wscript.shell")
ret = WshShell.Run("C:\ZuluXDB\ZuluXDB.exe"&"", 1, TRUE)
Set WshShell2 = CreateObject("wscript.shell")
ret = WshShell2.Run("C:\ZuluXDB\ZuluXDBw.vbs"&"", 1, TRUE)
End Sub

Он просто неисполняется после его формирования.
Мож сам где ошибся, еще попробую покрутить, потом отпишусь
 
Юрий,
  1. Плагин - модуль расширения ZuluGIS (см. https://www.politerm.com/zuludoc/zuluax/index.html#plugins.html)
  2. Сообщение о том, чтобы перезагрузить скрипт действительно возникает в случае, если файл изменён извне.
  3. Автоматическое выполнение скрипта не предусмотрено.
  4. А почему Вы решили перегенерировать именно отдельно скрипт, а, допустим, то же обновление не выполнить внутри программы ?
 
А можно как-нибудь без Плагина связать Режим объекта с Базой данных? Чтобы при изменении значения в БД, автоматически менялся бы и режим?
 
Юрий, добрый день!
  1. Полностью автоматически в момент изменения данных такое обновление не сделать, тем более если значения в БД могут быть изменены извне.
  2. Можно сделать процедуру обновления состояния сети в зависимости от данных в БД, тогда это можно сделать с помощью скрипта, а не плагина, либо в отдельной программе.
  3. Можно запускать подобную процедуру с некоторой периодичностью, чтобы актуализировать состояние сети.
 
А параметр в карте:Автообновление,с ___ - позволяет полностью автоматически выводить новые данные в полписях, с режимом объекта то-же самое не пройдет?
 
Цитата
Юрий Кольчурин написал:
А параметр в карте:Автообновление,с ___ - позволяет полностью автоматически выводить новые данные в полписях, с режимом объекта то-же самое не пройдет?
Автообновление вызывает только принудительную отрисовку карты, при этом бирки, которые для отображения берут актуальную информацию, обновляются. На самих данных этот параметр не отражается.
 
Вроде нет, я попытался изменить одним клиенто данные а во втором бирка сама поменялась, я зашел в даные и проверил, что в БД - данные актуальные!
 
Цитата
Юрий Кольчурин написал:
Вроде нет, я попытался изменить одним клиенто данные а во втором бирка сама поменялась, я зашел в даные и проверил, что в БД - данные актуальные!
Просто бирка в момент отображения берёт актуальные данные из БД. Изменил данные первый клиент, а не автообновление карты.
Страницы: 1