MSDE FunClub
Microsoft Data Engine FunClub
MSDE初心者向けメーリングリスト過去ログ[1071]番
 
[TOP]>[MSDE初心者向けメーリングリスト過去ログ(1071番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
Re: recordset を用いたレポート

Date: Wed, 25 Feb 2004 19:53:41 +0900
From: "KojiFujita" <who@example.co.jp>


 お世話になります。藤田です。
堀川様
上、下巻いずれも所有しておりましたが、レポートでの要件ということで気づきませ
んでした。
これから 確認しようと思っております。 ありがとうございます。
(くどいようですが)
もともと このスレッドは「recordsetを用いたレポート」と タイトルにもありま
すように、非連結レポートでソース上でRecordsetを設定するには
どうしたらよいか?という問いかけでした。おかげさまで SPを工夫して連結レポー
トで対処するという結論に至っていますが、
結局のところ「非連結レポート」という考え方は無いのでしょうか?「できたならい
いじゃない。」「ほんとにそんなのって必要になるケースがあるか?」
といわれると それまでですが。。。

(マルチですいません)
水口様
>それに、更新が必要なフォームでの
>RecordSourceが一時テーブルになりうる状況が想像できません。
当方 その状況が起きてます。
既出の「DMラベル発行」がこのケースで、テーブルから抽出した結果を一旦一時テー
ブルにInsertし
フォーム上に表示。必要なレコードを選択させた(チェックボックスをクリックさせ
る)のちに、この一時テーブルの選択されたレコードのみを
レポートにあらわす。 というようなものです。
また 一時テーブルにくっついたフォームもたくさんあります。
これは もともと ACCESS MDB(プログラム)+データベースで 構築したクライ
アントサーバーシステムを ACCESS ADP+SQLServerのクライアントサーバー
システムに移行しなければならなくなり(M○taFrameの導入により)、上記プログラ
ム内で使っていたMDB内のワークテーブルが使えないため すべて 一時テーブルで
対処するように、変更を余儀なくされたものでした。
なので 当方の場合 現状のプロセス(実テーブルとして存在するワークテーブルを
用いる)を肯定した上で、一時テーブルへの置き換えをしようとすると、「SPの中で
はなく外で一時テーブルをきる」という手順を用いてきたわけで、水口様がおっしゃ
る「結合がきつい」ものになっています。結果的に「誤解を与えないようなプログラ
ム」というよりは「わかりやすいプログラム」になってるのかなと思っています。

今回スレッドをあげさせていただいて、開発に対するスタンスというかポリシーの重
要性について認識させていただきました。自分ももっと精進せねばなぁと思うしだい
です。
改めて 水口様 堀川様 ありがとうございました。
今後ともよろしくお願いします。









> -----Original Message-----
> From: Akira Horikawa [mailto:who@example.ne.jp]
> Sent: Wednesday, February 25, 2004 1:40 PM
> To: who@example.ne.jp
> Subject: [ml-msde-beg:01064] Re: recordset を用いたレポート
>
> 堀川です、こんにちは
>
> -----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 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。