Microsoft Access 掲示板

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

8 コメント
views
4 フォロー
3
hatena 2021/08/20 (金) 18:37:41 修正

hirotonさんの提示したテーブルのような形にしない限りは、簡単にはならないと思います。

どのようなUIなのか不明なので、
フォーム上に「日付」と「単価」というテキストボックスがあると仮定すると、
下記のようなコードで期待する結果にはなります。

Private Sub 日付_AfterUpdate()
    Dim res
    
    res = DLookup("単価", "単価マスタ", "#" & Me.日付 & "# Between 開始日 AND 終了日")
    
    If IsNull(res) Then
        res = DMax("開始日", "単価マスタ", "#" & Me.日付 & "# >=開始日 AND 終了日 Is Null")
        If Not IsNull(res) Then
            Me.単価 = DLookup("単価", "単価マスタ", "#" & res & "#=開始日")
        End If
    Else
        Me.単価 = res
    End If    
End Sub

hirotonさんの提示したテーブルなら、下記の1行のコードで済みます。

Me.単価 = DLookup("単価", "単価マスタ", "#" & Me.日付 & "# Between 開始日 AND 終了日")
通報 ...