Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1713 / 2272 ツリー ←次へ | 前へ→

【5615】集計にて まるこ 05/7/15(金) 8:58 質問[未読]
【5618】Re:集計にて 小僧 05/7/15(金) 10:13 回答[未読]
【5624】Re:集計にて まるこ 05/7/15(金) 16:10 質問[未読]
【5625】Re:集計にて 小僧 05/7/15(金) 17:20 発言[未読]
【5631】Re:集計にて まるこ 05/7/16(土) 14:27 質問[未読]
【5634】Re:集計にて 小僧 05/7/19(火) 9:09 回答[未読]
【5636】Re:横から たん 05/7/19(火) 10:22 回答[未読]
【5637】Re:横から たん 05/7/19(火) 11:23 発言[未読]
【5641】Re:集計にて まるこ 05/7/19(火) 15:39 質問[未読]
【5642】Re:集計にて 小僧 05/7/19(火) 16:01 回答[未読]
【5643】Re:集計にて まるこ 05/7/19(火) 21:11 質問[未読]
【5644】Re:集計にて 小僧 05/7/20(水) 9:16 発言[未読]
【5647】Re:集計にて まるこ 05/7/20(水) 12:29 質問[未読]
【5649】Re:集計にて 小僧 05/7/20(水) 14:10 回答[未読]
【5651】Re:集計にて まるこ 05/7/20(水) 14:48 お礼[未読]
【5635】Re:集計にて てっちゃん 05/7/19(火) 10:10 回答[未読]

【5615】集計にて
質問  まるこ  - 05/7/15(金) 8:58 -

引用なし
パスワード
   以下のようなテーブルで

ID    コード     名      日    
109    3401    カリナ    2005/10/07            
110    3401    カリナ    2005/10/21            
111    3401    カリナ    2005/11/04            
112    3401    カリナ    2005/11/18            
113    3401    カリナ    2005/12/02            
114    3401    カリナ    2005/12/16            
115    3401    カリナ    2006/01/06            
116    3401    カリナ    2006/01/20    
117    3401    カリナ    2006/02/03            
118    3401    カリナ    2006/02/17            
119    3401    カリナ    2006/03/03            
120    3401    カリナ    2006/03/17

上記のようなデーターを下記のようにするには
(1)
コード   日1   日2
3401  10月      7,21
3401  11月   4,18
3401  12月   2,16
3401   1月   6,20
3401   2月   3,17
3401   3月   3,17

もしくは
(2)

コード  10月  11月 12月 1月  2月 3月
3401    7,21 4,18 2,16    6,20 3,17 3,17
どうしたらできますでしょうか?
よろしくお願いします。

【5618】Re:集計にて
回答  小僧  - 05/7/15(金) 10:13 -

引用なし
パスワード
   ▼まるこ さん:
おはようございます。

「日」が月2回の固定であるならば、

SELECT Q.コード, Q.月, [前日] & "," & [後日] AS 日
FROM [
SELECT T_aaa.コード, Month(T_aaa.日) & "月" AS 月,
Min(Day(T_aaa.日)) AS 前日,
Max(Day(T_aaa.日)) AS 後日
FROM T_aaa
GROUP BY T_aaa.コード, Month(T_aaa.日) & "月"
]. AS Q
GROUP BY Q.コード, Q.月, [前日] & "," & [後日];

上記 SQL をSQLビューに貼り付けて試してみて下さい。

一応結果は出せますが、2つのフィールドの値を1つのフィールドに
「,」でつなげる事はデータベース上は余り好ましくないと思われます。

【5624】Re:集計にて
質問  まるこ E-MAIL  - 05/7/15(金) 16:10 -

引用なし
パスワード
   ▼小僧 さん:

早速のご返事ありがとうございます。
「日」が月2回の固定ではなくて
可変でコードに対応してそれぞれ月別に1〜4日入ります。
その場合はどういうにすれば、よろしいでしょうか?
よろしくお願いいたします。

【5625】Re:集計にて
発言  小僧  - 05/7/15(金) 17:20 -

引用なし
パスワード
   ▼まるこ さん:
可変であればDAO等で1件ずつ処理していくしかないと思われます。

上で

