急いでます!Access2000で検索機能をつけたいのですがサンプルファイルが存在しているサイトはないでしょうか?検索機能とは、テーブルの中に「氏名」「年齢」「地域」などが存在していて、その中から30歳以上を検索!とかけると30歳以上の物だけ表示してくれる機能です。この30歳以上という指定はユーザーが指定することが出来ます。また氏名も検索できて、含まれる文字列から検索できる。例えば「田中太郎」とあった場合に「太郎」と検索かけたらヒットするという感じがいいです。私が見つけた良いサンプルが存在しているサイトがあり、http://www.melma.com/mag/26/m00034126/a00000123.htmlで、サンプルはhttp://www.ken3.org/vba/lzh/vba093.lzhです。このサンプルがかなり近いのですが、数字を任意にユーザーが決められないことと、文字検索が無いことです。。。要らない回答は、サンプルが存在しないサイトです。あとAccess2000以外のサンプルはダメです。大変厳しい条件ですがお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/01/17 11:15:52
  • 終了:--

回答(6件)

id:kamicha1 No.1

kamicha1回答回数94ベストアンサー獲得回数02004/01/17 11:40:10

ポイント15pt

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 モーグ

もし、詳細がわからなければ、こちらでおたずねになると、さらに詳しく教えていただけると思います。

id:Gafu

回答ありがとうございます。

非常に惜しいです。あと一歩なんですけど、ダイアログボックスでの表示から設定値を入れ込むのではなく、メニューの右側に入力ボックスを追加してそこに書き込んだ後にボタンを押して結果を知りたいのです。

kamicha1さんのように詳しく教えてくれればサンプルサイトじゃなくてもいいです。

2004/01/17 11:52:03
id:reehle No.2

reehle回答回数22ベストアンサー獲得回数02004/01/17 12:26:34

ポイント15pt

こちらの方法でどうでしょうか

帳票フォームのデータをフィルタするのには、

docmd.applyfilter が便利です

複数条件を組み合わせる必要がある場合は、

VBA などで、条件文を生成してあげる必要があります

詳しくは、ACCESS2000 のHELPを、applyfilter で検索してみてください

これでどうでしょうか?

id:Gafu

ありがとうございます。少し参考になりました。

もっとわかりやすく、サンプルが載っているサイト教えてください

2004/01/17 13:17:23
id:ayutetsu No.3

ayutetsu回答回数6ベストアンサー獲得回数02004/01/17 13:02:56

ポイント15pt

URLはダミーです。

kamicha1さんの回答にある

Like ”*” & [検索したい氏名は?] & ”*”

ここを

Like ”*” & [Forms]![フォーム名]![入力ボックス名] & ”*”

に変えてみてください。

すると入力された値で検索されると思います。

※フォーム名:メニューのフォーム名

 入力ボックス名:入力するテキストボックス名

id:Gafu

書き忘れたのですが、kamicha1さんの書いた氏名の検索部分がうまく動作しません。(年齢はうまくいきました)

それと同様にayutetsuさんのも氏名がうまくいきません。

どうしてだろう・・汗

2004/01/17 13:52:23
id:kamicha1 No.4

kamicha1回答回数94ベストアンサー獲得回数02004/01/17 13:10:22

ポイント15pt

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] & ”*”

と設定して保存すると、できます。

id:Gafu

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

ayutetsuさんも協力ありがとうございました。

まだ聞きたいことがあるのですが、テキストボックスに対して2つ項目を入れなければダメな状態ですが、どちらか片方だけ入力しても使える状態にしたいです。

たとえばpoint部分は何も入力していない状態で、名前検索にたいしてドラキチと入れる。

するとドラキチがヒットするといった感じにしたいです。

それと逆に、pointだけ入れて名前部分は空白にした状態でも検索できるようにしたいです。

VBでの使用もOKですのでご教授お願いします

2004/01/17 14:17:08
id:ayutetsu No.5

ayutetsu回答回数6ベストアンサー獲得回数02004/01/17 17:04:27

ポイント15pt

IIf関数を使用すればできます。

IIf関数の仕様は

IIf(条件式, 条件式が真, 条件式が偽)

となっていますので、pointの場合、

>=IIf([Forms]![testmain]![テキスト1] Is Null,-99999,[Forms]![testmain]![テキスト1])

このようにすれば、テキスト1が空白(NULL)の場合、-99999より大きいpointが対象となります。

(-99999の値は、全てが対象となるように適当な値に変更してください。)

また、氏名のほうは

Like ”*” & [Forms]![testmain]![テキスト2] & ”*”

これでテキスト2に入力された値で検索しますし、

空白の場合は全て対象となります。

これでいかがでしょうか?

id:Gafu

汗…

2004/01/17 17:10:28
id:reehle No.6

reehle回答回数22ベストアンサー獲得回数02004/01/17 17:53:23

ポイント15pt

 先ほどの回答と、今までの質問を読んでみて、ちょこっと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

って、ソースだけ送っても、ダメかもしれないと思い始めた・・・ううむ

id:Gafu

うーん…いろいろ調べたのですが、クエリだけでやれる方法があるらしいのですが、、

http://www2.moug.net/cgi-bin/technic.cgi?acopr+TI04010014

なんですけど、何も入力しなかった場合には全文検索対象になりますけど何か入力した場合にはどうやって条件つければいいのか…謎

何も入力が入ってなかったら、全部ヒット

何か入っていた場合にはそれを条件として検索

こんな感じに作りたいのです

2004/01/17 17:58:07
  • id:ayutetsu
    結果どうでしょうか?

    こんにちは。
    その後どうなりましたでしょうか?
    適切な回答をすることができず、申し訳ありません。
    2回までしか回答できなかったんですね(^_^;)
    「はてな」に参加して始めての回答でしたので知りませんでした。

    http://proxy.ymdb.yahoofs.jp/users/7dc5bf61/bc/tmp/db.lzh?bcVzxFABYtgdN8Gu

    ちょっと作ってみましたのでダウンロードしてみてください。
    終わったら消しますので、ここに書き込んでください。

    以上です。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません