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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- その他(データベース) accessでのフォームの連携について 2 2022/06/14 00:45
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- その他(データベース) accessについて 2 2022/05/31 16:58
- 消費税 インボイス制度について。 現在建設業をしており、外注先への支払いについてです。 外注先は、ほぼ免税事 4 2022/06/29 06:03
- 財務・会計・経理 業者間での注文書・請書の取り扱いについて 2 2022/06/27 15:53
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- 消費税 インボイスの事業者登録番号を仕入れ先から求められました? 3 2023/03/19 21:48
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご発注ありがとうございます...
-
中3日の意味
-
見積書兼発注書の書き方
-
ゲームアプリで不具合が発生し...
-
発注量の計算について 発注量=1...
-
皆さん 物置はどこで購入 設置...
-
単価単位、発注単位、発注入数...
-
予備紙の計算法
-
クーリングオフについて
-
POって何の意味ですか?
-
エクセル マクロ 繰り返し処...
-
マンションの「室内フルリノベ...
-
海外、国内への個人企画外注方法
-
エクセル ①上下にタイトル行を...
-
建設業の注文書について
-
同人誌印刷:くりえい社さんの...
-
ユニクロについて教えてください!
-
電子部品を大量に安く買う方法...
-
他社のミスを謝る時の言い方
-
AI革命で人類は暇を持て余すこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご発注ありがとうございます...
-
中3日の意味
-
フォーキャストって何ですか?
-
私の勤め先とその同業他社のや...
-
見積書兼発注書の書き方
-
エクセル ①上下にタイトル行を...
-
発注量の計算について 発注量=1...
-
初めてスーパーの某カテゴリー...
-
単価単位、発注単位、発注入数...
-
消耗品管理
-
大手企業のヒラと中小企業の主...
-
Excelの式を教えてください
-
Access 実行時エラー’3079’が解...
-
セブンイレブン追加発注につい...
-
セブンイレブンの発注で ソフト...
-
「お打ち合わせの件につきまし...
-
土木設計で、段切りの設計について
-
IP発注
-
発注残とは何ですか?
-
POって何の意味ですか?
おすすめ情報