Microsoft Access 掲示板

カレンダー形式スケジュール表の休日コントロールの件

9 コメント
views
4 フォロー

初めまして、最近Accessを始めた初心者です。
会社の工程表を作成する為、こちらのカレンダー形式スケジュール表を参考にさせていただいています。
カレンダー形式のスケジュール管理フォーム作成 その1のコメントやフォーム作成 その2を参考に、土曜日を隔週に休日設定することはできたのですが、イレギュラーの休日や社内規定休日を設定するための休日コントロールを設定する方法がわかりません。
それとカレンダーフォームとは別にカレンダーテーブルも作成しているのですが、こちらにも休日を反映させたいです。
カレンダーテーブルは、こちらのサイトを参考にしています。
https://tsware.jp/tips/tips_401.htm
なにぶん不慣れで申し訳ございませんが、よろしくお願い致します。

zunn69
作成: 2020/05/20 (水) 09:19:11
通報 ...
1

イレギュラーの休日や社内規定休日を設定するための休日コントロールを設定する方法がわかりません。

「イレギュラーの休日や社内規定休日」を登録するテーブルを作成します。
例えば、下記のような感じです。

名前 T_休日

日付摘要
2020/1/1元日
2020/1/2社内規定休日
2020/1/3社内規定休日
2020/1/11建国記念の日

カレンダー形式のスケジュール管理フォーム作成 その3 - hatena chips の SetCalendar関数内の下記のコードを、

            .ControlTipText = ktHolidayName(D) '祝日名をヒントテキストに設定

下記のように修正すればいいでしょう。

            .ControlTipText = DLookup("摘要","T_休日","日付=#" & D & "#") '祝日名、定休日をヒントテキストに設定

それとカレンダーフォームとは別にカレンダーテーブルも作成しているのですが、こちらにも休日を反映させたいです。

tblカレンダ に「休日」フィールドを追加して、
参考にしたリンク先のコードに下記ようにコードを追加すればいいでしょう。


    !日付 = dtmLoop
    !曜日 = Format$(dtmLoop, "aaa")
    !通年日 = Format$(dtmLoop, "y")
    !通年週 = Format$(dtmLoop, "ww")
    !休日 = DLookup("摘要","T_休日","日付=#" & dtmLoop & "#") '追加
    .Update

2
zunn69 2020/05/21 (木) 10:39:21

早速のレスありがとうございます。
一応一度は成功したのですが、再度カレンダーフォームを起動すると「実行時エラー’13’ 型が一致しません。」とエラーが発生します。
デバック箇所は、

.ControlTipText = DLookup("摘要","T_休日","日付=#" & D & "#") '祝日名、定休日をヒントテキストに設定

になります。
カレンダーは基本操作画面フォームがあり、カレンダーボタンをクリックすると現在のカレンダーと年を入力・作成するサブフォームが開くようになっていますが、開かなくなりました。
この場合の対処も教えてくださますでしょうか?
申し訳ございませんが、よろしくお願いいたします。

3

コードを下記に修正したらどうでしょうか。

.ControlTipText = Nz(DLookup("摘要","T_休日","日付=#" & D & "#"),"") '祝日名、定休日をヒントテキストに設定
4

無事に動きましたありがとうございます。

5
zunn69 2020/05/21 (木) 11:15:17

度々申し訳ございません。
祝日のマクロとの併用はやはり難しいのでしょうか?
先の説明で不足していたのですが、祝日は休みが基本なので自動で入力できるとありがたいのですが。

6

If文で切り分けるといいでしょう。

  .ControlTipText = Nz(DLookup("摘要","T_休日","日付=#" & D & "#"),"") '定休日をヒントテキストに設定
  If .ControlTipText = "" Then  
    .ControlTipText = ktHolidayName(D) '祝日名をヒントテキストに設定
  End if
7

ありがとうございます。

8
zunn69 2020/05/21 (木) 17:15:20

再度すみません、サブフォームの年に同じ値を入れて作成すると重複のエラーが表示されるので、こちらをメッセージを出るようにしてるのですが、どうにも上手くいきません。
色々調べて入力規則を使う方法を試しましたが、別なエラーが表示されてしまい、上手く作動せず。
クエリを使用して行う方法は、設定が理解できず挫折しました。
VBAで組んでみたのは、すべての数値を弾くものになりました。
カレンダーテーブルに年だけのフィールドを作成して、それと入力フォームを比べて重複を確認しようとしましたが、IF関数で組みました上手くいきません。
申し訳ございませんが、よろしくお願いいたします。4

9

サブフォームのレコードソースのテーブルに「年」フィールドがあるということでしょうか。
もう少し、具体的かつ詳細な情報が必要です。その内容では状況が分かりません。

また、別の質問になると思いますので、新規に質問しなおしてください。
そのときに、具体的かつ詳細な情報を提示してください。