Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルクロス集計クエリーから動的にレポート作成時、複数の値表示
記事No42887
投稿日: 2018/01/18(Thu) 16:21
投稿者はまおう
解決済: ON
OS:Windows7,10
Access Version:Access2010

クロス集計クエリーから動的にレポートを作成しています。
1.インプットデータ
1)元テーブル
  従業員No 日付 作業コード 時間 作業概要

2.要求仕様
1)レポート
 ・ヘッダー
  従業員名 月度
 ・詳細
  日付  作業コード1  作業コード2  作業コード3 ...  日計
      時間 作業概要 時間 作業概要 時間 作業概要...  時間計 
 ・フッター
      時間計     時間計     時間計       時間計
    
[42770] クロス集計クエリをレポートに。
[42876] VBAでパラメーターを設定したい
などを参考にクロス集計クエリーを作成し、へなちょこなレポートはできました。
(クロス集計クエリーの値は一つだけとのことで、日付の作業コード毎に
 時間と作業概要を連結しています)

"TRANSFORM Max(時間 & 作業概要) AS 時間と作業概要 " & _
" SELECT 作業日報テーブル.従業員No, " & 作業日報テーブル.日付) " & _
" FROM 作業日報テーブル INNER JOIN 作業テーブル ON 作業日報テーブル.作業コード = 作業テーブル.作業コード " & _
" GROUP BY 作業日報テーブル.従業員No , " & "業日報テーブル.日付 " & _
" PIVOT [作業コード];"

ですが、連結しているため日付毎や作業コード毎の時間計ができません。

クロス集計クエリーの値を時間だけにして、あとからDlookupとかで作業概要を
持ってこようとしましたが、従業員コードと日付と作業コードがキーとなり、
行の日付が参照できません。(Controlsourceの値が取得できない)
連結した時間と作業概要を分割しようとしましたができません。

また、VBAにて動的にレポート作成していますので
DoCmd.OpenReport RPT.Name, acDesign
    ..... 
DoCmd.OpenReport RPT.Name, acPreview
プレビューはできて、印刷した後、「印刷プレビューを閉じる」ボタンを押下
すると、レポートデザイン画面になってしまいます。不要なのでそのまま終了
する技をお教えください。

 何か良いヒントをください。よろしくお願いします。

タイトルRe: クロス集計クエリーから動的にレポート作成時、複数の値表示
記事No42888
投稿日: 2018/01/19(Fri) 00:36
投稿者hatena
解決済: ON
> などを参考にクロス集計クエリーを作成し、へなちょこなレポートはできました。
> (クロス集計クエリーの値は一つだけとのことで、日付の作業コード毎に
>  時間と作業概要を連結しています)
>
> "TRANSFORM Max(時間 & 作業概要) AS 時間と作業概要 " & _
> " SELECT 作業日報テーブル.従業員No, " & 作業日報テーブル.日付) " & _
> " FROM 作業日報テーブル INNER JOIN 作業テーブル ON 作業日報テーブル.作業コード = 作業テーブル.作業コード " & _
> " GROUP BY 作業日報テーブル.従業員No , " & "業日報テーブル.日付 " & _
> " PIVOT [作業コード];"
>
> ですが、連結しているため日付毎や作業コード毎の時間計ができません。

まず、日計 ですが、SQL SELECT句に集計フィールドを追加すればいいでしょう。


"SELECT 作業日報テーブル.従業員No, 作業日報テーブル.日付, Sum(作業日報テーブル.時間) AS 日計 " & _


作業コード毎の集計は、フッターのテキストボックスのコントロールソースを下記のようにすればいいでしょう。

=Sum(Val([作業コード1]))

Val関数は文字列の先頭の数字部分を取り出して数値化します。

Val("1234あああ") → 1234

> また、VBAにて動的にレポート作成していますので
> DoCmd.OpenReport RPT.Name, acDesign
>     ..... 
> DoCmd.OpenReport RPT.Name, acPreview
> プレビューはできて、印刷した後、「印刷プレビューを閉じる」ボタンを押下
> すると、レポートデザイン画面になってしまいます。不要なのでそのまま終了
> する技をお教えください。

「動的にレポート作成」とは、CreateControl で動的にコントロールを生成しているということでしょうか。
もし、そうならお勧めできる方法ではないです。
事前に必用なコントロールは配置しておいて、レポートの開くときのイベントプロシージャ内で、
コントロールソースを設定したり、可視を設定したりすれば、デザインビューで開く必用はないです。

下記が参考になるでしょう。

VBAでパラメーターを設定したい|Access Club Access 初・中級者 FORUM
http://www.accessclub.jp/bbs2/wforum2.cgi?mode=allread&no=42876&page=0

タイトルRe^2: クロス集計クエリーから動的にレポート作成時、複数の値表示
記事No42889
投稿日: 2018/01/19(Fri) 18:35
投稿者はまおう
解決済: ON
hatena様

アドバイスありがとうございました。
早速取組みまして,
 日計は、SQL SELECT句に集計フィールドを追加でOKとなりました。
 作業コード毎の集計は不要になったので組込みませんでしたが、後日試したいと思います。
 プレビューに関しても、ご指示の通りほぼ空のレポートを作成して、レポートオープン時の
 イベントプロシージャにコーディングを移してOKとなりました。

助かりました。ありがとうございました。  

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る