Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Вниз

При компиляции приложения закрываются все IBDataSet?   Найти похожие ветки 

 
miwa ©   (2004-05-06 03:28) [0]

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


 
Johnmen ©   (2004-05-06 09:01) [1]

>или я свои собственные изобрел?

Ага. Это они, Active = true в дизайн-тайм


 
miwa ©   (2004-05-06 09:03) [2]

А что такого? Я подсоединил датасеты в дизайнтайме только чтобы убедится что у меня есть коннект с базой. А активны они или нет - на результат это не влияет. Результат нехороший. :о((


 
Johnmen ©   (2004-05-06 09:13) [3]

>А что такого?
>Я подсоединил датасеты в дизайнтайме только чтобы убедится ...

Убедился - отсоедини. В смысле, закрой.
Коннект и оупен в ран-тайме.


 
miwa ©   (2004-05-06 09:28) [4]

Так и делаю. Все равно все датасеты пустые.


 
Соловьев ©   (2004-05-06 09:34) [5]


> Да. В FormCreate специально закомментировал процедуры, которые
> проводят загрузку данных - все равно после компиляции все
> гриды пустые.

Интересно какие? Может ты транзакции закрыл?


 
Miwa ©   (2004-05-06 10:36) [6]

Не закрывал я транзакций. Тоесть, не так.
Как при закоментированных строках загрузки базы данных так и при разкоментированных; как при установленных active=true в дизайнтайме так и при неустановленных результат один и тот же:
в дизайнайм я могу видеть данные, которые получают соответствующие датасеты, а в рантайм - нет.
Какой код приводить? (в том смысле, что если надо код я приведу, весь и сразу не привожу из-за немаленьких размеров последнего).


 
Соловьев ©   (2004-05-06 10:41) [7]


> Miwa ©   (06.05.04 10:36) [6]

создай новое приложение кинь туда джентельменский набор: датабейс, транзакцию и датасет и попробуй открыть одну таблицу. и запусти. если все ок - то смотри что ты там мадурил(телепатов нет и сказали что не будет их больше), если не появятся - может патч поможет. брать на www.ibase.ru


 
Tomkat   (2004-05-06 11:29) [8]

Вот тебе пример:
есть форма, на ней IBDatabase, IBTransaction, IBDataSet, TDataSource, TGrid.
В дизай-тайме IBDataSet.Active:=false;
В ран-тайме   по собтию MyForm.OnShow

                         Begin
                             ibDataSet.Open;
                          End

             по собтию MyForm.OnClose
     
                         Begin
                             ibDataSet.close;
                          End ;

Я так всегда творю и проблем никаких ...
если я правильнопонял твою проблему ..


 
Кщд ©   (2004-05-06 14:02) [9]

Tomkat   (06.05.04 11:29) [8]
каждый раз при Visible=true открывать набор - не есть хорошо в общем случае, имхо.


 
Кщд ©   (2004-05-06 14:03) [10]

Tomkat   (06.05.04 11:29) [8]
каждый раз при Visible=true открывать набор - не есть хорошо в общем случае, имхо.


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

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


 
Miwa ©   (2004-05-06 17:43) [12]

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

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

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


 
Miwa ©   (2004-05-06 21:03) [13]

Нет, ничего таки не нашерстил. Так что все же прошу еще раз помощи. Код для 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-11 13:20) [14]

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


 
Fay ©   (2004-05-11 13:57) [15]

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


 
miwa ©   (2004-05-11 14:21) [16]

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


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

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

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


 
miwa ©   (2004-05-11 14:33) [18]

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


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

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

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


 
miwa ©   (2004-05-11 14:44) [20]

Минут пять назад запустил следующий код:
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:47) [21]


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

SQL.Clear;


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

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

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


> (с SYSDBA на MIVIDEX)?

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


 
Miwa ©   (2004-05-11 14:59) [22]

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

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

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

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

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

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

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

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

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

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


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


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

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


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


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

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


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


> а правда

:) - права


 
miwa ©   (2004-05-11 15:19) [26]

Ага.
Копаю дальше.
В тестовом запросе 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:20) [27]

Ага.
Копаю дальше.
В тестовом запросе 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:27) [28]

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

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

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

Заменить на

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

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


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


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

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


 
miwa ©   (2004-05-11 15:31) [30]

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

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


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

>28
>Заменить на if dtmData.ibdFiles.DataSets[i] is TIBDataSet then
[Error] shared.pas(314): Operator not applicable to this operand type

> выкинуть, для проверки, совсем.
Получил только "Empty SQL statement" для четырех IBQuery, которые заполняются позже.

