Clarion 5.5 EE & ODBC & Sybase Asa 9

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
AlexSmile
Посетитель
Сообщения: 46
Зарегистрирован: 14 Ноябрь 2005, 20:38
Откуда: Молдавия

Clarion 5.5 EE & ODBC & Sybase Asa 9

Сообщение AlexSmile »

Добрый день всем!
У меня есть проект, он не мой, но я его поддерживаю, есть исходный текст. Это проект (складская программа) разбит на несколько DLL (около 10шт.) и каждая DLL иммет свой словарь. Файлы в некоторых DLL пересекаются (т.е. один и тот же файл описан в разных словарях).
Этот проект работал ранее на Btrieve 6.15 for win. Затем я сменил Btrieve на Pervasive (но не SQL, а файловый вариант.).

И решил попробывать проект перенести на SQL.
Я взял за СУБД Sybase Asa 9 т.к. очень хорошо ее знаю. Переделал в словарях драйверы данных - вместо Btrieve указал ODBC. В owner указал имя источника ODBC; логин ; пароль.
Проект запустился и работает.
НО...
Есть проблема если запущено окно из DLL №1, а логика лежит в DLL№2 то программа слетает с ошибкой
****************************************
[Resource governor for 'prepare statements' exceeded (S1000)] при
считывании записи файла ...
****************************************



Поискав в интернете я нашел следующее:
*********************************************
Хоть я и не знаю ASP, но могу точно сказать, что дело не в сервере, а
ASP и Вашем коде на нем. Во первых нужно посмотреть, не стоит ли на OLE DB соединении флаг "Asynchronous", означающий синхронное выполнение запросов, где соединение посылает запрос на сервер и не дожидаясь его выполнения передает управление обратно приложению для дальнейшей работы. Во вторых открываете ли Вы для каждого соединения в ASP отдельную сессию работы с СУБД или же пытаетесь работать через один коннект ? В случае попытки работы всех параллейных соединений клиентов ASP через одно соединение с БД Вы и получите как раз такую ошибку. Правильным может быть только организация на каждого клиента ASP собственного соединения с БД.
**********************************************
т.е. (как я понял) каждая DLL проекта имеет (или пытается иметь)свое подключение к базе и при работе с базой нескольких DLL и вылезает эта ошибка.
Есть ли способ как-нибудь это обойти?
Или мне все таки придется собрать все DLL в один проект?

С ув. Александр
Александр
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: Clarion 5.5 EE & ODBC & Sybase Asa 9

Сообщение Andrew™ »

AlexSmile писал(а):т.е. (как я понял) каждая DLL проекта имеет (или пытается иметь)свое подключение к базе и при работе с базой нескольких DLL и вылезает эта ошибка.
Есть ли способ как-нибудь это обойти?
Или мне все таки придется собрать все DLL в один проект?

С ув. Александр
для удержания и использования одного соединения в приложении необходимо в первом потоке (APPLICATION) открыть файл без атрибута THREAD, и все остальные файлы, у которых OWNER (строка соединения), будет совпадать с OWNER этого файла, они будут открываться в том же потоке
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Сообщение lsgsoftware »

По своему опыту могу сказать. Если DLL завязаны на разные словари, то проблемы будут всегда вылезать в самое неподходящее время. Уж лучше переписать код и жить спокойно.
Аватара пользователя
AlexSmile
Посетитель
Сообщения: 46
Зарегистрирован: 14 Ноябрь 2005, 20:38
Откуда: Молдавия

Сообщение AlexSmile »

В догонку.
Пересобрал проект в одну app. Для того чтобы попробывать откомпилировать. Так эта app стала весить около 12,5 мб. Кларионовский компилятор компилит часть модулей (их около 70), затем перестает работать. Не зависает, а просто перестает. Кнопки на окне копилятора "OK" и "Cancel" работают.
Приходится выгружать Кларион. Затем из памяти выгружать c55srx.exe, затем снова запускать Кларион и он показвает (и то не всегда с первого раза) мне ошибку компилятора, с которой я уже могу разобраться.
Может подскажет кто-нибудь что в таких случаях делать.
Более мелкие проекты компилятся на ура.

Использую c5.5 EE.
Машина Pentium 4 2.2 G, RAM 512, HDD SATA 120gb.
WIn2k sp4
Александр
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

AlexSmile писал(а):В догонку.
Пересобрал проект в одну app. Для того чтобы попробывать откомпилировать. Так эта app стала весить около 12,5 мб. Кларионовский компилятор компилит часть модулей (их около 70), затем перестает работать. Не зависает, а просто перестает. Кнопки на окне копилятора "OK" и "Cancel" работают.
Приходится выгружать Кларион. Затем из памяти выгружать c55srx.exe, затем снова запускать Кларион и он показвает (и то не всегда с первого раза) мне ошибку компилятора, с которой я уже могу разобраться.
Может подскажет кто-нибудь что в таких случаях делать.
Более мелкие проекты компилятся на ура.

Использую c5.5 EE.
Машина Pentium 4 2.2 G, RAM 512, HDD SATA 120gb.
WIn2k sp4
я переводил проект одна APP > 600 модулей на несколько APP-DLL, что большая, что маленькие собираются - компиляться нормально

только вот я не пойму, ты утверждал что у тебя APP-DLL были со своими DCT, как же ты умудрился слить всё в один APP, а значит все DCT тоже в один DCT
Аватара пользователя
AlexSmile
Посетитель
Сообщения: 46
Зарегистрирован: 14 Ноябрь 2005, 20:38
Откуда: Молдавия

Сообщение AlexSmile »

Так я взял все словари и пробежался по ним и добавил в один - все файлы вместе со связями со всех словарей.
И у меня получилось собрать все апп в одну, через импорт фром апп...

Так что мне сделать с компиляцией? Куда копать?
Спасибо!
Александр
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

AlexSmile писал(а):Так я взял все словари и пробежался по ним и добавил в один - все файлы вместе со связями со всех словарей.
И у меня получилось собрать все апп в одну, через импорт фром апп...

Так что мне сделать с компиляцией? Куда копать?
Спасибо!
попробуй результирующий APP и DCT выгрузить соответсвеннов TXA и TXD

создай заново пустой DCT и APP и залей туда эти файлы
Ответить