Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

При компиляции приложения закрываются все IBDataSet? [D6, IB6.x]


Страницы:   1 2 3 4

miwa ©   (2004-05-06 03:28:00) 

В дизайн-тайм я вижу свои запросы ( Grid.DataSource.DataSet.Active = true), а как только запускаю программу - все гриды девственно чисты ( Grid.DataSource.DataSet.Active := true). Использую IBX+EhLib. Это какие-то общие грабли, или я свои собственные изобрел?
Да. В FormCreate специально закомментировал процедуры, которые проводят загрузку данных - все равно после компиляции все гриды пустые.


div   (2004-05-15 16:02:00) [1]

совет: в будущем постарайся быть просто внимательней...
успеха...


miwa   (2004-05-14 17:08:00) [2]

Что же. Отругался. А теперь обьясню где была фантастика. В процедуре
procedure CheckDB(DataBase:TIBDataBase;path:string);раньше было if connected then exit;, а потом я почему-то исправил на Connected:=false;.
И всего-то!!!
Три дня самостоятельных поисков, мля!
Два дня напряга людей на форуме, мля!
Потом еще два дня самостоятельных поисков, мля!
И все из-за одной строки! МЛЯ!!!!!
А вот теперь обьясните мне, пожалуйста,почему? Почему эта замена призвела к тому, что база перестала грузится?
Да. Кстати. Регулярный бекап рулит ;о)).


Miwa   (2004-05-12 18:51:00) [3]

Ну, это даже не фантастика. Конечно true.


div   (2004-05-12 18:34:00) [4]

DataSource.Enabled = True?


miwa   (2004-05-12 18:12:00) [5]

Отдохнул, подумал, успокоился ;о)).
Нет, связка нигде не изменяется. DisableControls нигде не вызывается.


> когда не остается логичных вариантов надо проверять фантастические
> )))

А вот кто скажет, что делать, когда проверены фантастические варианты?


div   (2004-05-12 15:24:00) [6]

А может где-то вызывается DisableControls?


div   (2004-05-12 15:20:00) [7]

а как насчет связки DataSet -> DataSource -> DBGridEh? Нигде не изменяется?
когда не остается логичных вариантов надо проверять фантастические )))


Miwa   (2004-05-12 15:10:00) [8]

Да. Еще на тему уверенности о наличии данных:
   for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
     if dtmData.ibdFiles.DataSets[i] is TIBDataSet then
     begin
       dtmData.ibdFiles.DataSets[i].Active:=true;
       if dtmData.ibdFiles.DataSets[i].RecordCount <=0 then
         raise exception.Create('Dataset empty: '+dtmData.ibdFiles.DataSets[i].Name);

while not dtmData.ibdFiles.DataSets[i].Eof do
begin
s:=s+dtmData.ibdFiles.DataSets[i].Fields[1].AsString+#13#10;
dtmData.ibdFiles.DataSets[i].Next;
end;


S после всего этого равно списку файлов, которые есть в таблице...


miwa   (2004-05-12 14:42:00) [9]


> А заглянуть в реализацию Open не судьба?

procedure TDataSet.Open;
begin
 Active := True;
end;

Жаль что нет смайлика, обозначающего покраснение ;о)).


> для полной уверенности что у тебя есть данные в датасетах...

   for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
     if dtmData.ibdFiles.DataSets[i] is TIBDataSet then begin
       dtmData.ibdFiles.DataSets[i].Active:=true;
       if dtmData.ibdFiles.DataSets[i].RecordCount <=0 then
         raise exception.Create('Dataset empty: '+dtmData.ibdFiles.DataSets[i].Name);
     end;

Ну, увереность-то есть, так как никаких меседжей нет...
Продолжая тему смайликов
:o((   :'o((  :oE


div   (2004-05-12 14:20:00) [10]

наврал... ))) извиняюсь


div   (2004-05-12 14:18:00) [11]

кстати о птичках (с)... только что посмотрел - процедура ShowMessage(...) - не отображает сообщение при вызове в обработчике OnCreate главной формы (а у тебя по сути так и есть)... так что не факт что у тебя нет исключений!!!


div   (2004-05-12 14:09:00) [12]

ну допустим этот код и не должен вызывать исключения... а вообще для уверенности - убери пока блок try ... except, и оставь только открытие датасетов; и сделай следующее:

dtmData.ibdFiles.DataSets[i].Active:=true;
if dtmData.ibdFiles.DataSets[i].RecordCount <= 0 then
 raise Exception.Create('Datataset emty: ' + dtmData.ibdFiles.DataSets[i].Name);

это для полной уверенности что у тебя есть данные в датасетах...


Плохиш   (2004-05-12 14:09:00) [13]

>miwa ©   (12.05.04 14:01) [57]

>          dtmData.ibdFiles.DataSets[i].Active:=true;
>          dtmData.ibdFiles.DataSets[i].Open;//а ведь он уже
> открыт!!!
>        except
>          on err: exception do showmessage(err.message);
>        end;
>
> И все же исключения не увидел.

А заглянуть в реализацию Open не судьба?


miwa   (2004-05-12 14:01:00) [14]

Э нет, все же не DBGridWEh!!!
Значит так: бросил на форму обычний грид, указал ему датасорс с датасетом - тоже пустой.
Дальше. Сделал явно ошибочный код:
   for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
     if dtmData.ibdFiles.DataSets[i] is TIBDataSet then
       try
         dtmData.ibdFiles.DataSets[i].Active:=true;
         dtmData.ibdFiles.DataSets[i].Open;//а ведь он уже открыт!!!
       except
         on err: exception do showmessage(err.message);
       end;

И все же исключения не увидел.
Так что проблема все же в наборах данных.
Только вот где?..
Мля!..


div   (2004-05-12 13:55:00) [15]

в чем я сильно сомневаюсь... )))


miwa   (2004-05-12 13:53:00) [16]

Значит, проблемы з DBGridEh... Плохо.
Всем спасибо за помощь, иду играться дальше.
Проблемма пока остается открытой, если кто чего надумает - буду очень рад.


div   (2004-05-12 13:34:00) [17]

смотри нигде по коду не вызывается Transaction.Commit или Transaction.Rollback? Не закрывается ли соединение? Проверь IdleTimer у Transaction (у Database вроде проверил). Если с DB компонентами все впорядке, и DataSet'ы заполнены, значит проблемы с  DBGridEh...


miwa   (2004-05-12 13:05:00) [18]

Блин. Торможу. Да, так и писали, извините.
И все же мы немножко отвлеклись, Вы не считаете?


div   (2004-05-12 13:03:00) [19]

Хэлп. Цитирую: "Avoid using ClassType in application code."


div   (2004-05-12 13:01:00) [20]

> Кстати, если убрать .ClassType - тогда все ок:
> if frmMain is TForm then showmessage('well..');

кстати его и надо было убрать... внимательно смотри как тебе писали...


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо