0

MySQL サーバー データベースのフロントエンドとして MS Access を使用しています。データベースには、祝日の日付 dd/mm/yyyy をリストする PubHol (祝日を意味する) というテーブルがあります。course_start 日と course_end 日を入力するフォーム (別のテーブルにリンク) があります。入力された日付範囲 course_start および course_end が PubHol にリストされている日と一致するかどうかをチェックする、フィールドの lostfocus でトリガーされる関数を作成したいと思います。たとえば、クライアントのコース開始日が 2012 年 1 月 1 日で、コース終了日が 2012 年 1 月 15 日で、PubHol に 2012 年 10 月 1 日の間の日付がある場合、何かを言っている MsgBox を受け取りたいです。ありがとうございました

4

2 に答える 2

0

BETWEENMySQLにクエリを発行したいようです。

SELECT HolidayDate FROM PubHol
WHERE HolidayDate BETWEEN ? AND ?

...そして、クエリのパラメータに、関心のある値Course_StartCourse_End値を入力します(VBAがパラメータ化されたクエリを処理できると想定しています)。

于 2012-05-02T14:19:17.157 に答える
0

データベースで文字列データ型ではなく日付データ型を使用したとすると、日付範囲に該当する休日をテストすると、VBAでは次のようになります。

Dim condition As String
Dim course_start As Date, course_end As Date

course_start = ...
course_end = ...
condition = "[Holiday] Between #" & Format$(course_start,"yyyy\/mm\/dd") & _
            "# AND #" & Format$(course_end,"yyyy\/mm\/dd") & "#"
If DCount("*", "PubHol", condition) > 0 Then
    MsgBox ...
End If

この関数はAccessライブラリで見つかりました

Public Function JetSqlDate(ByVal d As Variant) As String
    If IsNull(d) Then
        JetSqlDate = "NULL"
    Else
        JetSqlDate = Format$(d, "\#mm\/dd\/yyyy hh\:nn\:ss\#")
    End If
End Function

これを使用すると、条件の作成が簡単になります

condition = "[Holiday] Between " & JetSqlDate(course_start) & _
            " AND " & JetSqlDate(course_end) 

注:MySQLテーブルがODBCを使用してAccess DBにリンクされている場合は、Access(Jet)SQL構文を使用できます。Access(正確にはODBCドライバー)は、それをMySQL構文に自動的に変換します。

于 2012-05-02T14:19:24.647 に答える