TQueryの再利用

解決


パクリマン  2005-08-12 02:35:17  No: 16993

フォームに貼り付けたTQueryに対して動的にTQueryのDatabaseNameを設定した場合、
初回はばっちり動くのですが2度目のDatabaseNameの設定に対して「データベース
が開かれているため、この操作はできません」とぐずります。しかし。データベー
スは開いたままにしておきたいのです。
どうにかして、2度目以後もうまくやる方法をご存知ありませんか?
*改行変ですね


AY  2005-08-12 04:36:41  No: 16994

開いたままにして置きたいのに、再利用したいとは?
意図が見えませんが、
例えば、DBGridに表示していて
TQueryを閉じて、設定しなおして、開く一連の操作の間に
問題が発生する事は無いと思うのですが、開いたままにしておく
のは、何のためでしょう?
いずれにしても  開いたままでDatabasenameを設定しなおすことは
できません。


パクリマン  2005-08-12 04:42:41  No: 16995

説明が半端でした。
一つのTQueryでAccessを開き問い合わせ、そのままMySQLを開いて問い合わせ
という感じです。  もちろんそれぞれのTDatabaseオブジェクトは保存状態です。


HOta  2005-08-12 05:22:46  No: 16996

TQueryは一度閉じないとDataBaseの設定はできません。
簡単なので、別のTQueryを使えばいかがですか?


パクリマン  2005-08-12 05:27:15  No: 16997

HOtaさん、HOtaさんありがとうございます。
お二人の見解が一致してということは、いくらがんばってもTQueryを破棄しないと
だめということですね。
了解しました。


AY  2005-08-12 06:27:16  No: 16998

破棄しなくても、一旦閉じて利用することは問題ないですよ。


パクリマン  2005-08-12 06:47:40  No: 16999

>破棄しなくても、一旦閉じて利用することは問題ないですよ。
TQueryを閉じるですか?  Close; Active:=falseともだめなのですが...。


HOta  2005-08-12 17:44:13  No: 17000

TQueryを閉じれば、TDataBaseの変更はできます。

>Close; Active:=falseともだめなのですが...。

は閉じれないのですか?


パクリマン  2005-08-12 18:32:32  No: 17001

>TQueryを閉じれば、TDataBaseの変更はできます。

HOtaさんありがとうございます。
TQueryを閉じる(Active:=false or Close)ことはできますが、その直後に
TQuery:DatabaseNameに対して2度目(最初とは違うデータベース名)の設定が行えないのです。
私の環境ではできないということでしょうかね。


HOta  2005-08-12 23:07:33  No: 17002

ちょっとやってみました。
MySQLが無いので、InterBaseとAccessをそれぞれ
BDEに設定して
DataBase1にInterBaseをDataBase2にAccessを設定しました。
どちらもConnectはTrueです。
問題なく動きます。

procedure TForm1.Button2Click(Sender: TObject);
begin
  with Query1 do
  begin
    Close;
    DatabaseName :=  Database1.DatabaseName;
    with SQL do
    begin
      Clear;
      Add('SELECT FIRST_NAME, LAST_NAME');
      Add('FROM EMPLOYEE');
    end;
    Open;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  with Query1 do
  begin
    Close;
    DatabaseName :=  Database2.DatabaseName;
    with SQL do
    begin
      Clear;
      Add('SELECT *');
      Add('FROM T_コースマスタ');
    end;
    Open;
  end;
end;


パクリマン  2005-08-13 02:12:23  No: 17003

本当ですね、ちゃんと問題なく動作しますね。
私のコードか設定に問題があるのかもしれませんね。

HOtaさん、ありがとうございました。
デバッグしてみます。


パクリマン  2005-08-13 02:12:24  No: 17004

本当ですね、ちゃんと問題なく動作しますね。
私のコードか設定に問題があるのかもしれませんね。

HOtaさん、ありがとうございました。
デバッグしてみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加