>или код не выполняется, не забываем.
Тоесть, по F7 выполняется, а по F9 - нет? По F7, кстати, тоже ничего не ругается, но и данных не видно.
Кстати, в 13 я привел фрагменты кода, которые грузят данные. Все они обрамлены try-except-тами, в которых есть showmessage(err.message) или result:=-1. Но ни один из них не срабатывает. Так что код, наверное, выполняется.


 
div ©   (2004-05-11 15:54) [32]

был у меня однажды такой прикол - в Database случайно поставил значение свойства IdleTimer в 10... в дизайне все есть, запускаю - все пусто... долго же я боролся... посмотри может и тебя такая же "беда" )))


 
miwa ©   (2004-05-11 16:06) [33]

Нет, я, наверное, другое свойство поменял ;о)). Вообще-то они у меня дефолтные кроме имени, транзакции и имены БД. А. Еще loginprompt=false, по-дефолту, вроде, нет. :о)).


 
div ©   (2004-05-11 16:15) [34]

заинтересовал меня следующий код:

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]);

открой свою ini-шку и сотри все сохраненные настройки гридов...


 
Miwa ©   (2004-05-11 18:21) [35]

>34
>открой свою ini-шку и сотри все сохраненные настройки гридов.
Нет, не прошло :о((.


 
div ©   (2004-05-11 18:42) [36]

очень похоже что код:

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;

выполняется ДО того как происходит внутреннее связывание DataSet"ов с DataBase. Попробуй поставить в опциях проекта свой дата-модуль (dtmData) ДО главной формы (frmMain)...


 
miwa ©   (2004-05-11 18:54) [37]

>div ©   (11.05.04 18:42) [36]
Я очень благодарен за проявленное внимание, но все же... Вот отрывок из .dpr файла:

 Application.CreateForm(TdtmData, dtmData);
 Application.CreateForm(TfrmMain, frmMain);

Это наверное, то же, что и поставить в опциях проекта свой дата-модуль (dtmData) ДО главной формы (frmMain).
Вопросс открыт.


 
Miwa ©   (2004-05-12 09:37) [38]

Все еще ничего не накопал.


 
div ©   (2004-05-12 09:53) [39]

попробуй
if dtmData.ibdFiles.DataSets[i].ClassType = TIBDataSet then ...
заменить на:
if dtmData.ibdFiles.DataSets[i] is TIBDataSet then ...


 
div ©   (2004-05-12 09:56) [40]

или вообще убери эту проверку - она лишняя...


 
Соловьев ©   (2004-05-12 09:57) [41]


> Miwa ©   (12.05.04 09:37) [38]

кнопки F5, F7 и F8 знаешь?


 
div ©   (2004-05-12 09:59) [42]

поставь брэйкпоинт на строке:
dtmData.ibdFiles.DataSets[i].Open;
и посмотри выполняется ли вообще этот код... дальше будем посмотреть...


 
miwa ©   (2004-05-12 10:24) [43]


> div ©

См. (31).


> Соловьев ©

См. (17-18).


> [42] div ©   (12.05.04 09:59)
> и посмотри выполняется ли вообще этот код...

Выполняется, будь он неладен. Проверял уже.


 
div ©   (2004-05-12 10:32) [44]

[Error] shared.pas(314): Operator not applicable to this operand type.??? Странно у меня все в порядке. А что это за модуль shared.pas???


 
miwa ©   (2004-05-12 10:38) [45]

Это модуль, в котором находятся функции загрузки данных. Он - в одном каталоге с остальными файлами программы. Если быть более точным, то в shared.pas находятся функции LoadDBFiles и CheckDB. FormCreate - в frmMain.pas.
Иду смотрю, почему у меня не в порядке.


 
miwa ©   (2004-05-12 11:08) [46]

Интерессно, а могло так быть, что у меня в shared.pas не подключился модуль system? Извините за возможно тупой вопросс, просто я уже ничего не соображаю. Тем не менее, ошибка Operator not applicable to this operand type никуда не делась. Она же проявляется при любой комбинации скобок вокруг is с операндами и в любом модуле проекта.


 
div ©   (2004-05-12 12:07) [47]

покажи интерфейсную часть модуля shared.pas


 
miwa ©   (2004-05-12 12:16) [48]

unit shared;

interface

uses SysUtils, Classes, IBDatabase, DB, IBCustomDataSet, IBQuery, Buttons,
    CheckLst, Windows, IniFiles, Forms, Graphics, Masks, IB, Controls,
    StrUtils, StdCtrls,
    data, finfo, dialogs, seek;

type
 PnetResourceArr = ^TNetResource;//для сканирования сети
 PList = ^TStringList;           //дополнительно

var
 skin,
 PathProg,
 DefPoster,
 LngFile,
 MiVideoPath,
 FilesDB, FilmsDB:string;

 lang: TStringList;
 //db "films"
 Countries: TIDList;
 Professions: TIDList;
 Zhanres: TIDList;
 //db "files"
 notadded: TStringList;
 files: TIDList;//не ставит, зараза, "Юник" на "варчар (256)"
function LoadLanguage(FileName:string):integer;
procedure ApplyLanguage;
function LoadSettings(FileName:string):integer;
function TryLoadPict(source,numb:string;dest:TBitBtn):integer;
function LoadSkin(SkinDir:string):integer;

function CheckDB(DataBase:TIBDataBase;path:string):integer;
function LoadDBFilms(DataBase:string):integer;
function LoadDBFiles(DataBase:string):integer;
function LoadPathes(dest: TCheckListBox):integer;

function SavePathes:integer;
function SaveSettings(FileName:string):integer;

function GetFileVersion(const FileName: string; separator:char): string;
function GetLANResources(ListRoot:PNetResource; var lst: PList): integer;
procedure SearchMedia;
function TryAddFile(FileName:TFileName):integer;

function AnalizeHTML(sourcefile:string):integer;
procedure SaveListToDB(var src: TIDList; table, f_id, f_name: string);
function GenerateHTML(id:integer):string;
function AnalizeLog(FileName: TFileName;id:integer):integer;

//а это с 7-й версии
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
function IntToTime(i:integer):TDateTime;
function ExtractOnlyFileName(const FileName: string): string;
function MakeItem(input,comment,zhanr:string):string;

implementation

uses main;

//=========================================================================


 
div ©   (2004-05-12 12:45) [49]

а ты нигде случайно не переопредилил тип TIBDataSet? вообще очень странно...
> Тем не менее, ошибка Operator not applicable to this operand type никуда не делась. Она же проявляется при любой комбинации скобок вокруг is с операндами и в любом модуле проекта.
а она "проявляется" при проверке любых классов?


 
miwa ©   (2004-05-12 12:56) [50]

.
> а ты нигде случайно не переопредилил тип TIBDataSet

Нет. И намеренно тоже ;о))


