Date: Mon, 1 Mar 2004 15:20:51 +0900
From: "Akira Horikawa" <who@example.ne.jp>
堀川です、こんにちは
-----Original Message-----
From: KojiFujita [mailto:who@example.co.jp]
Sent: Monday, March 01, 2004 12:45 PM
To: who@example.ne.jp
Subject: [ml-msde-beg:01079] Re: ACCESS ADP 一時テーブルを基にしたレポートで「オブジェクトが無効です。」のエラー
>SP内で 一時テーブルを認識できないていないということはわかりました。
>tempdb内でいくつも存在する一時テーブルの中から必要なものを指定する際には、
>「#テーブル______________〜」
>の形ででないと認識できないということでしょうか?
私がポイントとしてお話した
『SQLServer側で提供される様々なGUIツールを駆使すると調べられます』
の意味は、せっかくSQLServerのライセンスをお持ちなのだから付属ツールを
有効にお使いくださいという意味だったのです。
Enterprise Managerでも簡単な調査はできます。
Enterprise Managerの
[管理]-[現在の利用状況]-[プロセス情報]
のところで、Accessプロジェクトから接続されたサーバーの状況を見て下さい
3個の接続があるはずです。
しかしEnterprise Managerで調査するのは、ここまでが限界です。
そこで私がヒントで与えたGUIツールとは、「プロファイラ」を使って下さいと
言いたかったのです
プロファイラを実行させて、サーバーの動作状況をすべて『盗聴』します。
各データベースサーバープロセスが、どのようなSQL文を実行しているのかを
調べることが出来ます。
盗聴したSQL文から、だいたいのことが推測されます。
まず最初にAccessプロジェクトが立ち上がって、最初の接続が作成されます。
この接続はAccessのシステムが保持します
次に、ユーザ側アプリケーションのための接続が開かれます。
この接続が、CurrentProject用の接続です。
そして3番目の接続が開かれます
この接続は、レポートを開く時のRecordSourceに記述された内容を取得する時に
使われるようです
この接続の説明は、Accessプロジェクトのマニュアルには書かれておりません
このことから、レポートのRecordSourceに記述されたSQL文が実行される接続と
フォーム等の接続が異なるため、一時テーブルの参照はできません。
しかし次のことを試してください
レポートのRecordSourceプロパティを使うのではなく、Recordsetプロパティを
使います
すでに存在するRecordsetオブジェクトに対して、連結レポートを作成することが
できます。
例えば、フォームのイベント処理で、
Private Sub コマンド1_Click()
Set cn = CurrentProject.Connection
cn.Execute "Create table #tmp(運送コード int , 運送会社 varchar(40),電話番号 varchar(24))"
cn.Execute "INSERT INTO #tmp(運送コード , 運送会社,電話番号 ) values(10,'AAAA','03-3333-1111')"
cn.Execute "INSERT INTO #tmp(運送コード , 運送会社,電話番号 ) values(20,'BBBB','03-3333-2222')"
cn.Execute "INSERT INTO #tmp(運送コード , 運送会社,電話番号 ) values(30,'CCCC','03-3333-3333')"
End Sub
を実行して、一時テーブルを作成します。
この一時テーブルに対して、レポート側では、
Private Sub Report_Open(Cancel As Integer)
Dim cn, rs
Set cn = CurrentProject.Connection
Set rs = cn.Execute("SELECT * from #tmp")
Set Me.Recordset = rs
End Sub
のように、ADOのレコードセットオブジェクトを生成し(この生成に使用する
接続はフォームで一時テーブルを作成した接続とおなじもの)、そのレコード
セットオブジェクトを直接レポートのRecordsetオブジェクトに代入してみて
下さい
この方法でレポートの表示ができるはずです。
------------------------------------
(株)日本技術ソフト開発
堀川 明 (Akira Horikawa)
03月01日(月曜日) 15時19分記
mailto:who@example.ne.jp
http://www.horikawa.ne.jp/msde/
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|