Accessの日付型をVBで検索するには?

解決


生徒  2005-02-18 21:13:55  No: 88515

VB6+Access2000でデータベースの操作を学習しています。
次のソースで日付による抽出(検索)をしたいのですが
全然うまくいきません。
ネットやら本で参考になる情報を探してますが、もう
3日になります。

どなたかご教授よろしくお願いします。

抽出結果は  DBGrid  への出力です

Private Sub Command1_Click()
    Dim sDate As String    'テキストボックスからの入力(形式yyyy/mm/dd)
    Dim ssDate As Date    '日付型格納用
    Dim search As String  'SQL検索用

    sDate = Text1.Text
    ssDate = CDate(MyDate)

    sarchi = "select * From 従業員情報テーブル Where  生年月日 = ssDate"
    Data1.RecordSource = search
    Data1.Refresh
End Sub


いな  2005-02-18 21:18:41  No: 88516

VBではなく、単純にSQLの話になりますが、

 sarchi = "select * From 従業員情報テーブル Where  生年月日 = ssDate"

生年月日のフォーマットも(YYYY/MM/DD)形式に変換してから比較してください。

ORACLEの書き方で申し訳ないですが、
WHERE TO_CHAR(生年月日,"YYYY/MM/DD") とすべきでは?


魔界の仮面弁士  2005-02-18 21:59:04  No: 88517

> Dim sDate As String        'テキストボックスからの入力(形式yyyy/mm/dd)

Jet SQL における日付書式は、
  2005/02/18
ではなく、
  #2/18/2005#
という形式が正式な構文となります。

〈Microsoft JET SQL リファレンスからの引用〉
| 日付リテラルを指定する場合は、日本語版の Microsoft Jet
| データベース エンジンであっても米国形式で指定する必要が
| あります。たとえば、1996 年 5月 10日を指定する場合は、
| 5/10/96 のように米国形式で表します。日付は、必ず次の
| 例のように数値記号 (#) で囲んでください。

| たとえば、1996 年 5月 10日付けのレコードを米国語の
| データベースの中で検索する場合は、次のような SQL
| ステートメントを使用します。

| SELECT *
| FROM 注文
| WHERE 出荷日 = #5/10/96#;

> Dim search As String    'SQL検索用
> sarchi = "select * From 従業員情報テーブル Where  生年月日 = ssDate"
変数名が違いますけど……。

とりあえず、
 search = "SELECT * FROM 従業員情報テーブル WHERE 生年月日=#" & Format(ssDate, "MM\/dd\/yyyy") & "#"
のようにしてみてください。(/ではなく\/を使う必要がある事に注意)

なおJetの日付型は、(VBの日付型と同様に)時刻情報まで保持しています。
もし、生年月日フィールドに、(00:00:00 以外の)時刻情報が含まれて
いるのであれば、SQLの比較条件に手を加える必要があります。


生徒  2005-02-18 22:21:10  No: 88518

ありがとうございます!勉強になりました!!これからもよろしくお願いします!!!


ひどいな、あんた  2005-02-18 22:50:33  No: 88519

http://www.bcap.co.jp/hanafusa/vbbbs/wforum.cgi?mode=allread&no=2192&page=0


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加