フォームに貼り付けたTQueryに対して動的にTQueryのDatabaseNameを設定した場合、
初回はばっちり動くのですが2度目のDatabaseNameの設定に対して「データベース
が開かれているため、この操作はできません」とぐずります。しかし。データベー
スは開いたままにしておきたいのです。
どうにかして、2度目以後もうまくやる方法をご存知ありませんか?
*改行変ですね
開いたままにして置きたいのに、再利用したいとは?
意図が見えませんが、
例えば、DBGridに表示していて
TQueryを閉じて、設定しなおして、開く一連の操作の間に
問題が発生する事は無いと思うのですが、開いたままにしておく
のは、何のためでしょう?
いずれにしても 開いたままでDatabasenameを設定しなおすことは
できません。
説明が半端でした。
一つのTQueryでAccessを開き問い合わせ、そのままMySQLを開いて問い合わせ
という感じです。 もちろんそれぞれのTDatabaseオブジェクトは保存状態です。
TQueryは一度閉じないとDataBaseの設定はできません。
簡単なので、別のTQueryを使えばいかがですか?
HOtaさん、HOtaさんありがとうございます。
お二人の見解が一致してということは、いくらがんばってもTQueryを破棄しないと
だめということですね。
了解しました。
破棄しなくても、一旦閉じて利用することは問題ないですよ。
>破棄しなくても、一旦閉じて利用することは問題ないですよ。
TQueryを閉じるですか? Close; Active:=falseともだめなのですが...。
TQueryを閉じれば、TDataBaseの変更はできます。
>Close; Active:=falseともだめなのですが...。
は閉じれないのですか?
>TQueryを閉じれば、TDataBaseの変更はできます。
HOtaさんありがとうございます。
TQueryを閉じる(Active:=false or Close)ことはできますが、その直後に
TQuery:DatabaseNameに対して2度目(最初とは違うデータベース名)の設定が行えないのです。
私の環境ではできないということでしょうかね。
ちょっとやってみました。
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;
本当ですね、ちゃんと問題なく動作しますね。
私のコードか設定に問題があるのかもしれませんね。
HOtaさん、ありがとうございました。
デバッグしてみます。
本当ですね、ちゃんと問題なく動作しますね。
私のコードか設定に問題があるのかもしれませんね。
HOtaさん、ありがとうございました。
デバッグしてみます。
ツイート | ![]() |