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 специально закомментировал процедуры, которые проводят загрузку данных - все равно после компиляции все гриды пустые.


miwa   (2004-05-11 15:31:00) [41]

>25
Конечно что дал.
Говорю - в ИБЭксперте, дизайнтайме и рантайме все одинаково, да только в рантайме нифига не видно.
Может, это ЭхЛиб глючит? Никто ни с чем похожим не встречался?

>модератор
27-й пост - результат ошибки. Тоесть, у меня загрузилась "Internal server error" и я нажал "<--", "Добавить".


Плохиш   (2004-05-11 15:28:00) [42]


> И НИ ОДНОГО СООБЩЕНИЯ!
> Тоесть, датасеты открываются?!?!

или код не выполняется, не забываем.


Плохиш   (2004-05-11 15:27:00) [43]

>miwa ©   (11.05.04 15:20) [27]

Осталось только строчку

>      if dtmData.ibdFiles.DataSets[i].ClassType = TIBDataSet then

Заменить на

    if dtmData.ibdFiles.DataSets[i] is TIBDataSet then

или выкинуть, для проверки, совсем.


miwa   (2004-05-11 15:20:00) [44]

Ага.
Копаю дальше.
В тестовом запросе SQL сделал такой же, как в одном из неработающих датасетов.
И данные вижу, блин! Тоесть, вроде бы проблемма в том, что не открываются сами датасеты в следующих строках (13-й ответ)
  for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
  try
    if dtmData.ibdFiles.DataSets[i].ClassType = TIBDataSet
      then  dtmData.ibdFiles.DataSets[i].Active:=true;
  except
  end;

Но почему?
Поменял приведенный фрагмент на такой:

   for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
     if dtmData.ibdFiles.DataSets[i].ClassType = TIBDataSet then
       try
         dtmData.ibdFiles.DataSets[i].Open;
       except
         on err: exception do showmessage(err.message);
       end;

И НИ ОДНОГО СООБЩЕНИЯ!
Тоесть, датасеты открываются?!?!
Иду вешаться.


miwa   (2004-05-11 15:19:00) [45]

Ага.
Копаю дальше.
В тестовом запросе SQL сделал такой же, как в одном из неработающих датасетов.
И данные вижу, блин! Тоесть, вроде бы проблемма в том, что не открываются сами датасеты в следующих строках (13-й ответ)
  for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
  try
    if dtmData.ibdFiles.DataSets[i].ClassType = TIBDataSet
      then  dtmData.ibdFiles.DataSets[i].Active:=true;
  except
  end;

Но почему?
Поменял приведенный фрагмент на такой:

   for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
     if dtmData.ibdFiles.DataSets[i].ClassType = TIBDataSet then
       try
         dtmData.ibdFiles.DataSets[i].Open;
       except
         on err: exception do showmessage(err.message);
       end;

И НИ ОДНОГО СООБЩЕНИЯ!
Тоесть, датасеты открываются?!?!
Иду вешаться.


Соловьев   (2004-05-11 15:17:00) [46]


> а правда

:) - права


Соловьев   (2004-05-11 15:15:00) [47]


> Сперва добавил нового юзера на сервере, потом поменял параметры
>
>
> соединения (username=sysdba на username=mividex).

а правда ты дал ему? и еще в дизайне SYSDBA?


Соловьев   (2004-05-11 15:04:00) [48]


> Сперва добавил нового юзера на сервере, потом поменял параметры

аа... ты про это :)


Miwa   (2004-05-11 14:59:00) [49]

> 20
Конечно, там я пропустил Next;. С "некстом" все ОК.

Тоесть, я вижу ети чертовы данные. Блин.

>21
>SQL.Clear;
Знаю. Это тестовый запрос.

>Так на всякий случай - а гриді подключены к сорсам?
Да. В дизайн-тайме же все видно.

>И еще - делал как я говорил? новый проект?
Да. В новом проекте - все в порядке.

>а как это? вроде этого нельзя сделать никак :)
Не, ну почему же :о))
Сперва добавил нового юзера на сервере, потом поменял параметры

соединения (username=sysdba на username=mividex).

Программа работает с двумя базами и с "files" я думал, что все

закончил. Поетому, добившись исполнения нужных мне функций я не

смотрел на нее уже с месяц. А когда посмотрел... Вот...


Соловьев   (2004-05-11 14:47:00) [50]


> with dtmData.IBQuery1 do begin
>  SQL.Add('SELECT * FROM files');
>  Open

SQL.Clear;


> Все всюду хорошо, да только данных в гридах как не было,
> так и нет.

Так на всякий случай - а гриді подключены к сорсам?

И еще - делал как я говорил? новый проект?


> (с SYSDBA на MIVIDEX)?

а как это? вроде этого нельзя сделать никак :)


