• ベストアンサー

Accessで支払日を出したい

アクセス初心者ですがいきなり顧客管理と業務管理を やれとの社命で・・・ 顧客テーブルで「末締め」の翌月20日払いや「20締め」の45日後払いだとかを記入して 業務クエリで「作業日」から「支払い日」を表示できる ようにしたいのですが・・・ 意味分かりますか?すみません「子供に」おしえるくらいの気持ちで教えていただけますでしょうか? お願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

>業務クエリで「作業日」から「支払い日」を表示できるようにしたい・・・ >「末締め」の翌月20日払いや「20締め」の45日後払い これなら顧客テーブルと業務テーブル?(取引先・作業日・金額など)からクエリを使い表示することが出来ます。 テーブルに必要なフィールドがあれば良いのですがなければフィールドを追加して作らなくてはいけません。 顧客テーブルに締日・翌月定時払いや締め後45日後払いの判断をする支払区分・支払期日・据置日のフィールドが必要です。 例えば 締日は締日の日にち・支払区分は1:定時 2:後払い・支払期日は定時払いの支払い日・据置日は定時払い:月数(翌月なら1・翌々月なら2)後払い:45などの据置日数を保存する。 例えば末締め・翌月20日払いの場合 締日  支払区分  支払期日 据置日 31    1     20    1 支払日: DateSerial(Year(Date(),Month(Date())+[据置日],[支払期日]) で支払う日を求められます。上記はDate()を使って今日の日付を求めてそれを元に支払日を出すようにしていますが指定の日付をDate()の部分に代入する記述に変えることが出来るので作る内容によって変わります。基準となる日付(2005/12月分を出したいとか)をフォームから入力することもできます。 例えば20日締め・45日後払いの場合 締日  支払区分  支払期日 据置日 20    2          45 支払日: DateAdd("d",[据置日],DateSerial(Year(Date(),Month(Date()),[締日])) で支払う日を求められます。上記も今日(Date())を基準にしてありますが定時払いと以下同様です。 定時払いと後払いの支払う日を一度に表示したい場合は支払区分を使って上記の記述を使い表示できます。 支払日: IIf([支払区分]=1,DateSerial(Year(Date(),Month(Date())+[据置日],[支払期日]),DateAdd("d",[据置日],DateSerial(Year(Date(),Month(Date()),[締日])) ) これで一度に支払日を求められます。(これも基準は今日の日付になっていますが他と同様に基準日の取得の仕方は色々ありますのでどのように取るかによって変わってきます) この様にすれば締日の日付をテーブルに保存するような必要はありません。 データベースのテーブルを構築する時は通常は可変するデータはあまりテーブル自体に持たない(保存しない)ようにします。 後は作業テーブルの締日間のレコードを集計して支払う合計額を算出するクエリを作ってクエリ内で顧客テーブルを追加するか作業テーブルの集計するクエリを作りそのクエリを元にクエリを作り顧客テーブルを追加して顧客コード等の顧客を識別できるキーでリレーションし表示に必要なフィールドを選択し新しいフィールドに支払日として前記の支払日を求める記述を入れれば出来ます。 そのクエリでテーブルを作れば支払先と支払日・金額のレコードでなる支払テーブルが出来上がります。 大体こんな感じだと思いますが。

yanyanyanyan
質問者

お礼

みなさんありがとうございました 実はなかなか作業がはかどらず試してから お返事しようと思ってるうちに「放置」状態に なってしまいましたm(__)m しっかり試して追質等でまたご教授お願いします

その他の回答 (2)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

Q1.「20日締め」は必ず20日でしょうか? (土日曜日の関係でズレることがあるのか) Q2.「作業日」とはなんですか? *用語の意味や仕様を明確にしなければ、何もできません。

回答No.1

仕様が明確でないのでヒントだけですが・・・ 先ず、締め日区分("20","30"など)から締め日(2005/12/20,2005/12/31など)を決定してテーブルに保存してください。 次に、クエリの演算フィールドに次のように入力しておけば良いです。 > 「末締め」の翌月20日払い 支払日: DateSerial(Year([締め日]),Month([締め日])+1,20) > 「20締め」の45日後払い 支払日: DateAdd("d",45,[締め日])

関連するQ&A