1

SQL サーバーへのパススルー クエリへの入力として使用したい、約 700 レコードの 3 フィールド出力を持つアクセス クエリを作成しました。

プロセス全体を SQL サーバーでテストしましたが、問題なく動作しますが、passtrhu で同じコードを実行しようとすると、エラーが発生します。

returnrecords プロパティが yes に設定されたパススルー クエリで、レコードが返されませんでした。

クエリの最初の数行を次に示します。

if object_id('tempdb..#marktmp1') is not null drop table #marktmp1
create table #marktmp1
(Cid bigint,
Ccd varchar(6),
Ciss int);
/*
Insert into #marktmp1
values
(5110029175,    'SPO',  17),
(5110029722,    'SPO',  17),
(5110035139,    'SPO',  17);

最初のクエリの出力を上記のリストにコピー/貼り付けするだけです

レコードのリストの最後で、#marktmp1テーブルを既存のテーブルに結合しようとします。

私たちはSQL Server 2012を使用しています。

4

2 に答える 2

2

Without seeing the rest of your code, I'm guessing you never do a select or return a result set in any other way (like calling a stored procedure). If that's the case, check the IMPORTANT note in this answer:

how-to-create-temp-tables-in-sql-server-via-ms-access

Note, also check Gord Thompson's answer right after mine and make sure you won't have trouble with that.

于 2013-06-17T21:55:28.763 に答える
1

簡単な解決策:SET NOCOUNT ONパススルーの最初のコマンドとして追加します。

何が起こっているのかというと、#tempテーブルにレコードを挿入すると、SQL サーバーは Access がこのメッセージを見てクエリの完了として解釈すると応答し### Record(s) affected. ますが、行が返されませんでした。これがあなたが得る理由です

returnrecords プロパティが yes に設定されたパススルー クエリは、レコードを返しませんでした

SET NOCOUNT ONこれらの情報メッセージをオフにすると、アクセスは最後のメッセージSELECTが発生するまで待機します。

于 2013-11-20T16:01:56.177 に答える