![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
При компиляции приложения закрываются все IBDataSet? [D6, IB6.x]
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?