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 技術サポート情報一覧]
|