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 を受け取りたいです。ありがとうございました
1279 次
2 に答える
0
BETWEEN
MySQLにクエリを発行したいようです。
SELECT HolidayDate FROM PubHol
WHERE HolidayDate BETWEEN ? AND ?
...そして、クエリのパラメータに、関心のある値Course_Start
とCourse_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 に答える