アプリ版:「スタンプのみでお礼する」機能のリリースについて

アクセスの検索フォームで
期間の抽出をしたいと思っています。

クエリではできるのですが、クエリではなく、コードビルダを使用しています。

「検索フォーム」で条件を入力し、「T_マスタテーブル」から作成した
「検索結果フォーム」に表示したいのです。

検索フォームの
「取得日1」に1999/3/6、「取得日2」に2002/4/25
と入力した場合、1999/3/6~2002/4/25の間が表示されるようにしたいのです。

どのように入力すればいいのでしょうか?

宜しくおねがいがします。

Ac2000

A 回答 (2件)

再びmaruru01です。



まず、WhereCondというのは、全検索条件を繋げた最終的な条件文字列ですから、
WhereCond = "取得日 BETWEEN #" & 取得日1.Value & "# AND #" & 取得日2.Value & "#"
としてしまうと、これまでのIDやら名前やらが全て無駄になってしまいます。(せっかくWhereCondに格納したのに、上書きしてしまっているので。)
で、書き方はIDとかと基本的に同じです。
変数宣言で
Dim whereDate As String
を追加し、取得日のところを、

'取得日
If Me!txt取得日1.Value <> "" And Me!txt取得日2.Value <> "" Then
  whereDate = "(T_マスタテーブル.取得日 BETWEEN #" & Me!txt取得日1.Value & "# AND #" & Me!txt取得日2.Value & "#)"
  WhereCond = WhereCond & tempOper & whereDate
End If

で、この後に、先頭の演算子を削除するためのMid関数の文(でしたっけ)以降を入れます。
ちなみに、T_マスタテーブルの取得日フィールドのデータ型が日付になっていないとエラーになります。
あと、condIDという変数が出てきますが、これはwhereIDの間違いですよね。
では。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
できました。

>まず、WhereCondというのは、全検索条件を繋げた最終的な条件文字列ですから、

そうだったんですが、知りませんでした。

>あと、condIDという変数が出てきますが、これはwhereIDの間違いですよね。

はい、そうです、お恥ずかしい。。。

>f Me!txt取得日1.Value <> "" And Me!txt取得日2.Value <> "" Then

ここの書き方が一番よくわからなくて、悩んでいたんです。

無事解決しました。
ありがとうございました。

お礼日時:2002/05/13 13:31

こんにちは。

maruru01です。
検索フォームに[txt取得日1]と[txt取得日2]というテキストボックスがあるとします。
例えば、[表示]ボタンのようなコマンドボタンのクリックイベントに以下のように書きます。

Dim WhereCond As String

WhereCond = "取得日 BETWEEN #" & txt取得日1.Value & "# AND #" & txt取得日2.Value & "#"

DoCmd.OpenForm "検索結果フォーム", , acNormal, WhereCond, acFormEdit, acWindowNormal

OpenFormメソッドの各引数の詳細はヘルプなどを参照して下さい。
なお、予め"検索結果フォーム"のレコードソースプロパティに、"T_マスタテーブル"を指定しておいて下さい。
ちなみに2つのテキストボックスの内容が、日付と認識出来ない文字列だとエラーになります。
では。

この回答への補足

いつもいつもありがとうございます。

質問文にはかいていなかったのですが、
他にも検索条件があり、そちらはきちんと入力されていて、OKの状態です。
----------こんな感じです----------
Dim SQL As String
Dim WhereCond As String
Dim whereId As String
Dim whereName As String
Dim whereBirth As String
Dim whereSex As String

WhereCond = "" '変数の初期化。本当はいらないけど明示的に。

Select Case Me!frame.Value
Case 1 'AND検索
tempOper = " AND " '前後の半角スペースを忘れずに
strCount = 5
Case 2 'OR検索
tempOper = " OR " '前後の半角スペースを忘れずに
strCount = 4
End Select

tempCond = ""

'ID
If Me!ID.Value <> "" Then
condId = "(T_マスタテーブル.ID like '*" & Me!ID.Value & "*')"
WhereCond = WhereCond & tempOper & condId
End If

   :
   :
   :
------------------------------
ここに

'取得日
WhereCond = "取得日 BETWEEN #" & 取得日1.Value & "# AND #" & 取得日2.Value & "#"

としてしまったのですが、エラーが出てしまいます。

修正点を教えていただけますでしょうか?

補足日時:2002/05/13 13:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!