WinXP及びDElphi6でデータベースアプリを作ってみようとしている入門者です。DElphiにはデータモジュールというものがありデータベースの一元管理ができることを知りました。 そこでDataModuleにTIBDatbase、TIBTransaction、TIBDataset、TIBDatasourceを貼り付け、レポートにはIBQuery1を貼り付けて、おのおのオープンします。
DBはInterBaseですでにテストデータをセットしてあります。
SQLを使ってフォームとレポートを作ろうとしていますが。
以下のレポート作成(フォームも同様)でつまずいています。どなたかご教授ください。
with Rpt_printForm.rep_PrintForm.IBQuery1 do
begin
close;
SQL.Clear;
SQL.LoadFromFile(FilePath + 'namaejyun.txt');
open;
end;
rep_PrintForm := Trep_PrintForm.Create(self);
FormPanel2.FormName := 'Rpt_Printform';
rep_PrintForm.SyosekimeijyunRep.Preview;
except
rep_PrintForm.Free;
end;
Rpt_printForm.rep_PrintForm.IBQuery1.Close;
end;
問題点:レポート上のIBQuery1のSQLプロパティにSQL文(namaejyun.txt)がセットされない(デバッグでSQLプロパティをみても中は空白です)。
余談ですがDelphiのティピカルなデータベースアプリケーションのサンプルはないのでしょうか。Helpはお粗末(ワード間の連携がまるでない)せめてサンプルでもあれば助かるのですがどなたか推薦ものはないでしょうか。これではわざわざ利用するひとはすくないでしょうね。
with Rpt_printForm.rep_PrintForm.IBQuery1 do
の rep_PrintForm と
rep_PrintForm := Trep_PrintForm.Create(self);
の rep_PrintForm は同じものですか?それとも別のものですか?
igyさん、すみません記述が間違っていました。
正しくは
with DataModule1.IBQuery1 do
begin
close;
SQL.Clear;
SQL.LoadFromFile(FilePath + 'namaejyun.txt');
open;
end;
rep_PrintForm := Trep_PrintForm.Create(self);
FormPanel2.FormName := 'Rpt_Printform';
rep_PrintForm.SyosekimeijyunRep.Preview;
except
rep_PrintForm.Free;
end;
DataModule1.IBQuery1.Close;
end;
でした
↑で、正しく動作したのですか?
私の場合ですが、
①IBQueryのSQLプロパティーに基本のSQLを設定しておく。
②データモジュールを作成時に、TStringList(DefaultSQLをPublicに宣言)をCreateし、Assignしておく。
③データモジュール廃棄時にDefaultSQLをFreeする
の構文をまず作成します。
以下、必要な時に
with DM.IBQuery do
begin
close;
SQL.clear;
SQL.Add(必要なSQL文)
・・・
・・・
・・・
Open;
end;
を記載して、行っています。
ツイート | ![]() |