2

ローカル一時テーブル #tblTmpYaks を作成し、この一時テーブルのレコードを選択してパススルー クエリに表示する必要があります。

一時テーブルは次のように作成されます。

CREATE TABLE #tblTmpYaks (ID INT NOT NULL IDENTITY,
   YakName CHAR(30),
   PRIMARY KEY (ID));
INSERT INTO #tblTmpYaks (YakName) VALUES('My Yak');
INSERT INTO #tblTmpYaks (YakName) VALUES('My Female Yak');

次に、SQL 文字列を使用してパススルー クエリが作成されます。

SELECT * FROM #tblTmpYaks;

しかし、これを開いたときに MsgBox が表示されるため、これは機能しません。

ここに画像の説明を入力

これは、#tblTmpYaks が SQL Server に存在しないことを意味します。

これを機能させる方法は?

結論に事後論を追加

Gord Thompsonが以下で述べているように、ローカルの SQL Server セッションの間だけ存在するローカル一時テーブル #tblTmpYaks の使用を放棄します。代わりに、##tblTmpYaks で示されるグローバル一時テーブルがここで使用され、パススルー クエリを介して Access レポートの RecordSource で暗示することができ、さらに Access インターフェイスを終了すると自動的に削除されます。

4

1 に答える 1

3

ここでの質問と同様に、 (の代わりに) SQL Server のグローバル一時テーブルを使用すると、おそらくうまくいくでしょう。Access で CREATE TABLE パススルー クエリを使用してテーブルを作成する場合、テーブルは Access を閉じるまで保持されます (最初に DROP TABLE を明示的に実行しない限り)。##tblTmpYaks#tblTmpYaks

于 2013-10-09T15:30:30.580 に答える