Microsoft Access 掲示板

一時的な日付範囲指定を含む日付データからの抽出 / 2

8 コメント
views
4 フォロー
2
tetsusi 2021/08/20 (金) 17:56:57 b557c@0c0d2

2レコード以上は範囲入力側の制御の時点で入れられない形にしています
>(8/5~8/10 & 8/6~8/11のような複数で日付が被る形はありません)

あくまで終了日付が入るのは期間限定の臨時の時だけで基本的には開始日で単価を制御するようになっており、
単価情報を入力する側が期間限定明け後のデータ入力(ここでは8/11~8/19)を意識しなくてもいい形にしたいというものです

通報 ...
  • 7
    hiroton 2021/08/23 (月) 09:54:19 f1def@f966d >> 2

    例えば

    開始日終了日単価
    2021/08/01Null150
    2021/08/052021/08/10120
    2021/08/112021/08/19130
    2021/08/20Null140

    のようなデータの時、指定日=2021/08/15の場合

    指定日付>=開始日 AND ISNULL(終了日)=FALSE で抽出

    すると

    開始日終了日単価
    2021/08/052021/08/10120
    2021/08/112021/08/19130

    と、2レコードHITします

    2レコード以上は範囲入力側の制御の時点で入れられない形にしています

    これは、つまり、このようなレコードは存在しないということでしょうか?だとすると、終了日に値の存在が許されるレコードは1つだけという歪なテーブル構造なんでしょうか?

    質問の解自体はhatenaさんの回答の通りでしょう。ただ、手順や処理時間で見た簡略化は見込めないと思います。この観点から言えば

    これ以上簡単にできる方法は

    ないです

    しかしながら、データ構造の観点から言えば、「一時的に変わる時」のデータは単純に追加するだけで済むというメリットができ、データ管理面での単純化なら見込めます

    さらに言えば、既に指摘している通り、なぜ最終的なデータ構造でテーブルを作らないのか?という話になります。データ構造が単純で、データの取得もシンプルです
    単純=「簡単」とは限らないですが、テーブル構造からはわからない独自ルールを運用するよりはよほど「簡単」でしょう。

    単価情報を入力する側が期間限定明け後のデータ入力(ここでは8/11~8/19)を意識しなくてもいい形にしたいというものです

    本当の主題はこれですよね?
    ならば、職人芸のようなテーブル構造・データ取得を考えるよりも単純に「期間限定明け後のデータ入力(ここでは8/11~8/19)を」自動化したいと考えるべきでしょう