TIBQueryのSQLプロパティに実行時SQL文をわりあてるには?


くじら  2007-06-27 17:34:19  No: 26851  IP: 192.*.*.*

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はお粗末(ワード間の連携がまるでない)せめてサンプルでもあれば助かるのですがどなたか推薦ものはないでしょうか。これではわざわざ利用するひとはすくないでしょうね。

編集 削除
igy  2007-06-27 18:27:24  No: 26852  IP: 192.*.*.*

with Rpt_printForm.rep_PrintForm.IBQuery1 do
の rep_PrintForm と
    rep_PrintForm := Trep_PrintForm.Create(self);
の rep_PrintForm は同じものですか?それとも別のものですか?

編集 削除
くじら  2007-06-28 08:55:15  No: 26853  IP: 192.*.*.*

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;
でした

編集 削除
igy  2007-06-28 09:12:53  No: 26854  IP: 192.*.*.*

↑で、正しく動作したのですか?

編集 削除
サンプー  2007-06-28 09:46:36  No: 26855  IP: 192.*.*.*

私の場合ですが、
①IBQueryのSQLプロパティーに基本のSQLを設定しておく。
②データモジュールを作成時に、TStringList(DefaultSQLをPublicに宣言)をCreateし、Assignしておく。
③データモジュール廃棄時にDefaultSQLをFreeする
の構文をまず作成します。

以下、必要な時に
with DM.IBQuery do
 begin
 close;
 SQL.clear;
 SQL.Add(必要なSQL文)
  ・・・
  ・・・
  ・・・
  Open;
 end;
を記載して、行っています。

編集 削除