>一応結果は出せますが、2つのフィールドの値を1つのフィールドに
>「,」でつなげる事はデータベース上は余り好ましくないと思われます。

と書きましたが、1つのフィールドに入れる理由はあるのでしょうか?

【5631】Re:集計にて
質問  まるこ E-MAIL  - 05/7/16(土) 14:27 -

引用なし
パスワード
   ▼小僧 さん:
ありがとうございます。

最終的にはレポートにて下記のようになればよいので
「,」でつなげるなくてもよいのです。
月に対して該当日数が表示できればよいのですが
レポートで4列で指定してもコードに対して月が1〜4と可変で出てくるので
該当月にたいして日数がうまく合致せず一致しません。

希望レポート
コード 3401

10月 1 7 14 21
11月 4 11 18 25
.
.

可変ですのでDAO等で1件ずつ処理していくしかないのでしょうか?。
DAOは、まだ詳しくはわからないので、もし他のやり方があればお教えいただければ助かります。
よろしくお願いします。

【5634】Re:集計にて
回答  小僧  - 05/7/19(火) 9:09 -

引用なし
パスワード
   ▼まるこ さん:
おはようございます。

クロス集計クエリを使ってみました。
元のテーブルをT_aaaとすると、

TRANSFORM Max(Day([日])) AS 日数
SELECT T_aaa.コード, Month([日]) & '月' AS 月名
FROM T_aaa
GROUP BY T_aaa.コード, Month([日]) & '月'
PIVOT "F" & DCount("*","T_aaa","[日] <=#" & [T_aaa].[日] & "# AND
    Month([日]) = " & Month([T_aaa].[日])) In ("F1","F2","F3","F4");


上記 SQL をクエリの SQL ビューに貼り付けて確認してみて下さい。

もっと複雑な処理(1週目は休みの場合は空白とか…)になりますと
VBAでの処理が必要になってくると思われます。

【5635】Re:集計にて
回答  てっちゃん  - 05/7/19(火) 10:10 -

引用なし
パスワード
   ▼まるこ さん:
>
>希望レポート
>コード 3401
>
>10月 1 7 14 21
>11月 4 11 18 25
>.
>.

#横から失礼します。

レポートで良いのであれば、
メインレポートで、コードと月を表示し、
日にち部分をサブレポート化するというのは如何でしょう?

クエリー(レコードソース)をメイン用とサブ用で2つ
用意すれば出来ると思います。

【5636】Re:横から
回答  たん  - 05/7/19(火) 10:22 -

引用なし
パスワード
   横から失礼。

テーブル構成自体に問題があるので、無理な処理が生じているのです。
順番を考慮した処理が必要なのであれば、月単位での処理順が必要です。

ID    コード     名     年月日   順
109    3401    カリナ    2005/10/07  1          
(以下略)

# クエリで順を出すことも可能だけど、面倒なのでパス。

クエリ1:
SELECT テーブル1.*, Format([年月日],"yyyy/mm") AS 年月, Day([年月日]) AS 日
FROM テーブル1;

クエリ2(クロス集計クエリ):
TRANSFORM First(クエリー1.日) AS 日の先頭
SELECT クエリー1.コード, クエリー1.名, クエリー1.年月
FROM クエリー1
GROUP BY クエリー1.コード, クエリー1.名, クエリー1.年月
PIVOT クエリー1.順;

で希望の形は出来そう。

【5637】Re:横から
発言  たん  - 05/7/19(火) 11:23 -

引用なし
パスワード
   日を文字列として、一列に表示するのであれば、

>クエリ2(クロス集計クエリ):

からクエリを作成し、クロス集計クエリを通常のクエリに
見せる事で、クロス集計結果の順フィールドを、個々の
フィールド名として使う事が可能になるので、
あとは、フィールドを&演算子で結合するだけ。

# クロス集計クエリからクエリを作ると、順フィールドは
# 数字のみのフィールド名として認識されてしまうので、
# クエリ作成時点で、別名に変えて置くこと。
# (やらないと、命名規則違反でクエリが誤動作するかも)

【5641】Re:集計にて
質問  まるこ E-MAIL  - 05/7/19(火) 15:39 -

引用なし
パスワード
   ▼小僧 さん:
まるこ です。

ありがとうございます。
言われたとおりにコピーしましたが

コード 月名 F1 F2 F3 F4
1234  10月
3456  10月

上記のとおりでてきましたがFのところに日数が出ず
空白になっています。
すみませんがもう一度お教え願えませんでしょうか?
よろしくお願い致します。

【5642】Re:集計にて
回答  小僧  - 05/7/19(火) 16:01 -

引用なし
パスワード
   ▼まるこ さん:
こんにちは。
コードもグループ化対象にするのを忘れていました。

TRANSFORM Max(Day([日])) AS 日数
SELECT T_aaa.コード, Month([日]) & '月' AS 月名
FROM T_aaa
GROUP BY T_aaa.コード, Month([日]) & '月'
ORDER BY Month([日]) & '月'
PIVOT "F" & DCount("*","T_aaa","[日] <=#" & T_aaa.日 & "# AND
      Month([日]) = " & Month(T_aaa.日) & " AND
      T_aaa.コード = " & [コード])
In ("F1","F2","F3","F4");


>上記のとおりでてきましたがFのところに日数が出ず
>空白になっています。

上の結果もだめでしたら、
クエリを貼り付ける → クエリデザイン → クエリの種類 → 選択クエリ → データシートビュー

で「式1」のフィールドに「F1」、「F2」等のデータが入るかを
確認してみて下さい。

【5643】Re:集計にて
質問  まるこ  - 05/7/19(火) 21:11 -

引用なし
パスワード
   ▼小僧 さん:
こんばんは
何度もすみません。
教えていただいたとおりコピーしてみましたが

クエリ式’[日] <=#2005/10/4# AND Month([日]) =10AND
     T_aaa.コード =1234' の構文エラー:演算子がありません。

と表示されてしまいました。

何度もすみませんがもう一度お教え願えませんでしょうか。
お願いいたします。

【5644】Re:集計にて
発言  小僧  - 05/7/20(水) 9:16 -

引用なし
パスワード
   ▼まるこ さん:
おはようございます。

>クエリ式’[日] <=#2005/10/4# AND Month([日]) =10AND
>     T_aaa.コード =1234' の構文エラー:演算子がありません。
>
>と表示されてしまいました。

こちらでは再現されないのですが…。

スペースに全角が使われてたりするとこのエラーが出るので、
もう一度確認してみてください。

【5647】Re:集計にて
質問  まるこ  - 05/7/20(水) 12:29 -

引用なし
パスワード
   ▼小僧 さん:

ありがとうございます。
クロス集計で下記のように出るようになりました。

コード 月名 F1 F2 F3 F4

3403 10月        21
4403 11月        18

コードに対してFの該当日が1ヶ所しかでません。
F1 F2の 該当日のところが出てこないのはどこか他を変更しなければならないでしょか。
(こういうふうにしたいのですが)
コード 月名 F1 F2 F3 F4

3403 10月 7   14   21
4403 11月 4   11   18 25

何度もすみません、よろしくお願い致します。

【5649】Re:集計にて
回答  小僧  - 05/7/20(水) 14:10 -

引用なし
パスワード
   ▼まるこ さん:
こんにちは。

>コード 名 F1 F2 F3 F4
>
>3403 10月 7  14  21
>4403 11月 4  11  18  25

の様になるSQLを組んだつもりです…。↑の方で提示させて頂きましたが、

>>上の結果もだめでしたら、
>>クエリを貼り付ける → クエリデザイン → クエリの種類 → 選択クエリ → データシートビュー
>>
>>で「式1」のフィールドに「F1」、「F2」等のデータが入るかを
>>確認してみて下さい。

を確認して頂けますでしょうか。

【5651】Re:集計にて
お礼  まるこ E-MAIL  - 05/7/20(水) 14:48 -

引用なし
パスワード
   ▼小僧 さん:
ありがとうございました。

違うパソコンで表示しましたら出来ていました。

色々お教えいただきましてありがとうございました。

たんさん、てっちゃんさん ありがとうございました。

小僧さん 本当にありがとうございました。

1713 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078263
(SS)C-BOARD v3.8 is Free