IBconnection1.connected

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

IBconnection1.connected

Сообщение pi1 » 28.01.2016 13:43:30

Веду проект со многими формами. При редактировании полей компонент на одной из форм на главной форме в компоненте IBconnection1.connected ставится true автоматом и остается там в true пока "ручками" не переведу в false в свойствах компоненты или не изменю главную форму. То есть при компиляции эта компонента остается соединенной с датасетом, что не правильно. Где поставить птичку, чтобы при пересборке проекта IBconnection1.connected ставилось в false автоматически? Версия Lazarus 1.0.6
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: IBconnection1.connected

Сообщение Снег Север » 28.01.2016 21:29:35

Честно говоря, не понял проблемы. Ну вставьте в oncreate вашей формы IBconnection1.connected := false ...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47

Re: IBconnection1.connected

Сообщение pi1 » 29.01.2016 16:41:34

Ага, для приложения с одной формой у меня так и делается. А тут у меня десяток форм и на каждой по компоненте SQLQuery, которая ссылается на главную форму. И не проходит ни connected := false , ни Close ни CloseDatasets c ProccessMessages. Как запускаю на другой машине (если забыл в false до компиляции поставить) то имею ошибку "DoInternalConnect:I/O error......".
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: IBconnection1.connected

Сообщение sts » 29.01.2016 19:27:26

pi1 писал(а): То есть при компиляции эта компонента остается соединенной с датасетом, что не правильно. Где поставить птичку, чтобы при пересборке проекта IBconnection1.connected ставилось в false автоматически?

никак, а точнее это зависит от используемого набора компонент.
более современные компоненты (например на делфе) учитывают что активация дб подключения произошло в дизайнтайме и НЕ напрямую через свойство Connected.
кароче подшаманить надо, property Connected stored IsStoredConnected (или как там) написать надо и патч отправить

Добавлено спустя 8 минут 38 секунд:
посмотрел

Код: Выделить всё
TDatabase = class(TCustomConnection)
...
published
    property Connected: Boolean read FConnected write SetConnected;

вот тут надо умный stored написать
sts
постоялец
 
Сообщения: 455
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Re: IBconnection1.connected

Сообщение pi1 » 30.01.2016 21:24:06

Пока что только контрольку себе поставил. Чтоб не прозевать. В Form1.Create вставил if form1.IBconnection1.Connected=true then showmessage('Ahtung!!');
На большее ума не хватает Ж(
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: IBconnection1.connected

Сообщение pupsik » 31.01.2016 00:27:24

А тут у меня десяток форм и на каждой по компоненте SQLQuery, которая ссылается на главную форму.
и зачем только datamodule придумали :?
Пересмотрите логику приложения.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: IBconnection1.connected

Сообщение pi1 » 31.01.2016 23:27:36

Уже пересмотрел, я с датамодуля начинал. Когда количество форм и SQLQuery перевалило за 50, то отказался (я там поскромничал, про 10 написал). Конечно правильней было б не отказываться и одни и те же SQLQuery использовать для разных целей, переназначая и пересоздавая набор полей на лету. Но это как то не сложилось. Мне понятней работать "в лоб" чем по ссылкам. Легче осмысливать логику работы приложения. Особенно когда писать приходится прогу для пользователей женского пола. Возможно в этом году займусь оптимизацией проекта, а пока жизнь диктует свои задачи.
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: IBconnection1.connected

Сообщение Снег Север » 01.02.2016 09:11:55

Не в состоянии понять, какое отношение SQLQuery имеет к IBconnection - у вас, что IBconnection1 на каждый SQLQuery свой???
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47

Re: IBconnection1.connected

Сообщение pi1 » 01.02.2016 12:18:31

Есть одна компонента IBconnection и SQLQuery на каждой форме свой (свои). Если б я изначально работал не через компоненты доступа к БД, а использовал бы выборку через SQLQuery в TStrings с последующим выводом в строковые компоненты, то это было б правильно. Точно также и с вводом и изменениями в БД. Сначала работа со строковыми компонентами и потом через SQLExecute, то тоже было б правильнее. Но проект начинался с нескольких формочек ( а в свойствах компонент БД так много удобств и вкусностей), что я и увяз в этом всем. Когда в дизайнтайм рядом с табличкой на форме свой SQLQuery, со своим набором полей, то легче осмысливать работу подсистем проекта. Но к теме это имеет отношение только потому, что если и IBconnection и SQLQuery находятся в одном модуле, то при компиляции IBconnection отваливается от дизайнтайм-БД , а у меня нет. Если я откомпилировал с открытым датасетом, то после, в runtime, эта компонента ищет эту самую базу и отключить дизайтайм-БД можно только после того, как IBconnection ее найдет. Ессно на другом ПК прога просто не загружается. Так вот я искал, где настроить в IDE или закрытие коннекта или предупреждение, что коннект не закрыт при компиляции. Не нашел такого и просто вставил в своем проекте такое предупреждение.
Аватара пользователя
pi1
новенький
 
Сообщения: 59
Зарегистрирован: 19.04.2012 18:11:24
Откуда: г.Зеленокумск

Re: IBconnection1.connected

Сообщение Снег Север » 01.02.2016 17:32:21

О боже! А что мешает вставлять в oncreate каждой формы проверку на коннекшн??? Одна строчка, пусть хоть у вас там 100500 форм...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru