- ベストアンサー
Access 日付/時間型の検索方法について
- Accessで日付/時間型のデータを検索する方法について教えてください。
- 自分なりに検索用フォームを作成しましたが、日付だけで検索しても全データが抽出されてしまいます。
- どこが間違っているのか、ご指摘いただけますか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#1です 補足読んだのですが、かなり複雑怪奇な話になります テーブル名:Tbl不明 処理番号:テキスト型 件名 :テキスト型 年月日 :日付/時刻型 をベースに「Q処理検索」を作ったとします で、記載すると、大変な話になるので、SQLビューに切り替えて、SQL文を張りますので、テーブル名だけは、修正してください Q処理検索 SELECT Tbl不明.* FROM Tbl不明 WHERE (Tbl不明.処理番号 Like "*" & [Forms]![F処理検索]![処理番号] & "*") AND (Tbl不明.件名 Like "*" & [Forms]![F処理検索]![件名] & "*") AND (([Forms]![F処理検索]![開始] Is Null AND [Forms]![F処理検索]![終了] Is Null) OR (Tbl不明.年月日 >= [Forms]![F処理検索]![開始] AND [Forms]![F処理検索]![終了] Is Null ) OR (Tbl不明.年月日 < [Forms]![F処理検索]![終了]+1 AND [Forms]![F処理検索]![開始] Is Null) OR (Tbl不明.年月日 >= [Forms]![F処理検索]![開始] AND Tbl不明.年月日 < [Forms]![F処理検索]![終了]+1)); と、言う感じかな? 少し、[開始]だけじゃなくて、[終了]だけ、入ってる場合も、対応するように、記載してみたけど・・・
その他の回答 (4)
- Dxak
- ベストアンサー率34% (510/1465)
#1です すみません データを入れて、検証したら、同じメッセージが出ましたね;; < [Forms]![F処理検索]![終了]+1 を <= [Forms]![F処理検索]![終了] にすれば、 > 「式が正しく入力されていないか、複雑過ぎるために評価できません。」 が、表示されず、行けます ただし、これは、時間までのところが、0時までしか、検出できません NN日+XX時、は、NN日では、引っ張れなくなります この対処としては、フォーム側で、演算を細工する事になるかな?
お礼
回答ありがとうございます。 <= [Forms]![F処理検索]![終了]で表示が消えました。 上司と相談の結果、時間は検索にしなくて良いと許可が出たので この形で落ち着きました。 複雑怪奇な問題に取り組んでいただき、誠にありがとうございました。 完成まで長い仕事ですが、Dxakさんのおかげで希望が見えてきました。
- Dxak
- ベストアンサー率34% (510/1465)
#1です 気になるとすれば・・・ > [Forms]![F処理検索]![処理番号] > [Forms]![F処理検索]![件名] の2つ、要は、検索用コントロールと、抽出結果を出すコントロールが、同じ名前を使用しているとは、考えにくく、名前が間違ってるとか? > 「式が正しく入力されていないか、複雑過ぎるために評価できません。」 は、大体、SQL文が、間違ってる場合、もしくは、矛盾がある場合に、出るもの 要は、テーブル名の書き換えを失敗したとか、私が、想像しているコントロール配置などが違う可能性 どっちにしても、自力で、何がどう違うのか?、見直していく以外ないね
- n-jun
- ベストアンサー率33% (959/2873)
例えばフィールド(aaa)に日付/時間型となっていた場合に、 今日(3/10)のデータを抽出するなら抽出条件に、 Format([aaa],"yyyy/mm/dd")="2009/03/10" で出来ました。 ここ"2009/03/10" が [Forms]![F処理検索]![開始] にあたるのではないでしょうか? ⇒条件に時間までが必要なのかどうなのか・・・? Access使用は皆無なので違ったらごめんなさい。
お礼
Excel(マクロ)ではお世話になっております。 結果、時間は無しになりました。 まだまだExcelもAccessも修行が足りずに悪戦苦闘しております。 ご意見ありがとうございました。
- Dxak
- ベストアンサー率34% (510/1465)
う~ん、意図してる通りだと思うよ 日付のカラムに日付が入ってようが、入って無くても・・・ > 「処理番号」と「件名」の抽出条件(1行目)には > 「Like"*"&[Forms]![F処理検索]![処理番号]&"*"」 > 「Like"*"&[Forms]![F処理検索]![件名]&"*"」と記述 が動作、当然日付しか、入力してないから、フリーパスで、全部抽出 どう抽出したいのか?もう少し詳しく記載してね
補足
回答ありがとうございます。 説明不足で申し訳ありません。補足させていただきます。 検索の仕方としては、下記のパターンになります。 (1)処理番号のみで検索する (2)件名のみで検索する (3)年月日のみで検索する (4)(1)と(2)を組み合わせて検索する (5)(1)と(3)を組み合わせて検索する (6)(1)・(2)・(3)全てあわせて検索する (7)(2)と(3)を組み合わせて検索する ※全てあいまい検索が出来る状態で行いたい 年月日においては、「開始日のみ」で検索したい場合があります。(あえて終了日は入れない場合があります) 以上になります。宜しくお願いします。
補足
回答誠にありがとうございます。 早速貼り付けて動作確認をした結果、「終了」へ入力すると 「式が正しく入力されていないか、複雑過ぎるために評価できません。」 とエラーメッセージが出ます。 やっぱり複雑怪奇すぎるんでしょうか… 終了以外はすべて完璧に動きました。