0

Query Analyser で直接、または Query Analyser でストアド プロシージャとして実行される (非常に単純で標準的な) UPDATE ステートメントがあります。

UPDATE A
SET 
      A.field1 = B.col1
    , A.field2 = B.col2
FROM
       tblA AS A INNER JOIN tblB AS B 
ON A.pk1 = B.pk1 AND A.pk2 = B.pk2

問題は、Microsoft ADP を介して (sproc 名をダブルクリックするか、[実行] オプションを使用して) 同じストアド プロシージャを実行すると、「クエリは正常に実行されましたが、レコードが返されませんでした」と表示され、検査時にレコードが更新されないことです。テーブルを直接。

「MS-Access の構文は SQLServer T-SQL とは異なる」と誰かが言う前に、ADP ではすべてがサーバー上で行われ、実際には T-SQL に渡されることを思い出してください。

ADP の専門家からの素晴らしいアイデアはありますか?

4

5 に答える 5

1

ガチャ。他の誰かの利益のために自分の質問に答える。

Tools / Options / Advanced / Client-Server Settings / デフォルトの最大レコード数は 10,000 に設定されています (おそらくこれがデフォルトです)。無制限にするには、これを 0 に変更します。

私のテーブルには100,000以上の行があり、更新されていた10,000のセットを見つけるのは困難でした(90,000以上の更新されていない行の海の中で)。したがって、更新は期待どおりに完全には機能しませんでした。

于 2009-08-19T04:44:50.133 に答える
0

SQL プロファイラーを使用して、クエリが SQL Server で実行されるかどうかを試してみてください。
また、更新されたレコードを表示するには、リンクされたテーブルを閉じて再度開く必要があると思います。

それは動作しますか?

于 2009-08-19T02:25:01.867 に答える
0

参考までに、失敗した場合に関連するいくつかの問題について説明している更新クエリに関する論文を次に示します。

http://www.fmsinc.com/microsoftaccess/query/snytax/update-query.html

于 2009-10-09T18:58:12.077 に答える
0

SQL PROfiler を実行してクエリを実行します。トレースを開始する前に、すべてのエラー イベントを追加します。これにより、SQL Server が生成し、Access ADP が正しく表示されない (またはまったく表示されない) エラーが表示されます。

ここに自由に投稿してください。

于 2009-08-19T03:24:10.930 に答える
-1

「行が返されませんでした」というメッセージが常に表示され、単にメッセージをオフにする必要があったことを覚えているようです。行が返されないからです。

もう1つは、主キーの問題が発生する場合があります。更新中のテーブルには、SQLServer に主キーがありますか? その場合は、Access でテーブルのビューを確認してください。リンクが表示されない場合があります。時間が経っているので間違っているかもしれませんが、アクセス中にテーブルのデザイン ビューを見て、そこに主キーを追加する必要があると思います。

編集: 追加の考え: デバッグで、print ステートメントを投入して、入力の値を確認してください。アクセスから実行したときに、期待どおりにテーブルからデータを実際に取得していますか?

于 2009-08-19T02:35:18.247 に答える