Страница 1 из 2

и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Пн фев 28, 2011 6:44 pm
Useful
вопрос, наверное, не для слабонервных...
...для начала оговорюсь, что создавать свою БД (postgreSQL) и прикручивать ее к InTouch (10.1), я стал месяца 4-е назад (до этого с БД дела не имел).
Недавно, братья по разуму (программисты БД), шепнули на ухо, что давать приложению доступ к БД и пользоваться прямыми запросами к БД - "не есть хорошо" :evil: . Послушав, решил разобраться как можно реализовать вывод данных из БД при помощи хранимых процедур. InTouch и wwGenericSQLGrid в частности с хранимыми процедурами работают на ура, если возвращать вообще ничего не надо, если нужно вернуть одну переменную или строку. Проблемы начинаются, когда пытаешься от запроса получить таблицу целиком или ее часть.
Дело в том, что обычная хранимая процедура (как я смог разобраться, если ошибаюсь поправьте) в postgreSQL может вернуть таблицу только в формате набора полей некого типа разделенных запятой (по факту данные через запятую). В wwGenericSQLGrid отображение данных в таком формате неудобно, нет четкой границы столбцов :).
Нашел еще один способ в postgre выдергивание таблицы при помощи курсоров. Написал скрипт, отладил, работает. Переношу из среды написания скриптов в InTouch и пытаюсь заставить его проглотить wwGenericSQLGrid:
#Grid1.SQLString= " begin; declare abc cursor for select * from buttons; fetch all from abc";
#Grid1.ConnectWithString( "Driver={PostgreSQL Unicode};Server=...
и т.д.
-небольшие пояснения:abc в данном случае переменная типа refcursor

выполняю скрипт и вижу такое сообщение: "операция не допускается, если объект закрыт".
Изображение
что самое интересное, если сразу кнопочку "ОК" на этом сообщении не нажать, а например свернуться, то это окошечко куда-то прячется так, что до viewer не достучаться, закрывается только через диспетчер задач.
непосредственно запускать скрипт в InTouch не пробовал, может это только неумение пользоваться курсорами у wwGenericSQLGrid (или у меня :roll: )?
Может кто-нибудь сразу "грамотно" для запросов к БД использовал процедуры, и перешагнул эту проблему?
P.S. по netstat видно, что при попытке выполнить сей запрос, порт открывается, а самое главное не получается выполнить следующий скрипт:
#Grid1.SQLString= "commit;";
#Grid1.Execute();

закрываешь viewer, а соединение так и висит, пока БД сама по таймауту не закроет. :?

P.P.S. после проведения второго этапа испытаний на совместимость InTouch 10.1 c хранимыми процедурами postgre выяснилось, что забрать значение любого типа, которое возвращается при вызове функций невозможно.
Подробнее:
при выполнении этого скрипта (при живом подключении к БД)
ResultCode1=SQLSetStatement( connectionid1, " select Check_lampes()");
ResultCode1_1=SQLExecute( connectionid1, "check_lamp", 0 );
SQLErrorMsg( ResultCode1 )
и SQLErrorMsg( ResultCode1_1 )
пишут No errors occured
в биндах check_lamp один tag типа memory integer со столбцом Check_lampes (пробовал и сheck_lampes).
Так вот, несмотря на то, что sqlerrormsg пишет, что ошибок нету, значение не доходит до tegа(значение не меняется; выполенение скрипта вообще никак не меняет значение). Для того чтобы узнать причину, попробовал следующий скрипт в wwGenericSQLGrid:
#Grid1.SQLString= "select Check_lampes()";
#Grid1.Execute()

