и снова wwGenericSQLGrid + InTouch

Вопросы, не попадающие в другие разделы.

и снова wwGenericSQLGrid + InTouch

Сообщение Useful » Пн фев 28, 2011 6:44 pm

вопрос, наверное, не для слабонервных...
...для начала оговорюсь, что создавать свою БД (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:
Последний раз редактировалось Useful Вт мар 01, 2011 7:46 pm, всего редактировалось 1 раз.
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Re: и снова wwGenericSQLGrid

Сообщение Klinkmann_Msk » Вт мар 01, 2011 6:45 am

Useful писал(а):#Grid1.SQLString= " begin; declare abc cursor for select * from buttons; fetch all from abc";
#Grid1.ConnectWithString( "Driver={PostgreSQL Unicode};Server=...

Я могу ошибаться, но не стоит операторы поменять местами? Сначала подключаются к БД, а затем начинают с ней "играться".
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Useful » Вт мар 01, 2011 4:18 pm

Вы ошибаетесь, если сначала вызываешь ConnectWithString( ..., то пишет, что нужна строка запроса. проблем с прямыми запросами типа "select all from table" работают, проблема именно с курсором.
Может сразу разработчикам писать?
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Сообщение Klinkmann_Msk » Ср мар 02, 2011 5:39 am

Useful писал(а):Вы ошибаетесь...

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

Такое бывает, если обращаются к ActiveX, которого нет на экранной форме или он ещё не успел проинициализироваться при вызове окна.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Useful » Ср мар 02, 2011 11:06 am

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

Действительно скрипт был в другом окне, вечером проверю.
Посмотрите, пожалуйста, я дополнил свой первоначальный пост.
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Сообщение Klinkmann_Msk » Ср мар 02, 2011 11:22 am

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, т.е. разнести операторы на разные кнопки и нажимать их по очереди. Где то же ошибка происходит :?
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Useful » Ср мар 02, 2011 4:30 pm

А вот
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), как и результата
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Сообщение Useful » Ср мар 02, 2011 4:46 pm

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

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

исключил оба довода, скрипт запускался, в окне с работающим SQLGrid (перед выполнением проверял с другим. Подключался к той же базе). Пробовал работать с разными курсорами, по разному их открывал, и определял, всегда одно и то же. Походу это не "бывает", а реальная проблема.
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Сообщение Klinkmann_Msk » Чт мар 03, 2011 8:01 am

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.

:(
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Useful » Чт мар 03, 2011 8:11 am

:lol: зашибись, если отказывают в поддержке, могли бы хоть исходники выложить
А за дистрибутив спасибо
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Сообщение Useful » Чт мар 03, 2011 8:22 am

обновление wwGenericSQLGrid не помогло
as is and is not supported

а это как понимать?
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Сообщение Useful » Чт мар 03, 2011 8:39 am

Тут кое-что стало понятно, курсоры непричем. проблемы начинаются при выполнении вот этой команды:
#Grid1.SQLString="begin; ";
#Grid1.Execute();

SQLGrid не хочет начинать транзакцию, а чтение данных через курсор только в одной транзакции.
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Сообщение Klinkmann_Msk » Чт мар 03, 2011 8:52 am

Useful писал(а):обновление wwGenericSQLGrid не помогло
as is and is not supported

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

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

А код ошибки даёт?
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Useful » Чт мар 03, 2011 9:18 am

нет, выкидывает то самое окошко и пишет, что
"операция не допускается, если объект закрыт"
Useful
 
Сообщения: 64
Зарегистрирован: Чт мар 18, 2010 5:21 pm

Сообщение Klinkmann_Msk » Чт мар 03, 2011 9:34 am

Useful писал(а):нет, выкидывает то самое окошко и пишет, что
"операция не допускается, если объект закрыт"

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

Как альтернативу можно предложить забыть про wwGenericSQLGrid и сделать требуемое через Excel-SQL Query. Результат получится так же в табличном виде. Ну а отобразить Excel-файл в окне InTouch легко.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Klinkmann_Msk » Чт мар 03, 2011 2:41 pm

давать приложению доступ к БД и пользоваться прямыми запросами к БД - "не есть хорошо"

Просто данные передаются и возвращаются в незашифрованном виде. Если запросы идут к локальной БД, то вряд ли возникнут проблемы с секьюрити.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Re: и снова wwGenericSQLGrid + InTouch

Сообщение IvanM » Пт фев 10, 2012 1:32 pm

Перезалейте пожалуйста кто нибудь куда нибудь wwGenericSQLgrid
IvanM
 
Сообщения: 16
Зарегистрирован: Чт янв 26, 2012 6:37 pm

Re: и снова wwGenericSQLGrid + InTouch

Сообщение Генератор зла » Пн фев 13, 2012 11:01 am

http://files.mail.ru/2JT488

Пароль на архиве: 123
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: и снова wwGenericSQLGrid + InTouch

Сообщение IvanM » Пн фев 13, 2012 12:33 pm

Спасибо
IvanM
 
Сообщения: 16
Зарегистрирован: Чт янв 26, 2012 6:37 pm

Re: и снова wwGenericSQLGrid + InTouch

Сообщение Shin » Пт фев 08, 2013 2:24 pm

Если есть возможноть, пожалуйста, обновите ссылку на wwgenericSQLGrid
Shin
 
Сообщения: 46
Зарегистрирован: Пн авг 06, 2012 6:24 pm

Re: и снова wwGenericSQLGrid + InTouch

Сообщение Lunatik » Вт фев 19, 2013 6:26 pm

http://files.mail.ru/B247F989C7F74046B05E9A8A0F4ADAFF - wwGenericSQLGrid пароль 123
Lunatik
 
Сообщения: 4
Зарегистрирован: Пт дек 21, 2012 7:28 pm

Re: и снова wwGenericSQLGrid + InTouch

Сообщение Shin » Ср фев 20, 2013 10:15 am

Большое спасибо за помощь!!!
Shin
 
Сообщения: 46
Зарегистрирован: Пн авг 06, 2012 6:24 pm

Re: и снова wwGenericSQLGrid + InTouch

Сообщение alexk54 » Пн апр 29, 2013 5:47 pm

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

Re: и снова wwGenericSQLGrid + InTouch

Сообщение Генератор зла » Вт апр 30, 2013 11:40 am

http://files.mail.ru/100D102F57274B0EB6A51A0D8B4B1233
Что есть.
Пароль на архиве: 123
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: и снова wwGenericSQLGrid + InTouch

Сообщение alexk54 » Ср май 08, 2013 1:50 pm

Спасибо)) То, что нужно.
alexk54
 