miwa   (2004-05-11 14:44:00) [51]

Минут пять назад запустил следующий код:
with dtmData.IBQuery1 do begin
 SQL.Add('SELECT * FROM files');
 Open;
 s:='';
 while not eof do begin
   s:=s + Fields[0].AsString;
 end;
 showmessage(s);
end;

Жду. Выполняется. В таблице files до сотни записей.
Нет, код так и не зпустился. Скомпилировал приложение, запустил напрямую (не из Дельфи) - заняло 98% рессурсов и все.
Копаю дальше. Не подскажете, куда?
Кстати, могла ли проблема вылезти при смене юзера (с SYSDBA на MIVIDEX)? При том, что в DT и IBExpert та же смена прошла безболезненно.


Плохиш   (2004-05-11 14:37:00) [52]

>miwa ©   (11.05.04 14:33) [18]

тогда одно из двух, или наборы данных пустые, или код открытия их не выполняется.


miwa   (2004-05-11 14:33:00) [53]

Как ни странно ;о)).
Более того, я по Ф7 пробежался по всему коду загрузки программы. И она, сосиска разтакая, ни разу нигде не ругнулась. Все всюду хорошо, да только данных в гридах как не было, так и нет.


Плохиш   (2004-05-11 14:28:00) [54]

>Miwa ©   (06.05.04 21:03) [13]

А Вы вообще знаете для чего в Delphi кнопки F7/F8 существуют?


miwa   (2004-05-11 14:21:00) [55]

Только что проверял. Да. Правда, в DT она была прописана, как .\files.gdb а в RT - полное имя(получаю с ини-файла). Поменял (теперь всюду - полное имя, еще раз повторюсь - правильное), но ничего не помогло.


Fay   (2004-05-11 13:57:00) [56]

А в dt и rt на одну и ту же базу смотрим?


Miwa   (2004-05-11 13:20:00) [57]

Мда.
В горы съездил, отдохнул, вроде, а даже со свежей головой ничего придумать не могу. Помогите нерадивому :о((.


Miwa   (2004-05-06 21:03:00) [58]

Нет, ничего таки не нашерстил. Так что все же прошу еще раз помощи. Код для FormCreate спрощенно выглядит так:
procedure TfrmMain.FormCreate(Sender: TObject);
var err:integer;
begin
 PathProg:=ExtractFilePath(Application.ExeName);
 LoadSettings(PathProg+'mividex.ini');
 LoadLanguage(lang);
 LoadSkin(skin);//skin - это глобальная переменная
 LoadDBFilms(FilmsDB);//так же как и остальные
 LoadDBFiles(FilesDB);//FilesDB='правильный путь к базе'

 for err:=0 to frmMain.ComponentCount-1 do
   if (Components[err].ClassName = 'TDBGridEh')
     then (Components[err] as TDBGridEh).RestoreColumnsLayoutIni(PathProg+'MiVidEx.ini',(Components[err] as TDBGridEh).Name,[crpColWidthsEh]);

 LoadPathes(clbPathes);
 wbbFilms.Navigate('about:blank');
end;


Собственно LoadDBFiles, если спростить, то такая:

function LoadDBFiles(DataBase:string):integer;
var i:integer;
   err: Exception;
begin
 try
    CheckDB(dtmData.ibdFiles, DataBase);
   for i:=0 to dtmData.ibdFiles.DataSetCount-1 do
   try
     if dtmData.ibdFiles.DataSets[i].ClassType = TIBDataSet
       then  dtmData.ibdFiles.DataSets[i].Active:=true;
   except
   end;
   //дальше несущественно
 except
   on err:exception do begin
     result:=-1;
     showmessage(err.Message);
   end;
 end;
end;


Ну и выделенная процедурка:
procedure CheckDB(DataBase:TIBDataBase;path:string);
begin
 with DataBase do begin
   Connected:=false;
   DatabaseName:=path;
   Params.Clear;
   Params.Add('user_name=MIVIDEX');
   Params.Add('password=mividex');
   Params.Add('lc_ctype=WIN1251');
   Open;
   DefaultTransaction.Active:=true;
 end;//with
end;

Вот...
А теперь еще раз вопросс: почему вышенаведенный код не призводит к загрузке базы?


Miwa   (2004-05-06 17:43:00) [59]

> Tomkat   (06.05.04 11:29) [8]
Нет, проблема несколько в ином.

>Карелин Артем ©   (06.05.04 14:05) [11]
Тестирую на Interbase 5.5 на работи и Firebird 1.03 дома. В обеих случаях тот же баг.

Наверное, прав Соловьев - надо 25-й раз код шерстить. Если ничего не накопаю, опять приду жаловаться ;о))


Карелин Артем   (2004-05-06 14:05:00) [60]

Может пользуешься персональным яфелем или внедренным FB?


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

Наверх

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