Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1586 / 2272 ツリー ←次へ | 前へ→

【6393】文字列の日付検索について さらだ 05/10/3(月) 17:20 質問[未読]
【6394】Re:文字列の日付検索について hatena 05/10/3(月) 22:44 回答[未読]
【6395】Re:文字列の日付検索について さらだ 05/10/3(月) 23:26 質問[未読]
【6396】Re:文字列の日付検索について hatena 05/10/4(火) 0:57 回答[未読]
【6397】Re:文字列の日付検索について さらだ 05/10/4(火) 11:51 お礼[未読]

【6393】文字列の日付検索について
質問  さらだ  - 05/10/3(月) 17:20 -

引用なし
パスワード
   初めて質問します。
よろしくお願いいたします。

Dateというフィールドに
01-09-05(dd-mm-yy)という形で文字列で日付が入っています。
02-09-05
03-09-05
01-10-05

レポートを作成するときに、
フォームで01-09-05から、03-09-05までのデータをプリントアウトしたい
というTEXTBOXを作成しました。
(日付を指定してその間にあるデータをプリントアウトさせるというものです)
結果としては01-09-05、02-09-05、03-09-05のデータがプリントアウト
されたらOKなのですが、
実際はすべてされてしまいます。

コードの記述はこうです。
Private Sub Report_Open(Cancel As Integer)
  Dim strStart As String
  Dim strEnd As String
  Dim strsql As String
  
  strStart = Forms!PrintOut!txtStart ’範囲指定する画面からの値
  
  strEnd = Forms!PrintOut!txtEnd
  
  If (strStart <> "") And (strEnd <> "") Then
    strsql = "Select * From BackupLog Where Date Between '" & strStart & "' And '" & strEnd & "'"
    Me.RecordSource = strsql
  End If
  
  If (strStart = "") And (strEnd = "") Then
    Me.RecordSource = "BackUpLog"
  End If

あっさり動くと考えておりましたら、
01-10-05のデータまでプリントアウトされてしまいました。
01が先に来ているのが原因と思われます。

お知恵をお借りしたいのですが、
このように
dd-mm-yyで文字列としてフィールドに格納されている場合、
範囲指定をする方法をどなたかご教授ください。

【6394】Re:文字列の日付検索について
回答  hatena  - 05/10/3(月) 22:44 -

引用なし
パスワード
   >Dateというフィールドに
>01-09-05(dd-mm-yy)という形で文字列で日付が入っています。
>02-09-05
>03-09-05
>01-10-05
>
>レポートを作成するときに、
>フォームで01-09-05から、03-09-05までのデータをプリントアウトしたい
>というTEXTBOXを作成しました。
>(日付を指定してその間にあるデータをプリントアウトさせるというものです)
>結果としては01-09-05、02-09-05、03-09-05のデータがプリントアウト
>されたらOKなのですが、
>実際はすべてされてしまいます。

>    strsql = "Select * From BackupLog Where Date Between '" & strStart & "' And '" & strEnd & "
Between A And B は、A〜Bまでの間(A以上B未満)ということなので、

>01-10-05のデータまでプリントアウトされてしまいました。

01-10-05 は当然入りますよね。

希望のことは、01年から03年までの、09-05 のデータを抽出したいと
言うことですか。
それとも別の意味なのかな?

【6395】Re:文字列の日付検索について
質問  さらだ  - 05/10/3(月) 23:26 -

引用なし
パスワード
   ▼hatena さん:
>>Dateというフィールドに
>>01-09-05(dd-mm-yy)という形で文字列で日付が入っています。
>>02-09-05
>>03-09-05
>>01-10-05
>>
>>レポートを作成するときに、
>>フォームで01-09-05から、03-09-05までのデータをプリントアウトしたい
>>というTEXTBOXを作成しました。
>>(日付を指定してその間にあるデータをプリントアウトさせるというものです)
>>結果としては01-09-05、02-09-05、03-09-05のデータがプリントアウト
>>されたらOKなのですが、
>>実際はすべてされてしまいます。
>
>>    strsql = "Select * From BackupLog Where Date Between '" & strStart & "' And '" & strEnd & "
>Between A And B は、A〜Bまでの間(A以上B未満)ということなので、
>
>>01-10-05のデータまでプリントアウトされてしまいました。
>
>01-10-05 は当然入りますよね。
>
>希望のことは、01年から03年までの、09-05 のデータを抽出したいと
>言うことですか。
>それとも別の意味なのかな?

Dateの並び方がdd-mm-yyなので
09-05のものを抽出したいという意味です。
説明不足で申し訳ありません。
たとえばDateフィールドに
31-08-05
01-09-05
02-09-05
03-09-05
04-09-05
05-09-05
01-10-05
02-10-05
03-10-05
と入っていたとして
01-09-05から05-09-05を抽出したいということになります。
場合によっては
01-09-05から02-10-05を抽出する場合もあります。
ご面倒なのですがどうぞご教授願えればと思います。
よろしくお願いいたします

【6396】Re:文字列の日付検索について
回答  hatena  - 05/10/4(火) 0:57 -

引用なし
パスワード
   >Dateの並び方がdd-mm-yyなので

あっ、なるほど、これを見逃していました。

テキスト型の並び順は先頭から優先されるので、
yy-mm-dd になるように並び替えて比較することに
なりますね。

Right([Date],2) & Mid([Date],4,2) & Left([Date],2)

strStart strEnd も同様に並び替えてください。

【6397】Re:文字列の日付検索について
お礼  さらだ  - 05/10/4(火) 11:51 -

引用なし
パスワード
   hatenaさん
お知恵拝借ありがとうございました。
無事に表示することが出来ました。ありがとうございました。

1586 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078230
(SS)C-BOARD v3.8 is Free