2017-10-06 25 views
0

私は、SQLLiteデータベースに接続するTFDConnectionを持つデータモジュールを持っています。データモジュールに接続するフォームのTFDQueryに関する問題

datamoduleのクエリはうまく動作します。 trueにアクティブを設定するとき、私はDataModuleの上のコネクションに接続するフォーム上のクエリを持っている場合しかし、私はエラーを取得する:

exception message : [FireDAC][Comp][Clnt]-512. Connection is not defined for [FDQuery1]. Possible reason: Connection and ConnectionName property values

これは、設計時に起こります。

これは、Delphi東京でFiremonkeyモバイルアプリにあります。

+0

このエラーは設計時に発生すると言われていますが、実行時にクエリを開く直前にdmのFDConnectionをFDQueryに割り当てるとどうなりますか? – MartynA

+0

MartynAの言うことをやることはうまくいくはずです。とにかく、これが実行時にも発生した場合は、データモジュールがまだインスタンス化されていないため、フォームを作成する前にdprで作成する必要があります。設計時のみであれば、使用リストにDMユニットがあることを確認し、データモジュールのdfmを開こうとします。接続がアクティブであるかどうかをチェックしてください。 –

答えて

2

これは、Delphi Seattleと東京(10.2)の間で導入されたFireDAC(またはIDE)バグかもしれないと思います。私は次のように私はそれを再現することができた:

  1. シアトルで新しいマルチデバイス(FMX)プロジェクトを作成します。

  2. データモジュールをプロジェクトに追加し、FDConnectionをプロジェクトに追加します。私は、MSSQLドライバを使用するようにFDConnectionを設定し、OS認証、ローカルSql Server、および既存のデータベースを使用するように接続を設定しました。私はLoginPromptをfalseに設定しました。

  3. フォームにFDQuery1を追加し、データモジュールのユニットをUSE形式にしてから、FDql1の接続をdatamoduleに設定し、Sqlとして「select * from mytable」を追加しました。次に、OIでFDQuery1.Activeをtrueに設定します。 FDQuery1は苦情なく開かれました。 FDQuery1.Activeをfalseにリセットし、プロジェクトを保存して閉じました。

  4. 私はシアトルを閉鎖し、東京を開始してプロジェクトを開いた。 FDQuery1.Activeをtrueに設定すると、報告したのとまったく同じ例外メッセージが表示されます。興味深いことに、OIはTrueを表示するためにFDQuery1.Activeを更新します。

  5. 次に、FDQuery1.Activeをfalseに設定してtrueに設定し、例外はではなく、になりました。

  6. 私は東京を閉じて再開しましたが、プロジェクトを再オープンしましたが、初めてFDQuery1.Activeをtrueに設定しましたが、もう一度例外が発生します。

上記の手順をEmbaへの問題報告に含めることは大歓迎です。 Btw、私はプロジェクトの実行時の動作を調査する時間を費やさなかった。

推測すれば、IDEのどこかに問題があります。これは、FDConnectionがFDQuery1を開くために必要な接続を確立できるように、データモジュールのインスタンスを作成する必要があるときに現れます。そうだとすれば、実行時の動作には影響しないはずですが、私が言うように、私はそれを調べていません。私が正しいとすれば、大きな問題ではなく迷惑だと思う。

更新:この問題はFMX固有のようです。新しい東京VCLプロジェクトで手順1〜3を繰り返しましたが、FDQuery1.Activeが初めてtrueに設定されても、例外+エラーメッセージは発生しません。

更新#2:この問題は、実行時に簡単に再現できます。あなたが行う必要があるのは、プロジェクトのフォームからデータモジュールを削除することだけです。リストを自動作成し、実行時にデータモジュールが作成される前にFDQueryを開こうとします。明らかに、回避策は、FDQueryを開く前にデータモジュールが存在するかどうかを確認し、そうでない場合はコードで作成することです。

実際のアプリケーションでは、TDataSetのActiveプロパティ設定をIDEで使用してデータセットを開き、常にコードで開くことはできません。 Delphiの初期の段階では、実行時に別のモジュールに配置されたdb接続や同様のものを参照するデータセットやデータソースの設計時の設定に問題があるように見えることがよくありました。

+1

@Victoria:それはあなたに非常に寛大でした! – MartynA

関連する問題