2009-06-17 23 views
3

いくつかのフィールドを持つTClientDataSetが1つあり、この例外が発生しています.1つのフィールド値を設定するのを忘れていましたが、質問はどのフィールドですか?「Field value required」というメッセージで、どのTFieldがEDBClientを呼び出すかを知る方法はありますか?

この例外が発生しているフィールドをすばやく見つける方法はありますか?

EDIT

私は、サーバー上で必要なフィールドを持っていたが、クライアント上でこのフィールドを持っていなかった、間違ったプロバイダにTClientDataSetに接続して、問題を解決しました。

しかし、それでも私の質問は無効にならないので、私はそれを理解するのに多くの時間を無駄にしました。そして、このエラーを発生させていたサーバサイドのフィールドを知る方法があれば、私の間違いだった。

EDIT 2

関連のQC:

#5557 - "設計どおり" として解決しました。

#54380 - オープン

答えて

4

デバッガが例外を通知すると、コールスタックを見てください。フィールドのリストを反復処理するルーチンに移動し、そのポイントのループ制御変数を調べて、例外を発生させる前にプログラムが取得したフィールドリストまでの距離を調べます。

ループ制御変数が正確でない場合は、そのルーチンにブレークポイントを設定してプログラムを再実行します。もう一度例外が発生するまでステップスルーします。

もう1つの方法は、すべてのフィールドを見て、値の欠落しているものを見てみることです。

+1

問題は私がそれをデバッグできないこと、TclientDataSetのInternalPostでstdcallによって発生し、TDataSetのInternalPostメソッドの検証に合格することです。 –

+0

あなたのコンピュータで問題を再現できないと言っていますか?あなたのコンピュータで問題が発生した場合は、それをデバッグすることができます。 –

+2

いいえ、私が言っていることは、次のコードを持つDBClient.pasの2861行目です。Check(FDSCursor.InsertRecord(ActiveBuffer));ファンクションInsertRecordは次のとおりです。 function InsertRecord({新しいレコードを挿入} pRecBuf:ポインタ ):DBResult; stdcall; もし私が誤解されていないのであれば、midasからです、どうして私はそれをデバッグしますか? –

関連する問題