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

Вниз

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

 
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.6 MB
Время: 0.034 c
8-1080485596
Forelli
2004-03-28 18:53
2004.06.06
Как вставить эквалайзер в программу


14-1084798394
Kerk
2004-05-17 16:53
2004.06.06
Запуздырить иконку в трей


1-1085541403
din
2004-05-26 07:16
2004.06.06
Здраствуйте! Как можно создать что-то типо органайзера


4-1083244710
Apollo
2004-04-29 17:18
2004.06.06
wcrypt2.pas


1-1084386057
magician_2
2004-05-12 22:20
2004.06.06
Как узнать какой элемент сейчас выбран в ValueListEditore





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский