こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access 日付/時間型を検索するには?

いつもお世話になっております。
色々と調べたのですが、データが思い通りにならなく困っております。

検索用フォームを作成し、番号と件名であいまい検索出来るようにしたのですが、年月日でも検索出来るように依頼されました。
自分なりに組んでみたのですが、検索機能が動いてくれませんでした。
年月日のデータ形式は「日付/時刻型」で、格納されているデータは「yyyy/mm/dd 00:00:00」となっています。
日付のみで検索すれば良いのですが、いくら検索しても、全データが抽出されてしまいます。
どこが悪いのかご指摘お願い致します。

☆クエリ☆
・Q処理検索
左から「処理番号」「件名」「年月日」となっており、
「処理番号」と「件名」の抽出条件(1行目)には
「Like"*"&[Forms]![F処理検索]![処理番号]&"*"」
「Like"*"&[Forms]![F処理検索]![件名]&"*"」と記述
「年月日」の抽出条件に
「Between[Forms]![F処理検索]![開始]and[Forms]![F処理検索]![終了]」を2行目に記述
「>=[Forms]![F処理検索]![開始]」を3行目に記述してあります。

☆フォーム☆
・F処理検索
年月日は2つテキストボックスを用意しています。
各々に「開始」と「終了」の名前をつけ、定型入力を「0000/00/00\ 00:00:00;0;_」としてあります。
検索実行ボタンをクリックし、詳細検索表示フォームを表示します。

・詳細検索表示
「F詳細検索」の結果をフォームビューで表示させます。

☆マクロ☆
フォームを開く
・フォーム名:詳細検索表示
・フィルタ名:Q処理検索

以上、宜しくお願い致します。

投稿日時 - 2009-03-09 22:23:23

QNo.4783084

すぐに回答ほしいです

質問者が選んだベストアンサー

#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));

と、言う感じかな?
少し、[開始]だけじゃなくて、[終了]だけ、入ってる場合も、対応するように、記載してみたけど・・・

投稿日時 - 2009-03-11 09:11:50

補足

回答誠にありがとうございます。
早速貼り付けて動作確認をした結果、「終了」へ入力すると 「式が正しく入力されていないか、複雑過ぎるために評価できません。」
とエラーメッセージが出ます。
やっぱり複雑怪奇すぎるんでしょうか…
終了以外はすべて完璧に動きました。

投稿日時 - 2009-03-11 11:31:52

ANo.3

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

#1です

すみません
データを入れて、検証したら、同じメッセージが出ましたね;;

< [Forms]![F処理検索]![終了]+1

<= [Forms]![F処理検索]![終了]

にすれば、
> 「式が正しく入力されていないか、複雑過ぎるために評価できません。」
が、表示されず、行けます
ただし、これは、時間までのところが、0時までしか、検出できません
NN日+XX時、は、NN日では、引っ張れなくなります
この対処としては、フォーム側で、演算を細工する事になるかな?

投稿日時 - 2009-03-11 13:41:34

お礼

回答ありがとうございます。
<= [Forms]![F処理検索]![終了]で表示が消えました。
上司と相談の結果、時間は検索にしなくて良いと許可が出たので
この形で落ち着きました。
複雑怪奇な問題に取り組んでいただき、誠にありがとうございました。
完成まで長い仕事ですが、Dxakさんのおかげで希望が見えてきました。

投稿日時 - 2009-03-11 20:28:51

ANo.4

#1です

気になるとすれば・・・

> [Forms]![F処理検索]![処理番号]
> [Forms]![F処理検索]![件名]

の2つ、要は、検索用コントロールと、抽出結果を出すコントロールが、同じ名前を使用しているとは、考えにくく、名前が間違ってるとか?

> 「式が正しく入力されていないか、複雑過ぎるために評価できません。」

は、大体、SQL文が、間違ってる場合、もしくは、矛盾がある場合に、出るもの
要は、テーブル名の書き換えを失敗したとか、私が、想像しているコントロール配置などが違う可能性

どっちにしても、自力で、何がどう違うのか?、見直していく以外ないね

投稿日時 - 2009-03-11 12:19:16

ANo.2

例えばフィールド(aaa)に日付/時間型となっていた場合に、
今日(3/10)のデータを抽出するなら抽出条件に、
Format([aaa],"yyyy/mm/dd")="2009/03/10"
で出来ました。

ここ"2009/03/10" が [Forms]![F処理検索]![開始] にあたるのではないでしょうか?
⇒条件に時間までが必要なのかどうなのか・・・?

Access使用は皆無なので違ったらごめんなさい。

投稿日時 - 2009-03-10 11:42:55

お礼

Excel(マクロ)ではお世話になっております。
結果、時間は無しになりました。
まだまだExcelもAccessも修行が足りずに悪戦苦闘しております。
ご意見ありがとうございました。

投稿日時 - 2009-03-11 20:34:30

ANo.1

う~ん、意図してる通りだと思うよ

日付のカラムに日付が入ってようが、入って無くても・・・

> 「処理番号」と「件名」の抽出条件(1行目)には
> 「Like"*"&[Forms]![F処理検索]![処理番号]&"*"」
> 「Like"*"&[Forms]![F処理検索]![件名]&"*"」と記述

が動作、当然日付しか、入力してないから、フリーパスで、全部抽出

どう抽出したいのか?もう少し詳しく記載してね

投稿日時 - 2009-03-10 09:03:09

補足

回答ありがとうございます。
説明不足で申し訳ありません。補足させていただきます。
検索の仕方としては、下記のパターンになります。
(1)処理番号のみで検索する
(2)件名のみで検索する
(3)年月日のみで検索する
(4)(1)と(2)を組み合わせて検索する
(5)(1)と(3)を組み合わせて検索する
(6)(1)・(2)・(3)全てあわせて検索する
(7)(2)と(3)を組み合わせて検索する
※全てあいまい検索が出来る状態で行いたい
年月日においては、「開始日のみ」で検索したい場合があります。(あえて終了日は入れない場合があります)
以上になります。宜しくお願いします。

投稿日時 - 2009-03-10 21:10:30

あなたにオススメの質問