IBconnection1.connected
Модератор: Модераторы
- pi1
- новенький
- Сообщения: 59
- Зарегистрирован: 19.04.2012 18:11:24
- Откуда: г.Зеленокумск
- Контактная информация:
IBconnection1.connected
Веду проект со многими формами. При редактировании полей компонент на одной из форм на главной форме в компоненте IBconnection1.connected ставится true автоматом и остается там в true пока "ручками" не переведу в false в свойствах компоненты или не изменю главную форму. То есть при компиляции эта компонента остается соединенной с датасетом, что не правильно. Где поставить птичку, чтобы при пересборке проекта IBconnection1.connected ставилось в false автоматически? Версия Lazarus 1.0.6
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Честно говоря, не понял проблемы. Ну вставьте в oncreate вашей формы IBconnection1.connected := false ...
- pi1
- новенький
- Сообщения: 59
- Зарегистрирован: 19.04.2012 18:11:24
- Откуда: г.Зеленокумск
- Контактная информация:
Ага, для приложения с одной формой у меня так и делается. А тут у меня десяток форм и на каждой по компоненте SQLQuery, которая ссылается на главную форму. И не проходит ни connected := false , ни Close ни CloseDatasets c ProccessMessages. Как запускаю на другой машине (если забыл в false до компиляции поставить) то имею ошибку "DoInternalConnect:I/O error......".
pi1 писал(а): То есть при компиляции эта компонента остается соединенной с датасетом, что не правильно. Где поставить птичку, чтобы при пересборке проекта IBconnection1.connected ставилось в false автоматически?
никак, а точнее это зависит от используемого набора компонент.
более современные компоненты (например на делфе) учитывают что активация дб подключения произошло в дизайнтайме и НЕ напрямую через свойство Connected.
кароче подшаманить надо, property Connected stored IsStoredConnected (или как там) написать надо и патч отправить
Добавлено спустя 8 минут 38 секунд:
посмотрел
Код: Выделить всё
TDatabase = class(TCustomConnection)
...
published
property Connected: Boolean read FConnected write SetConnected;
вот тут надо умный stored написать
и зачем только datamodule придумалиА тут у меня десяток форм и на каждой по компоненте SQLQuery, которая ссылается на главную форму.
Пересмотрите логику приложения.
- pi1
- новенький
- Сообщения: 59
- Зарегистрирован: 19.04.2012 18:11:24
- Откуда: г.Зеленокумск
- Контактная информация:
Уже пересмотрел, я с датамодуля начинал. Когда количество форм и SQLQuery перевалило за 50, то отказался (я там поскромничал, про 10 написал). Конечно правильней было б не отказываться и одни и те же SQLQuery использовать для разных целей, переназначая и пересоздавая набор полей на лету. Но это как то не сложилось. Мне понятней работать "в лоб" чем по ссылкам. Легче осмысливать логику работы приложения. Особенно когда писать приходится прогу для пользователей женского пола. Возможно в этом году займусь оптимизацией проекта, а пока жизнь диктует свои задачи.
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Не в состоянии понять, какое отношение SQLQuery имеет к IBconnection - у вас, что IBconnection1 на каждый SQLQuery свой???
- pi1
- новенький
- Сообщения: 59
- Зарегистрирован: 19.04.2012 18:11:24
- Откуда: г.Зеленокумск
- Контактная информация:
Есть одна компонента IBconnection и SQLQuery на каждой форме свой (свои). Если б я изначально работал не через компоненты доступа к БД, а использовал бы выборку через SQLQuery в TStrings с последующим выводом в строковые компоненты, то это было б правильно. Точно также и с вводом и изменениями в БД. Сначала работа со строковыми компонентами и потом через SQLExecute, то тоже было б правильнее. Но проект начинался с нескольких формочек ( а в свойствах компонент БД так много удобств и вкусностей), что я и увяз в этом всем. Когда в дизайнтайм рядом с табличкой на форме свой SQLQuery, со своим набором полей, то легче осмысливать работу подсистем проекта. Но к теме это имеет отношение только потому, что если и IBconnection и SQLQuery находятся в одном модуле, то при компиляции IBconnection отваливается от дизайнтайм-БД , а у меня нет. Если я откомпилировал с открытым датасетом, то после, в runtime, эта компонента ищет эту самую базу и отключить дизайтайм-БД можно только после того, как IBconnection ее найдет. Ессно на другом ПК прога просто не загружается. Так вот я искал, где настроить в IDE или закрытие коннекта или предупреждение, что коннект не закрыт при компиляции. Не нашел такого и просто вставил в своем проекте такое предупреждение.
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
О боже! А что мешает вставлять в oncreate каждой формы проверку на коннекшн??? Одна строчка, пусть хоть у вас там 100500 форм...
