
SQL SerVer 2005 + Access(adp) にてDBを作成しています。
あるレポートのサブレポートに一時テーブルの値を使用したいのですが、
表示されません。
作成したSQLは下記で、EXECでは表示されます。
Access側のクエリを開こうとすると、
「ストアドプロシージャは実行されましたが、レコードは返されませんでした」
という結果が返ってきます。
SQL側の一時テーブルをAccessのレポートのソースにするにはどうしたらいいのでしょうか?
教えてください。
注:ダイレクトにサブレポートを作成すると、メインレポートとリンクしません。
新規にテーブルを作成したものは、メインレポートとサブレポートがリンクします。
しかしあるレポートのためだけに、二重にテーブルを作成したくありません。
一時テーブルで済ませられるのなら、そうしたいと思います。
よろしくお願いします。
----------------------------------------------
--伝票分の業者請求書 レポートに表示する
----------------------------------------------
ALTER procedure [dbo].[S_業者請求伝票分R] @myid int
as
begin
---一時テーブルの作成
create table #業者請求
(kr発注物件ID int, kr発注ID int, kr業者請求日 datetime, kr業者請求額 money, kr最終支払 smallint,
kr請求メモ nvarchar(7),kr会社名 nvarchar(30),kr特記 nvarchar(20),kr受注登録ID int)
---一時テーブルに値を代入
insert into #業者請求(kr発注物件ID, kr発注ID, kr業者請求日, kr業者請求額, kr最終支払,
kr請求メモ,kr会社名,kr特記,kr受注登録ID)
SELECThh.発注物件ID, ga.発注ID, ga.業者請求日, ga.業者請求額, ga.最終支払,
ga.請求メモ,zz.会社名,hh.特記,hh.受注登録ID
FROM dbo.T_業者請求 AS ga left outer JOIN
dbo.T_発注 AS hh ON ga.発注ID = hh.発注ID INNER JOIN
dbo.T_住所 AS zz ON hh.会社ID = zz.会社ID
wherehh.受注登録ID=@myid
end
begin
select*from#業者請求
end
No.1ベストアンサー
- 回答日時:
adpのソースにストアドが使えるかどうかは確認していませんが、Jetの場合、ストアドの先頭には「SET NOCOUNT ON」を切らないと、レコードより先にメッセージが返されて結果行がゼロになります。
ALTER procedure [dbo].[S_業者請求伝票分R] @myid int
as
begin
の直後に「SET NOCOUNT ON」を足してみてください。
#もしこれで解決するなら、そもそも一時テーブル作る必要ないかもしれませんけど
ひぇ~! できました!!
私はてっきりAccess側でSQLの呼び出しとか何とかが必要だと思っていました。
jamshid6さん ありがとうございます。
追加質問で、
この「SET NOCOUNT ON」に対応する「OFF」は必要ないのでしょうか?
No.2
- 回答日時:
SET NOCOUNT OFFは不要です。
ストアドプロシージャ内で切ると、その中でだけ有効です。
ついでですが、ストアドが中で一度終わっている理由はなんでしょう?
中のend/beginは必要ないように見えます。
更にいうと、一時テーブルを作成せず、select文だけ書いても同じ結果になるような気がします。
(つまり、この部分だけ)
ALTER procedure [dbo].[S_業者請求伝票分R] @myid int
as
begin
set nocount on
SELECT hh.発注物件ID, ga.発注ID, ga.業者請求日, ga.業者請求額, ga.最終支払,
ga.請求メモ,zz.会社名,hh.特記,hh.受注登録ID
FROM dbo.T_業者請求 AS ga left outer JOIN
dbo.T_発注 AS hh ON ga.発注ID = hh.発注ID INNER JOIN
dbo.T_住所 AS zz ON hh.会社ID = zz.会社ID
where hh.受注登録ID=@myid
end
この回答への補足
上記を実行した所、レポートの表示はされますが、サブレポートとしてメインレポートにリンクされません。
メインレポートの数、サブレポートのすべてが表示されてしまいます。
これは「SET NOCOUNT ON」がない状態と同じです。
又、一時テーブルを使用したSQL文でも同じ結果でした。
新規にテーブルを作成した内容については、メインレポートとリンクするので、一時テーブルでもOKかと思ったのですが・・・
専用のテーブルを用意し、UPDATEでその都度入力させることにします。
しかし「今回は一時テーブルをAccess側に表示させる」という質問ですので、それについては解決しましたので終了と致します。
amshid6さん、本当に有難うございました。
(Where文に省略がありました。
(where hh.受注登録ID=@myid) and (hh.発注物件ID>600000) )
>SET NOCOUNT OFFは不要
了解です。
そうですね。もしかしたら、Select文だけでできるかもしれません。
SET NOCOUNT on なしでは何度やってもうまくいかず、
これはリンクキーの問題だと思っていました。
(メインレポートにリンクするサブレポートのキーに、メインキーにはない
キーが入っているため)
明日テストして報告します。
重ね重ねありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご発注ありがとうございます...
-
「お打ち合わせの件につきまし...
-
見積書兼発注書の書き方
-
エクセル ①上下にタイトル行を...
-
単価単位、発注単位、発注入数...
-
フォーキャストって何ですか?
-
明日仕事に行くの怖いです。発...
-
セブンイレブン追加発注につい...
-
未加工品流出→対策
-
中3日の意味
-
バイトの質問です
-
セブンイレブンの発注で ソフト...
-
コリンズの登録期間に関すること
-
発注量の計算について 発注量=1...
-
卸値の値引き?
-
弥生会計:「伝票No.」を日付順...
-
不良品を交換したいけど在庫が...
-
購入伝票について全く分かりま...
-
返品伝票について
-
ヨドバシカメラのネット通販で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご発注ありがとうございます...
-
「お打ち合わせの件につきまし...
-
エクセル ①上下にタイトル行を...
-
見積書兼発注書の書き方
-
中3日の意味
-
単価単位、発注単位、発注入数...
-
フォーキャストって何ですか?
-
IP発注
-
Excel 関数 vlookupなどの使い...
-
Access 実行時エラー’3079’が解...
-
バイトの質問です
-
未加工品流出→対策
-
オリジナルシャツを作ったらサ...
-
セブンイレブンの発注で ソフト...
-
電子納品について教えてください。
-
Excelで別シートへ自動入力
-
エクセルの集計表について
-
パレット表記 1000×500と記載 ...
-
発注残とは何ですか?
-
発注書をもらったのちのキャンセル
おすすめ情報