Microsoft Access 掲示板

請求日を表示する

5 コメント
views
4 フォロー

請求リストフォーム(帳票)があります。
その中に請求日テキストボックスがあり、請求日が決まれば入力します。
その時、締日を自動で表示したいです。
締日の求め方ですが、別に「会社情報テーブル」があり、そこにそれぞれ会社ごとに「1か月後末日」等の情報があります。
そこら辺の条件分岐はVBAで作成できると思うのですが、反映の仕方がわかりません。
クエリを使いたいと思いましたが、クエリで可能でしょうか?

おもち
作成: 2021/01/02 (土) 11:22:11
通報 ...
1

締日定義を「1か月後末日」とすると、条件分岐が面倒です。(できないことはないですが)

下記のようにすれば、簡単に締め日を式で計算できます。

「会社情報テーブル」に下記のフィールドを持たせます。
締日日 数値型
締日月後 数値型

例えば、締め日が「1か月後20日」なら、
締日日: 20
締日月後: 1
と入力します。
「1か月後末日」なら、
締日日: 0
締日月後: 1
とします。

末日の場合は、締日日を0とします。

請求リストフォームのレコードソースのテーブルからクエリを作成して、フィールド欄に下記の式を設定すれば締日か表示されます。

締日: DateSerial(Year([請求日]),Month([請求日])+[締日月後]-([締日日]=0),[締日日])

このクエリをフォームのレコードソースにして、締め日のテキストボックスのコントロールソースを「締日」とすれば請求日を入力すれば締日が表示されます。

2
おもち 2021/01/04 (月) 10:08:19 9f0f1@e2de4

なるほど…!イメージがわきました。
作ってみて、またわからなければ質問させていただきます。
ありがとうございました!

3
hiroton 2021/01/05 (火) 12:00:47 dfd95@f966d

締日は普通、情報は日付のみでは?

請求日 支払い条件1(20日締め翌月末) 支払い条件2(締め翌月末)
締日 支払日 締日 支払日
2021/1/20 2021/1/20 2021/2/28 2021/1/31 2021/2/28
2021/1/21 2021/2/20 2021/3/31 2021/1/31 2021/2/28

支払条件には月の区切りとする日(締日)と、支払いに関する日付(担当者が入金処理をする日)の2つの日付の情報が含まれるものです(支払いの方法(現金、手形等)も記述されるものですが今回は省略)

例外としては
前払い(初回取引のためだったり)
請求後30日(「締日」を定めない。日本の企業ではまずない)
なんかもありますね

さておき、「1か月後末日」では何を計算したいのかわかりません。「締日」の月が変わるのは「請求日」と「締日」の関係からであって、「1か月」という情報は関係ありません。記述の仕方からすると「締日」に関する情報が不足のようにみえます
支払日を求めたいのであっても、上記のように「締日」の条件で月が変わるため情報不足です


いずれにせよhatenaさん指摘のようにデータベース上では計算しやすい数値としてフィールドに分けて保存するのが基本で、
締日日(末締めは0)
支払月間
支払日日(末日は0)
の3つのフィールドを持つといいでしょう

締日: DateSerial(Year([請求日]),Month([請求日])+IIf(Day([請求日])>[締日日],1,0),[締日日])
支払日: DateSerial(Year([締日]),Month([締日])+[支払月間]+IIf([支払日日]=0,1,0),[支払日日])

Trueの扱いについて
hatenaさんの式の-([締日日]=0)は面白いなぁと思います。hirotonの式では+IIf([支払日日]=0,1,0)と記述しました。どちらも同じ結果になるのでどちらでもいいです。ただし、ACCESSなら

こんぴゅうたぁのはなし になるのですが、ACCESSで適当なフォームを作り、テキストボックスを配置してコントロールソースを=Date()+Trueとします。つぎに、Excelを立ち上げて適当なセルに=TODAY()+TRUEとしてみます。結果はご覧あれ

テクニックとしてどこまで許容するかという話になるんですが、真偽値をそのまま計算に使うのは上記のようにそれなりの知識が必要になるのでオススメしません

4
おもち 2021/01/30 (土) 10:40:35 0029a@1c915

質問して以来、作成する時間が取れておらず、やっと時間がとれたので確認中です。
おっしゃるとおり、実際の条件は「30日締 2月後30日払」といったものでした。
最初に質問した時きちんとかけておらず申し訳ありません。
今からいただいた回答を確認して作ってみます。わからなければ質問させていただくかもしれません。

5
おもち 2021/01/30 (土) 14:37:13 0029a@1c915 >> 4

おかげさまでうまくいきました!ありがとうございました。