hatena の Microsoft Access 掲示板



[7208] ガントチャートで工程表を作成する方法 Name:ほっち MAIL Date:2017/07/12(水) 18:05 [ 返信 ]
hatenaさんのガントチャートを拝見しました。
素晴らしいです。

hatenaさんのガントチャートを参考に工程表を作成したいと考えています。

内容
1.テーブル
ID・・・オートナンバー型
整理番号・・・数値型(重複あり)
件名・・・テキスト型
開始年月日・・・日付型
終了年月日・・・日付型

2.内容
開始年月日と終了年月日は月をまたぎます。
年度を通してのガントチャートを作成したいです。
表示は年度として目盛間隔は月を四週単位にしたいです。

>>>>>
テキストボックスのコントロールソースに式を設定するとやはり重くなる(すぐに反映されない)ので、レコードソースのクエリに48個分の演算フィールドを作成してそこに式を設定します。

T1: IIf(#00:30:00# Between [出社時刻] And [退社時刻],'g','')

T2: IIf(#01:00:00# Between [出社時刻] And [退社時刻],'g','')

T3: IIf(#01:30:00# Between [出社時刻] And [退社時刻],'g','')

と順に作成していきます。最後のフィールドは、

T48: IIf(#1899/12/31# Between [出社時刻] And [退社時刻],'g','')

となります。(#1899/12/31# は「24時」という意味です。日付/時刻型では #24:00:00# という表示はできません。)

>>>>>>>>>>>>>>>>>
上記のhatenaさんの24時間単位の記述をどのように変更すれば、
2.の内容が実現できるのでしょうか?

アドバイスをよろしくお願いいたします。

[7209] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/14(金) 06:12
> 表示は年度として目盛間隔は月を四週単位にしたいです。

というのが具体的にどのようなものなのか分かりません。

例えば本年度(2017/04〜2018/03)なら、どのような目盛りになるのですか。

4月1週
  2週
  3週
  4週
5月1週
  2週
  3週
  4週

という感じでしょうか。(例は、縦になってますが、実際は横に並ぶ)

だとすると、7日間毎にすると、余りがでますが、それは第4週にいれる感じでしょうか。

4月1週 4/01〜4/07
  2週 4/08〜4/14
  3週 4/15〜4/21
  4週 4/22〜4/31

[7210] RE:ガントチャートで工程表を作成する方法 Name:ほっち MAIL Date:2017/07/16(日) 19:59
hatenaさん、返信ありがとうございます。

具体的な記述がなく、大変失礼しました。


年度は2017/04〜2018/03です。
月表示は

>>>>
だとすると、7日間毎にすると、余りがでますが、それは第4週にいれる感じでしょうか。

4月1週 4/01〜4/07
  2週 4/08〜4/14
  3週 4/15〜4/21
  4週 4/22〜4/31

hatenaさんが記述してくださった上記の方法で、お願いいたします。

よろしくお願いいたします。

[7217] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/18(火) 15:05
テーブルのデータの期間と、ガントチャートの期間が一部でも重なっていたら、塗りつぶす、という仕様とします。

例えば、テーブルの
開始年月日 2017/04/12
終了年月日 2017/04/18
の場合、

4月1週 4/01〜4/07 
  2週 4/08〜4/14 ○
  3週 4/15〜4/21 ○
  4週 4/22〜4/31

というようになります。(○が塗りつぶし)

テーブルデータの方も、ガントチャートの方も、幅のある期間なので、両社が重なるという条件式は、下記で説明しています。

クエリでの期間の抽出条件 - hatena chips

上記の一番最後の式を利用します。


T1: IIf([開始年月日] <= DateSerial([Forms]![フォーム名]![年度],4,7) And DateSerial([Forms]![フォーム名]![年度],4,1) <=[終了年月日],"g","")

T2: IIf([開始年月日] <= DateSerial([Forms]![フォーム名]![年度],4,14) And DateSerial([Forms]![フォーム名]![年度],4,8) <=[終了年月日],"g","")

T3: IIf([開始年月日] <= DateSerial([Forms]![フォーム名]![年度],4,21) And DateSerial([Forms]![フォーム名]![年度],4,15) <=[終了年月日],"g","")

T4: IIf([開始年月日] <= DateSerial([Forms]![フォーム名]![年度],4,31) And DateSerial([Forms]![フォーム名]![年度],4,22) <=[終了年月日],"g","")

以下同様に、D48 まで作成します。D48は下記になります。

T48: IIf([開始年月日] <= DateSerial([Forms]![フォーム名]![年度]+1,3,31) And DateSerial([Forms]![フォーム名]![年度]+1,3,22) <=[終了年月日],"g","")

フォーム上には、「年度」選択用のコンボボックス、48個のテキストボックスを配置して、コントロールソースを T1 T2 ・・・・T48 と設定します。
この辺は、サンプルの F_出退勤 とほぼ同じ構成になります。

マウスドラッグで範囲指定はちょっと難しいので、保留。

[7232] RE:ガントチャートで工程表を作成する方法 Name:ほっち Date:2017/07/26(水) 18:21
hatenaさん、ご丁寧なアドバイス、ありがとうございます。
私の知識不足で頭が混乱しています。
再度、ご教授をお願いいたします。
できたところまでと分からない部分を添付ファイルにまとめました。

どうぞよろしくお願いいたします。

[7233] RE:ガントチャートで工程表を作成する方法 Name:ほっち Date:2017/07/26(水) 18:23
できるところまで作成したDBです。

よろしくお願いいたします。

[7238] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/27(木) 13:24
サンプルファイルを元に修正を試みましたが、
4週×12か月で48のフィールドが必要になり、
かつ条件式も複雑になるために、
クエリまではできましたが、
フォームで開こうとすると、「式が複雑すぎる」と怒られました。

解決法もないことはないのですが、
これでは、メンテナンスも大変なので、

帳票フォームでガントチャート(マウスドラッグで範囲指定) - hatena chips

「一つのテキストボックスにテキストとしてグラフ表示」の方法を元に作成することをお勧めします。

[7240] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/27(木) 16:24
T_工程表からクエリを作成して下記の4つのフィールドを追加します。

SDate: DateSerial([年度]![cb年度],4,1)

W1: DateDiff("m",SDate,開始年月日)*4+IIf(Day(開始年月日)>21,3,(Day(開始年月日)-1)\7)

W2: DateDiff("m",SDate,終了年月日)*4+IIf(Day(開始年月日)>21,3,(Day(終了年月日)-1)\7)

G: Space(W1) & String(W2-W1,ChrW(9607))

これをフォームのレコードソースにして、テキストボックスのコントロールソースを G にすれば、あとはサンプルのテキストボックスの設定どおりで希望のガントチャートになります。

[7241] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/27(木) 18:27
サンプルを作成してみました。

マウスドラッグにも対応してます。

微調整は必要だと思いますが、いちおうそれなりに動いています。

参考にしてください。

[7242] RE:ガントチャートで工程表を作成する方法 Name:ほっち Date:2017/07/27(木) 19:41
hatenaさん、ありがとうがざいます!!!
感謝です。
私もクエリまではできましたが、フォームで開こうとすると、「式が複雑すぎる」と怒られてしまいました。

hatenaさんの知識とスキルは素晴らしいです。イメージ通りのDBです。

関連して1つご質問があります。
年度をまたいで仕事が発生する場合があります。
その時の対処方法はありますか?

ご指導をよろしくお願いいたします。


【お礼】

独学でAccessを勉強しています。
hatenaさんの掲示板があることでスキルアップができています。
今後ともよろしくお願いいたします。
このサイトに出会えて良かったです。

[7243] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/07/28(金) 02:11
> 関連して1つご質問があります。
> 年度をまたいで仕事が発生する場合があります。
> その時の対処方法はありますか?

まずは、どのようなユーザーインターフェイスを考えていますか。

現状のままで、年度をまたぐものはエラー表示になりますが、
とりあえずそれに対処するには、クエリの W1 の式を下記のように変更すればいいでしょう。

W1: IIf([開始年月日]<=SDate,0,DateDiff("m",SDate,[開始年月日])*4+IIf(Day([開始年月日])>21,3,(Day([開始年月日])-1)\7))

エクセルファイルのように、
2月から表示するようにしたければ、SDate を下記のようにすればいいでしょう。

SDate: DateSerial([年度],2,1)

上記は一例ですので、どのようなユーザーインターフェイスのするのが適切なのか、よーく検討してみてください。
可能か可能でないかは、無視してまずは一番使いやすいUIを検討してください。

それを提示できたら、それから可能か可能でないか、どのように実現でききるか、アドバイスします。

[7247] RE:ガントチャートで工程表を作成する方法 Name:ほっち Date:2017/07/29(土) 08:21
heantaさん、ありがとうございます。

ユーザーインターフェイスをもう一度、検討をして図にまとめてみました。

ご指導方、よろしくお願いいたします。


[7249] RE:ガントチャートで工程表を作成する方法 Name:hatena Date:2017/08/01(火) 13:31
1月から表示するなら、SDateの式を下記に変更すればいいでしょう。

SDate: DateSerial([年度],1,1)

あとは、前回の回答の式で年度をまたぐものには対応できます。

前年度末分を同じ行に表示するなら、
テキストボックスを重ねて表示させればいいでしょう。
(背景スタイルは透明)
そのデータをどこから持ってくるかは、
どのような規則性で当年度と前年度が対応するのか不明ですので、
回答不能です。

[7268] RE:ガントチャートで工程表を作成する方法 Name:ほっち Date:2017/08/05(土) 13:53
hatenaさん、アドバイスいただきありがとうございます。

アドバイスをもとに実践してみます。

ガントチャートが表示されたフォームのデータを変更すると、

正確なガントチャートが表示されません。

Me.Requeryが記述されているので、フォームに入力したデータを後で

修正しても正確に表示されると思ったのですが・・・。

うまくいきません。

もう一度、確認していただけないでしょうか?

よろしくお願いします。


  



無料レンタル掲示板・日記・ブログ Progoo