Сообщения: 2
Зарегистрирован: Пн апр 29, 2013 5:19 pm

Re: и снова wwGenericSQLGrid + InTouch

Сообщение umencho » Пт ноя 27, 2015 2:19 pm

Если есть возможноть, пожалуйста, обновите ссылку на wwgenericSQLGrid. :oops: :roll:
umencho
 
Сообщения: 7
Зарегистрирован: Вт авг 11, 2009 5:17 am

Re: и снова wwGenericSQLGrid + InTouch

Сообщение Steelman63 » Пт ноя 27, 2015 5:19 pm

Steelman63
 
Сообщения: 313
Зарегистрирован: Ср авг 29, 2012 3:42 pm

Re: и снова wwGenericSQLGrid + InTouch

Сообщение umencho » Пт ноя 27, 2015 5:50 pm

Спасибо!
Но вы имеет новую версию (3.1)?

или подтвердить, что 3.0 работает на 64 бит.
umencho
 
Сообщения: 7
Зарегистрирован: Вт авг 11, 2009 5:17 am

Re: и снова wwGenericSQLGrid + InTouch

Сообщение umencho » Ср мар 16, 2016 5:04 pm

Что надо сделать чтобы читать Оракле DB или PostgreSQL в InTouch 10.5 64 bits ? Можно помогите мне?
umencho
 
Сообщения: 7
Зарегистрирован: Вт авг 11, 2009 5:17 am

Re: и снова wwGenericSQLGrid + InTouch

Сообщение dream84 » Вт янв 24, 2017 5:33 pm

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

След.

Вернуться в Другое

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2