3

データセット内にデータセットをネストしてから、このデータセットを別のデータセットにネストできるかどうかを知りたいです。Therfore 3 レベルのネスティング。現在、あるデータセットを別のデータセットにネストすることしかできません。3 番目のレベルをネストしようとすると、最初にプログラムをコンパイルしてデータを入力できるときに、データベースが正常に実行されます。その後、プログラムを 2 回目に実行しようとすると、「データパケットの不一致」というメッセージとともに EDBClient によって実行が発生しました。

3 レベルのデータセットを相互にネストすることは可能ですか?

よろしくリアーン

4

2 に答える 2

2

ショートストーリー:

Delphi XEで試してみてください...私の最近のメインプロジェクトでは、これでバグが解決しました。

長い話:

Delphi 2010のデータベース側でエラーが発生した場合、3つ以上のレベルのネストされたデータセットで発生するのと同じ問題に直面しました。

私が頻繁に使用した以前の最後のバージョンは問題なくDelphi2007でした。そのため、Delphi2009またはDelphi2010で不正な動作が発生した可能性があります。

この問題をクライアント側のmidas.dllまで追跡しましたが、MidasLibを使用して静的にmidasをリンクしているかどうかに関係なく発生します。Midasは、サーバーから受信したパケットの形式が正しくないと「考え」、例外を発生させます。この例外は「通常の」エラー調整プロセスを中断するため、エラーからの回復を試みる方法はありません。OnReconcileErrorは発生せず、VCLのこの部分にtry/exceptブロックがないためにプロセスが中止されます。

バグだったと思いますが、サーバー側やクライアント側で発生した場合はそうではありません。サポートチケットを配置するプロジェクトを作成しているときに、可能な限り最小限に抑えようとすると、Delphiが発生します。 XEがリリースされ、私はSAの下にいるので、最後の最後にそれを取得します。

ダウンロード、インストール、構成...次に、プロジェクトをサポートするためにコンパイルしましたが、すべて正常に機能しました。私はメインプロジェクトをコンパイルしました。これと、最後の2番目の検証または状態/条件の変更のためにデータベーストリガーとストアドプロシージャで例外を発生させるために使用するという事実のために、ユーザーとの実際の問題に直面していました。すべてがうまくいきました。ユーザーは意味のあるエラーメッセージを受信して​​おり、アプリケーションはデータ変換と再試行をその場で実行したり、状況によってはユーザーに何をすべきかを尋ねたりする能力を回復しました。

申し訳ありませんが、この問題を診断してエンバカデロに報告するための回避策は見つかりませんでした。アップグレードを提案せずに、他の誰かがあなたをよりよく助けることができるかもしれません。

于 2010-10-05T22:51:36.050 に答える
1

簡単な答えは「はい」です。3 つのレベルのデータセットを互いに入れ子にすることができます。ネストが 6 レベル下がる ClientDataSets の例があります。実際、メモリの制約によるものを除けば、入れ子の深さに制限があるとは思いません。

于 2010-04-29T18:10:15.217 に答える