http://www.hatena.ne.jp/1074305752#
急いでます!Access2000で検索機能をつけたいのですがサンプルファイルが存在しているサイトはないでしょうか?検索機能とは、テーブルの中に「氏名」「年齢」「地域」など.. - 人力検索はてな
とりあえず急いでいるということですので、
このサンプルのPointフィールドを年齢と仮定して、
クエリ「Q_顧客情報」をデザインビューで開き、
pointフィールドの抽出条件を >=[検索したい年齢は?]
氏名フィールドの抽出条件を Like ”*” & [検索したい氏名は?] & ”*”
と設定して保存します。
Q_顧客情報クエリ実行時に、「検索したい年齢は?」「検索したい氏名は?」はと聞いてくるので、ユーザーが条件を指定するとできます。
Q_顧客情報クエリは、フォームtestmainの「クエリの実行、元データ確認」をクリックしても同様に実行されます。
http://www2.moug.net/app/bbs/thread.php?cat=acopr
Excel VBA を学ぶなら moug モーグ
もし、詳細がわからなければ、こちらでおたずねになると、さらに詳しく教えていただけると思います。
こちらの方法でどうでしょうか
帳票フォームのデータをフィルタするのには、
docmd.applyfilter が便利です
複数条件を組み合わせる必要がある場合は、
VBA などで、条件文を生成してあげる必要があります
詳しくは、ACCESS2000 のHELPを、applyfilter で検索してみてください
これでどうでしょうか?
ありがとうございます。少し参考になりました。
もっとわかりやすく、サンプルが載っているサイト教えてください
Yahoo! JAPAN
URLはダミーです。
kamicha1さんの回答にある
Like ”*” & [検索したい氏名は?] & ”*”
ここを
Like ”*” & [Forms]![フォーム名]![入力ボックス名] & ”*”
に変えてみてください。
すると入力された値で検索されると思います。
※フォーム名:メニューのフォーム名
入力ボックス名:入力するテキストボックス名
書き忘れたのですが、kamicha1さんの書いた氏名の検索部分がうまく動作しません。(年齢はうまくいきました)
それと同様にayutetsuさんのも氏名がうまくいきません。
どうしてだろう・・汗
http://homepage1.nifty.com/tsware/tips/tips_216.htm
Access アクセス Tips 500 #216 〜フォームのテキストボックスを抽出条件とするクエリー〜
上記URLが参考になるかもしれませんが、「メニューの右側に入力ボックスを追加してそこに書き込んだ」ということですので、フォーム名がtestmain、年齢入力ボックス名がTextBox1、氏名入力ボックスがTextBox2とした場合、クエリ「Q_顧客情報」をデザインビューで開き、
pointフィールドの抽出条件を >=[Forms]![testmain]![テキスト1]
氏名フィールドの抽出条件を Like ”*” & [Forms]![testmain]![テキスト2] & ”*”
と設定して保存すると、できます。
できました!!ありがとうございます!
ayutetsuさんも協力ありがとうございました。
まだ聞きたいことがあるのですが、テキストボックスに対して2つ項目を入れなければダメな状態ですが、どちらか片方だけ入力しても使える状態にしたいです。
たとえばpoint部分は何も入力していない状態で、名前検索にたいしてドラキチと入れる。
するとドラキチがヒットするといった感じにしたいです。
それと逆に、pointだけ入れて名前部分は空白にした状態でも検索できるようにしたいです。
VBでの使用もOKですのでご教授お願いします
IIf関数を使用すればできます。
IIf関数の仕様は
IIf(条件式, 条件式が真, 条件式が偽)
となっていますので、pointの場合、
>=IIf([Forms]![testmain]![テキスト1] Is Null,-99999,[Forms]![testmain]![テキスト1])
このようにすれば、テキスト1が空白(NULL)の場合、-99999より大きいpointが対象となります。
(-99999の値は、全てが対象となるように適当な値に変更してください。)
また、氏名のほうは
Like ”*” & [Forms]![testmain]![テキスト2] & ”*”
これでテキスト2に入力された値で検索しますし、
空白の場合は全て対象となります。
これでいかがでしょうか?
汗…
先ほどの回答と、今までの質問を読んでみて、ちょこっとVBで書いてみました
以下の内容で、一応、入力のある項目だけが抽出条件に反応するようになるはずです
テーブルやフォームの構造が分からないので、適当につくってますので、もし役に立たないようでしたら、ポイント結構ですので・・・
このやり方だと、フォームに入力した値を元に集計するので、ボタンをクリックしたときに、検索条件を聞いてこなくなります。
なんとか、MDB を送信できたらいいんですけどね。
Option Explicit
Option Compare Database
Private Sub btn実行_Click()
Dim STR As String
Dim CNT As Integer
STR = ””
CNT = 0
If Trim(Me![txt氏名]) <> ”” Then
STR = ”(氏名 Like ’%” & Trim(Me![txt氏名]) & ”%’)”
CNT = CNT + 1
End If
If Trim(Me![txt年齢]) <> ”” Then
If IsNumeric(Me![txt年齢]) = True Then
If CNT <> 0 Then
STR = STR & ” and ”
End If
STR = STR & ”(年齢>=” & Trim(Me![txt年齢]) & ”)”
CNT = CNT + 1
End If
End If
If Trim(Me![txt地域]) <> ”” Then
If CNT <> 0 Then
STR = STR & ” and ”
End If
STR = STR & ”(地域=’” & Trim(Me![txt地域]) & ”’)”
End If
If STR = ”” Then
DoCmd.ShowAllRecords
Else
DoCmd.ApplyFilter , STR
End If
End Sub
って、ソースだけ送っても、ダメかもしれないと思い始めた・・・ううむ
うーん…いろいろ調べたのですが、クエリだけでやれる方法があるらしいのですが、、
http://www2.moug.net/cgi-bin/technic.cgi?acopr+TI04010014
なんですけど、何も入力しなかった場合には全文検索対象になりますけど何か入力した場合にはどうやって条件つければいいのか…謎
何も入力が入ってなかったら、全部ヒット
何か入っていた場合にはそれを条件として検索
こんな感じに作りたいのです
回答ありがとうございます。
非常に惜しいです。あと一歩なんですけど、ダイアログボックスでの表示から設定値を入れ込むのではなく、メニューの右側に入力ボックスを追加してそこに書き込んだ後にボタンを押して結果を知りたいのです。
kamicha1さんのように詳しく教えてくれればサンプルサイトじゃなくてもいいです。