0

OnNewRecord イベントを持つ ADOQuery を取得しました。

手順で、データを自動的に別のテーブルに追加しようとします。データは、取り消された場合に必要とされ、clientDataSet で処理されるいくつかの行です。

ロケで

その他のAdoQuery.insert;

ADOQuery が null 以外のフィールドに null を挿入できなかったというエラーが表示されます。私は挿入モードですが、DELPHI に投稿を依頼したことはありません。投稿する理由がわかりません。

編集: この問題のヒントを見つけるのを手伝ってくれませんか?

もう少し明確にします:

ADOQuery.onNewRecord();

始める

ClientDataSet.insert; //ADOQueryPost の投稿に移動します。ClientDataSet がブラウズ状態だった場所

終わり;

編集:

このバグは意味がありません! スタック トレースを見てください。

  • 前投稿
  • 新記録
  • myFunc

myFunc は Insert で NewRecord を引き起こします。

4

2 に答える 2

2

TAdoQueryについてはあまり詳しくありませんが、このようなエラーを追跡する方法は知っています。まず、まだ設定していない場合は、[プロジェクトオプション]に移動し、[コンパイル]タブで[デバッグDCUの使用]をオンにしてから、フルビルドを実行して実行します。デバッガーでその例外レポートを取得したら、Breakを押すと、TAdoQueryまたはそのサブオブジェクトの1つのコード内に到達するはずです。コールスタックを調べてみてください。いくつかの呼び出しを調べると、おそらく、Postを呼び出している他の何かを呼び出していることがわかります。コードに到達するまでスタックトレースをたどると、何が起こっているのかがわかります。少し分析すると、問題を防ぐ方法を見つける必要があります。

そうは言っても、問題の原因について簡単に推測させてください。データセットで挿入を呼び出すときに、以前に挿入または追加を呼び出して投稿をフォローアップしなかったためにデータセットがすでに追加モードになっている場合、作業する新しい行を設定する前に、Post自体を呼び出します。多分これはあなたに何が起こっているのですか?

于 2010-10-14T16:18:11.827 に答える
-1

答えは、テーブル間の接続からでした。

ADOQuery.dataSource は ClientDataSet の DataSet に設定されました。

これは非常に多くのダメージを与え、デルファイによるヒントはありません。

于 2010-10-18T11:08:42.870 に答える