и о чудо, то что не cмог получить в InTouch, отображается без проблем в Grid. Я примерно представляю, что теперь через скрипты AxtiveX wwGenericSQLGrid, можно как-то выдернуть нужное мне значение, но это мартышкин труд...:(
Помогите, вопрос стратегический, начальство поджимает :cry:

Re: и снова wwGenericSQLGrid

СообщениеДобавлено: Вт мар 01, 2011 6:45 am
Klinkmann_Msk
Useful писал(а):#Grid1.SQLString= " begin; declare abc cursor for select * from buttons; fetch all from abc";
#Grid1.ConnectWithString( "Driver={PostgreSQL Unicode};Server=...

Я могу ошибаться, но не стоит операторы поменять местами? Сначала подключаются к БД, а затем начинают с ней "играться".

СообщениеДобавлено: Вт мар 01, 2011 4:18 pm
Useful
Вы ошибаетесь, если сначала вызываешь ConnectWithString( ..., то пишет, что нужна строка запроса. проблем с прямыми запросами типа "select all from table" работают, проблема именно с курсором.
Может сразу разработчикам писать?

СообщениеДобавлено: Ср мар 02, 2011 5:39 am
Klinkmann_Msk
Useful писал(а):Вы ошибаетесь...

Виноват :(
вижу такое сообщение: "операция не допускается, если объект закрыт"

Такое бывает, если обращаются к ActiveX, которого нет на экранной форме или он ещё не успел проинициализироваться при вызове окна.

СообщениеДобавлено: Ср мар 02, 2011 11:06 am
Useful
Такое бывает, если обращаются к ActiveX, которого нет на экранной форме или он ещё не успел проинициализироваться при вызове окна.

Действительно скрипт был в другом окне, вечером проверю.
Посмотрите, пожалуйста, я дополнил свой первоначальный пост.

СообщениеДобавлено: Ср мар 02, 2011 11:22 am
Klinkmann_Msk
Useful писал(а):Посмотрите, пожалуйста, я дополнил свой первоначальный пост.

1. По идее, обычно первым делается SQLConnect. Не сомневаюсь, что он сделан и ErrCode=0.
2. А вот ResultCode1_1=SQLExecute( connectionid1, "check_lamp", 0 );, на мой взгляд, должен содержать "from table_name". Типа:
SQLSetStatement(ConnectionID, "Select Speed, Ser_No from tablename where Ser_No =’" + Serial_input + "’");
3. А затем SQLExecute(ConnectionID, "BindList", 0);
4. Попробуйте после каждого оператора проверять ErrCode, т.е. разнести операторы на разные кнопки и нажимать их по очереди. Где то же ошибка происходит :?

СообщениеДобавлено: Ср мар 02, 2011 4:30 pm
Useful
А вот
ResultCode1_1=SQLExecute( connectionid1, "check_lamp", 0 );,
на мой взгляд, должен содержать "from table_name". Типа:
SQLSetStatement(ConnectionID, "Select Speed, Ser_No from tablename where Ser_No =’" + Serial_input + "’");

Вы написали обычный запрос к таблице.
ResultCode1=SQLSetStatement( connectionid1, " select Check_lampes()");

Я же пытаюсь сделать запрос к процедуре Check_lampes() написанной на процедурном языке(plpgsql) в БД, которая после ее запроса возвращает целочисленное значение .
ResultCode1_1=SQLExecute( connectionid1, "check_lamp", 0 );

"check_lamp" - это существующий bindlist, в котором один ...
tag типа memory integer со столбцом Check_lampes (пробовал и сheck_lampes).

Попробуйте после каждого оператора проверять ErrCode...

попробовал, ошибки нету( ResultCode и ResultCode1=0), как и результата

СообщениеДобавлено: Ср мар 02, 2011 4:46 pm
Useful
Klinkmann_Msk писал(а):
вижу такое сообщение: "операция не допускается, если объект закрыт"

Такое бывает, если обращаются к ActiveX, которого нет на экранной форме или он ещё не успел проинициализироваться при вызове окна.

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

СообщениеДобавлено: Чт мар 03, 2011 8:01 am
Klinkmann_Msk
Useful писал(а):
Klinkmann_Msk писал(а):
вижу такое сообщение: "операция не допускается, если объект закрыт"

Такое бывает, если обращаются к ActiveX, которого нет на экранной форме или он ещё не успел проинициализироваться при вызове окна.

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

Попробуйте относительно "сведую" версию wwGenericSQLGrid, там же pdf-описание, правда коротенькое.
http://files.mail.ru/TEWIXY
В доке мне болше всего понравилось:
This object is provided as is and is not supported through Wonderware Technical Support. A certain level of testing has
been completed to ensure the control operates in the manner described in the manual, but as with any add-in control,
no guarantees can be given as to how this object will perform within a given application. It is suggested that you test
your required functionality prior to deploying the control in an application.

:(

СообщениеДобавлено: Чт мар 03, 2011 8:11 am
Useful
:lol: зашибись, если отказывают в поддержке, могли бы хоть исходники выложить
А за дистрибутив спасибо

СообщениеДобавлено: Чт мар 03, 2011 8:22 am
Useful
обновление wwGenericSQLGrid не помогло
as is and is not supported

а это как понимать?

СообщениеДобавлено: Чт мар 03, 2011 8:39 am
Useful
Тут кое-что стало понятно, курсоры непричем. проблемы начинаются при выполнении вот этой команды:
#Grid1.SQLString="begin; ";
#Grid1.Execute();

SQLGrid не хочет начинать транзакцию, а чтение данных через курсор только в одной транзакции.

СообщениеДобавлено: Чт мар 03, 2011 8:52 am
Klinkmann_Msk
Useful писал(а):обновление wwGenericSQLGrid не помогло
as is and is not supported

а это как понимать?

As Is - как есть. "Вот, Адам, тебе Ева. Выбирай себе жену."
Т.е. WW не считает это софтом, так, компонентик. Потому и бесплатный. А коли бесплатный, то бери (или не бери) и не выступай.
Тут кое-что стало понятно, курсоры непричем. проблемы начинаются при выполнении вот этой команды:
#Grid1.SQLString="begin; ";
#Grid1.Execute();
SQLGrid не хочет начинать транзакцию, а чтение данных через курсор только в одной транзакции.

А код ошибки даёт?

СообщениеДобавлено: Чт мар 03, 2011 9:18 am
Useful
нет, выкидывает то самое окошко и пишет, что
"операция не допускается, если объект закрыт"

СообщениеДобавлено: Чт мар 03, 2011 9:34 am
Klinkmann_Msk
Useful писал(а):нет, выкидывает то самое окошко и пишет, что
"операция не допускается, если объект закрыт"

Случайно раскопал техноту 397, в которой описаны ограничения при работе с Bind List. Попробуйте почитать, вдруг что-нибудь полезное?

Как альтернативу можно предложить забыть про wwGenericSQLGrid и сделать требуемое через Excel-SQL Query. Результат получится так же в табличном виде. Ну а отобразить Excel-файл в окне InTouch легко.

СообщениеДобавлено: Чт мар 03, 2011 2:41 pm
Klinkmann_Msk
давать приложению доступ к БД и пользоваться прямыми запросами к БД - "не есть хорошо"

Просто данные передаются и возвращаются в незашифрованном виде. Если запросы идут к локальной БД, то вряд ли возникнут проблемы с секьюрити.

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Пт фев 10, 2012 1:32 pm
IvanM
Перезалейте пожалуйста кто нибудь куда нибудь wwGenericSQLgrid

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Пн фев 13, 2012 11:01 am
Генератор зла
http://files.mail.ru/2JT488

Пароль на архиве: 123

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Пн фев 13, 2012 12:33 pm
IvanM
Спасибо

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Пт фев 08, 2013 2:24 pm
Shin
Если есть возможноть, пожалуйста, обновите ссылку на wwgenericSQLGrid

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Вт фев 19, 2013 6:26 pm
Lunatik
http://files.mail.ru/B247F989C7F74046B05E9A8A0F4ADAFF - wwGenericSQLGrid пароль 123

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Ср фев 20, 2013 10:15 am
Shin
Большое спасибо за помощь!!!

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Пн апр 29, 2013 5:47 pm
alexk54
Добрый день. Нужна помощь: нужен wwGenericSQLGrid версии 3.2. Если у кого есть, скиньте ссылочку, пожалуйста.

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Вт апр 30, 2013 11:40 am
Генератор зла
http://files.mail.ru/100D102F57274B0EB6A51A0D8B4B1233
Что есть.
Пароль на архиве: 123

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Ср май 08, 2013 1:50 pm
alexk54
Спасибо)) То, что нужно.

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Пт ноя 27, 2015 2:19 pm
umencho
Если есть возможноть, пожалуйста, обновите ссылку на wwgenericSQLGrid. :oops: :roll:

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Пт ноя 27, 2015 5:19 pm
Steelman63

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Пт ноя 27, 2015 5:50 pm
umencho
Спасибо!
Но вы имеет новую версию (3.1)?

или подтвердить, что 3.0 работает на 64 бит.

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Ср мар 16, 2016 5:04 pm
umencho
Что надо сделать чтобы читать Оракле DB или PostgreSQL в InTouch 10.5 64 bits ? Можно помогите мне?

Re: и снова wwGenericSQLGrid + InTouch

СообщениеДобавлено: Вт янв 24, 2017 5:33 pm
dream84
Обновите пожалуйста ссылку на wwgenericSQLGrid