2

D2009、dbGo (ADO) を使用して、既存の Advantage データベース サーバー アプリケーションを SQL Server 2005 に変換しています。時々エラーが発生しますrow cannot be found for locating。結果によると、各 ADOTable の Update Criteria プロパティを設定し、カーソル位置を動的に設定する必要がありました。私はそうしましたが、それでも同じエラーが発生することがあります。すべてのテーブルには主キーがあるため、使用しています

Query.Requery(); 
Query.Locate('ID',ID,[]); 

エラーを回避するためにレコードを更新する前に、より良い解決策が必要です。何か案は?または、MyDAC または Zeoslib に移行する必要がありますか?

4

4 に答える 4

2

dbGO/ADO は、MS-SQL データベースにアクセスする自然な方法です。それが正確なエラーメッセージであると確信していますか? 聞いたことがありませんが、「更新する行が見つかりません」と聞いたことあります

このエラー メッセージは、ADO が削除または更新するレコードを見つけられないことを示しています。ほとんどの場合、テーブルに主キーが定義されていないか、内容がすべて一意である列が少なくともテーブルにないことが原因です。

MS-SQL テーブルで主キーを定義していることを確認してください。

于 2009-04-26T12:17:03.720 に答える
2

トリガーを使用するときに他の誰かが同じ問題を抱えている場合は、トリガーの先頭に SET NOCOUNT ON を追加し、トリガーの最後に SET NOCOUNT OFF を追加します。

于 2009-04-27T08:37:44.847 に答える
0

シンプルなadotable1.refresh; 投稿後、トリックを行う必要があります...

于 2013-02-26T07:34:36.357 に答える
0

行を更新できない通常のケースは、テーブルにデフォルト値の制約がある場合です。OnNewRecord のフィールドの値を必ず設定してください。myAdoDataset.Properties['Update Criteria'].Value := 0; を使用することもできます。次に、ADO は更新にキーのみを使用する必要があります。

于 2009-04-26T12:47:08.687 に答える