Date: Wed, 25 Feb 2004 13:39:49 +0900
From: "Akira Horikawa" <who@example.ne.jp>
堀川です、こんにちは
-----Original Message-----
From: KojiFujita [mailto:who@example.co.jp]
Sent: Monday, February 23, 2004 6:14 PM
To: who@example.ne.jp
Subject: [ml-msde-beg:01059] Re: recordset を用いたレポート
サポート文書番号264097
一時テーブルを作成するストアド プロシージャをフォームやレポートの
レコードソースに設定するとエラー
http://support.microsoft.com/default.aspx?scid=kb;ja;264097
の件は、
書籍上巻第7章
http://www.horikawa.ne.jp/msde/gihyo/sql07/sql07_01.html
の、このプログラムの中の、『P_検索表示』ストアドプロシージャのように
ダミ−のSELECT文を挿入すると解決します。
サポート文書番号264097の方では、
Create Procedure ProductRepSp
(@BeginDate datetime, @EndDate datetime)
As
SET NOCOUNT ON
CREATE TABLE #TEMP
(ORDERID INT NULL,
ORDERDATE DATETIME NULL,
[NAME] VARCHAR (50)
)
INSERT INTO #TEMP
SELECT 受注.受注コード, 受注.受注日,
商品.商品名
FROM 受注 INNER JOIN
[受注明細] ON
受注.受注コード= [受注明細].受注コード INNER JOIN
商品 ON
[受注明細].商品コード = 商品.商品コード
WHERE (受注.受注日 BETWEEN @BeginDate AND
@EndDate)
SELECT ORDERID, ORDERDATE, [NAME] FROM #TEMP
のような記述になっていますが、これを、
Create Procedure ProductRepSp
(@BeginDate datetime, @EndDate datetime)
As
SET NOCOUNT ON
goto L1000
select 'DUMMY' AS ORDERID,
'DUMMY' AS ORDERDATE,
'DUMMY' AS NAME
L1000:
CREATE TABLE #TEMP
(ORDERID INT NULL,
ORDERDATE DATETIME NULL,
[NAME] VARCHAR (50)
)
(以下、同文)
のように、Goto文の間に、SELECT文を記述してあげれば
正しくフィールドリストが表示されるようになります。
Accessの連結フォーム/レポート作成で、複雑なストアドプロシージャは
レコードセットを返さないと勘違いするようです。
そこでダミーのSELECT文を入れることによって、列名の情報をAccessに
教えるようにすることができます。
詳しくは、書籍下巻498ページをご覧下さい
上巻に掲載したプログラムに対する連結フォームの作り方を下巻で解説しております。
------------------------------------
(株)日本技術ソフト開発
堀川 明 (Akira Horikawa)
02月25日(水曜日) 13時24分記
mailto:who@example.ne.jp
http://www.horikawa.ne.jp/msde/
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|