2012-05-02 34 views
0

私はMS AccessをMySQLサーバーデータベースのフロントエンドとして使用しています。データベースに私は祝日の日付dd/mm/yyyyを記載したPubHol(公の祝日を意味する)と呼ばれるテーブルを持っています。私は、(別のテーブルにリンクされた)フォームを持っています。ここで、course_start dateとcourse_end dateを入力します。私は、関数が、course_startとcourse_endに入力された日付範囲がPubHolにリストされている日と一致するかどうかを調べるフィールドのlostfocusにトリガーする関数を作成したいと考えています。たとえば、クライアントにコース開始日が01/01/2012、コース終了時に15/01/2012があり、PubHolの日付が10/21/2012の間にある場合、MsgBoxに何かを伝えたいと思っています。日付範囲とテーブルVBAの日付を比較する

SELECT HolidayDate FROM PubHol 
WHERE HolidayDate BETWEEN ? AND ? 

を...そしてあなたが興味Course_StartCourse_End値を持つクエリのパラメータを入力:それはあなただけのMySQLへBETWEENクエリを発行する場合のように聞こえるあなた

+0

あなたは*文字列*として日付を格納しているのですか?もしそうなら、より適切なフィールドを使って*日付*としてそれらを保存してみてください。 –

+0

こんにちは。祝日の日付を日付として表に保管しています。 course_startとcourse_endの日付は、基本的に予約フォームである別のテーブル(Main_Data_Table)にあります。私が必要とするのは、従業員が新しい予約を入力し、PubHolテーブルの日付の1つに一致するcourse_startとCourse_endを入力すると、bla bla blaというメッセージが表示されます... thanks – elstiv

+0

そう、「dd/mm/yyyy "という部分は、まったく無関係でしたよね?テキスト形式は実際にはどのように格納されているのではないのですか? –

答えて

0

をありがとうございます。 (私はVBAがパラメータ化されたクエリを処理できると仮定しています)。

+0

多くのおかげで - 私はそれを試して元に戻す... – elstiv

0

データベースに文字列データ型ではなく、日付データ型を使用したと仮定すると、日付範囲に属するテスト休暇はVBA

MySQLのテーブルはアクセスDBにリンクされている場合:

私はそれが条件

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

ノートを作る簡素化する使用私のアクセスライブラリ

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 

でこの機能を見つけましたODBCでは、Access(Jet)SQL構文を使用できます。アクセス(正確にはODBCドライバ)は自動的にMySQL構文に変換されます。

+0

多くのおかげで、明日の朝にそれを試して元に戻すでしょう。ありがとうございます。 – elstiv

+1

*プラットフォームが型付きの値とパラメータ化されたSQLを使用することをサポートしている場合は、文字列形式に頼る代わりにSQLを使用することを強くお勧めします。 –

+0

@JonSkeet:パラメータ化されたクエリが通常より優れていることに同意します。しかし、ここで私は 'Date'とタイプされた値を使って作業しており、私たちはデスクトップシナリオを持っています。したがって、SQLインジェクションは問題ではありません。さらに、便利な組み込みの 'DCount'関数を使いたいと思います。私は、SQLインジェクションが「DCount」とODBCを介して可能であるのかどうか疑問です。 –