> а она "проявляется" при проверке любых классов?

Да. Во всяком случае, для TForm, TPageControl, TBitBtn, TListBox...
Кстати, если убрать .ClassType - тогда все ок:
if frmMain is TForm then showmessage("well..");
Видим надпись


 
div ©   (2004-05-12 13:01) [51]

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

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


 
div ©   (2004-05-12 13:03) [52]

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


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

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


 
div ©   (2004-05-12 13:34) [54]

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


 
miwa ©   (2004-05-12 13:53) [55]

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


 
div ©   (2004-05-12 13:55) [56]

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


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

Э нет, все же не 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 14:09) [58]

ну допустим этот код и не должен вызывать исключения... а вообще для уверенности - убери пока блок 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) [59]

>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 не судьба?


 
div ©   (2004-05-12 14:18) [60]

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


 
div ©   (2004-05-12 14:20) [61]

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


 
miwa ©   (2004-05-12 14:42) [62]


> А заглянуть в реализацию 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


 
Miwa ©   (2004-05-12 15:10) [63]

Да. Еще на тему уверенности о наличии данных:
   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 после всего этого равно списку файлов, которые есть в таблице...


 
div ©   (2004-05-12 15:20) [64]

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


 
div ©   (2004-05-12 15:24) [65]

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


 
miwa ©   (2004-05-12 18:12) [66]

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


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

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


 
div ©   (2004-05-12 18:34) [67]

DataSource.Enabled = True?


 
Miwa ©   (2004-05-12 18:51) [68]

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


 
miwa ©   (2004-05-14 17:08) [69]

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


 
div ©   (2004-05-15 16:02) [70]

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



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.66 MB
Время: 0.05 c
14-1084995538
Piter
2004-05-19 23:38
2004.06.06
"Семь" ("Seven") с Морганом Фрименом и Бредом Питом


14-1084916190
Тупорылая_молодая_поросль
2004-05-19 01:36
2004.06.06
Хочу в орешник!!!


1-1085133521
man
2004-05-21 13:58
2004.06.06
TDateTimePicker


4-1082863580
_Sh_
2004-04-25 07:26
2004.06.06
Проблема с GetFileSize


3-1084808589
Серг
2004-05-17 19:43
2004.06.06
Лицензия FireBird





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский