• ベストアンサー

access2000でデータの抽出をする時の条件設定?

PC自体の素人ですが、お願いします。 access2000で名簿を作っているのですが、人を選ぶ時に50音か、あかさたな…を入力して抽出するのを早くしたいのです。 これが出来れば、それを応用して住所とか、その他の条件設定をして抽出できるようになるかなぁと思って…。 今は、個人情報のテーブルのフリガナで並べ替え(A→Z)をして探しているような状態です。今は500人ほどなので大した苦労じゃないけど、これから増えることを考えると…。 どうかご指導のほど、よろしくお願いします。

  • mk114
  • お礼率39% (21/53)

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

  • ベストアンサー
  • sgh
  • ベストアンサー率61% (75/121)
回答No.6

乗りかけた船ですので回答しますが、タブコントロールは使ったことがありません。 確かにサブフォームを貼り付けることはできましたが、参照方法がわかりません。 たぶん "me.ページ1.[サブフォーム名].form.filter"になるのかな?と思い やってみたのですが、ヒントに出ません。 そんなことより、タブコントロールでやるのであれば、サブフォームを12枚作った方が簡単じゃないですか? 「ア行のサブフォーム」...「全てのサブフォーム」を作って それぞれのタブに貼り付ける。

mk114
質問者

お礼

ありがとうございました。そうですよね。おっしゃるとおりです。でも、「ア行」「カ行」・・・のサブフォームをどうすれば作れるのか悩んでました。とりあえず、選択クエリで何とかア行だけの表示が出来たので、きっと後も大丈夫だと思います。 本当にありがとうございました。基礎が出来てないものでいろいろご迷惑をおかけしました。また質問するかもしれませんが、そのときはこれに懲りずにまたよろしくお願いします。

その他の回答 (6)

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.7

mk114さんのご質問と、その後のsghさんとのやり取りを拝見して、なさりたいことはもしかしてこんなことでは、と思ったものですから・・・。 ふりがなごとにタブを分けてしまうと、住所などのその他の項目でのまとまった抽出ができなくなるのではと思い、以下の方法を考えてみたのですがいかがでしょうか。 (いま手元にはAccess97しかありませんので、2000での確認はしていませんが、多分大丈夫だと思います。) とりあえず名簿のテーブルのフィールド名が、振り仮名→『Kana』、住所→『Juusho』として進めます。 まず名簿のテーブルを元に、表形式のフォームを作ってみてください。(とりあえずフォームウィザードでもオートフォームででもかまいません。) このフォームのフォームヘッダーにテキストボックス(コントロールソースは非連結でよい)を二つ配置して、それぞれの名前を『かな抽出』と『住所抽出』とでもしてください。(ついでにこれらの漢字変換モードを‘ひらがな’(Kanaにカタカナで入力されているなら‘カタカナ’)にしておくとあとで楽です。) それぞれの変更時イベントに次のようにVBAでプロシージャを記述してください。 (コピー&ペーストで貼り付けてもOKです。ただし、フィールド名のところは、修正してください。それから、イベントの変更時が[イベント プロシージャ]になっていることを確認してください。) Private Sub かな抽出_Change() Me.Filter = "Kana Like '" & Me!かな抽出.Text & "*' and Juusho Like '*" & Me!住所抽出 & "*'" Me.FilterOn = True End Sub Private Sub 住所抽出_Change() Me.Filter = "Kana Like '" & Me!かな抽出 & "*' and Juusho Like '*" & Me!住所抽出.Text & "*'" Me.FilterOn = True End Sub フォームビューにして、『かな抽出』にふりがなの先頭の何文字かを、『住所抽出』に住所の一部(県名でも、町名でも、何でも良い)を入力してみてください。 もしもこの方法でご希望のこととができそうでしたら、HELPでも見て勉強してみてください。 HELPでは良くわからないようでしたら、簡単な解説はいたしますので、また同じカテゴリーで質問を立ててみてください。

mk114
質問者

お礼

すごいです!!出来ました。私のレベルでは考えつかなかった、思っていた以上の条件抽出が出来るようになりました。締め切った後にもかかわらず、わざわざ教えていただきありがとうございました。 本当に感謝感激・・・です!大げさではなく本当にありがとうございました。 また質問した際には、よろしくお願いいたします。

  • sgh
  • ベストアンサー率61% (75/121)
回答No.5

サブフォームの中にさらにタブコントロールが入っているという意味でとらえて いいのでしょうか? --以下ヘルプより引用-- >タブコントロールとは >タブ コントロールを使うと、複数のページを単一のセットとして表すことが >できます。多数のコントロールを操作する場合でそれらが 2 つ以上の種類に >分類できる場合は、タブ コントロールを使うと便利です。たとえば、[社員] >フォームでタブ コントロールを使用し、一般情報と個人情報に分けることが >できます。 --引用終了-- >タブコントロールのプロパティは変更しなくていいのですか? たぶん、タブコントロールの使い方を間違えていると思います。 私が説明したのは、コマンドボタン(メインフォーム側)とサブフォームを使った 例です。

mk114
質問者

補足

ごめんなさい。私の言い方が悪かったです。サンプルデータベースを中途半端にコピーしたのも悪かったのかなぁと思い、始めからデザインビューで自分なりに作ってみました。でもうまくいきません。なんて説明したらいいのかわからないので、私が行った手順を書きます。 (1)フォームをデザインビューで開き、詳細にタブコントロールを設定。 (2)タブコントロールの中にサブフォームを作る。 (3)サブフォームのプロパティを開きデータのソースオブジェクトに対象となる名簿テーブルを設定。 (4)ア行を表示したいタブコントロールのプロパティを開き、後は教えていただいたとおりイベントプロシジャーを書き換える。 以上、手順です。どこが悪いのでしょうか? たびたび申し訳ありませんが、ご指導お願いします。

  • sgh
  • ベストアンサー率61% (75/121)
回答No.4

>テンプレートの住所録のVisual Basicを参照したところ... すいません、テンプレートの住所録って使ったことがありません。 どこにあるのかもわかりませんでした。(ACCESS2000) >T_名簿をサブフォームとして付けました。 つまり、データが表示される部分は、サブフォームなので#3で回答した 書きと違ってきます。 ・「あ行」ボタンの名前が "コマンド1" ・サブフォームの名前が  "T_名簿" ・T_名簿のフリガナを振ってある列名が "フリガナ" として説明します。もし名前が違っていたら読み替えてください。 1."コマンド1"のプロパティーを表示 2.イベントタブの"クリック時"を選択し右に出る"..."をクリック 3.イベントプロシジャーを選択 4.以下のように表示される  Private Sub コマンド1_Click()    End Sub 5.以下のように書き換える  Private Sub コマンド1_Click()  Me.T_名簿.Form.Filter = "フリガナ Like '[ア-オ]*'"  Me.T_名簿.Form.FilterOn = True  End Sub がんばってください。

mk114
質問者

補足

たびたびすみません。テンプレート改めサンプルデータベースの住所録の間違いでした。。。で、ご回答いただいた件ですが、タブコントロールのプロパティは変更しなくていいのですか?思った通りにやっぱり出来ないのです・・・。質問が悪くてごめんなさい。 よろしくお願いします。

  • sgh
  • ベストアンサー率61% (75/121)
回答No.3

表形式のフォームヘッダ等にボタンを配置して、各ボタンを「あ行」「か行」...とします。 ボタンのクリック時のイベントプロシージャに、「あ行」なら Me.Filter = "フリガナ Like '[ア-オ]*'" Me.FilterOn = True と記述することで、ア行の人だけが表示されるようになります。

mk114
質問者

補足

ありがとうございます。質問をした後に、自分なりにもう一度やり方を模索していたところ、一番やり方が近いように思ったので、もう少し教えていただけますか? フォームの詳細に、「すべて」「あ」「か」「さ」・・・「その他」と、12のページを作りました。それに、T_名簿をサブフォームとして付けました。実は、ここまではテンプレートの住所録をコピーして応用したのですが・・・。 サブフォームのデータは表示されるのですが、ページをクリックしてもア行だけとかの表示にならないのです。もちろん教えていただいたとおりイベントプロシージャには入力してありますが・・・。テンプレートの住所録のVisual Basicを参照したところで素人のわたしにはさっぱりわからないもので・・・。 すみませんがよろしくお願いします。

回答No.2

まず、早くする方法としては、検索する項目にINDEXをつけます。そうすることにより、早くなります。但し、デメリットとして、レコード作成時には、遅くなります。しかし、500人程度と、最近は高スペックマシンが普及してるので問題ないと思います。ですから、フリガナにINDEXを付加してください。INDEXの付与は、テーブルデザインで、【表示】-【インデックス】で設定できます。

mk114
質問者

お礼

ありがとうございました。今回は違うやり方を模索中です。でも、何種類かのデータベースを作っている最中なので、参考にさせていただきます。

  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.1

1.あかさ・・入力フォームを作成 2.選択クエリーを作成 3.名簿の項目全てと検索用フィールドを作成 4.検索用フィールドに下記を指定  フィールド  検策用:MID(振り仮名,1,1)  抽出条件   ≧入力フォーム!入力項目 以上で実現可能と思います。 がんばってください。

mk114
質問者

お礼

ありがとうございました。・・・。でも本当に素人すぎて、せっかく教えていただいた事がよくわからなくて・・・。今、別のやり方でチャレンジしてます。 それでもわからなかった時には、またよろしくお願いします。

関連するQ&A

  • MS-Access2000「クエリーの抽出条件」

    クエリーの抽出条件を以下のように設定し実行しましたが、目的のレポートが作成できません。どうしてでしょうか?ご指導ください。 <条件>   名簿テーブルの「フリガナ」に対して・・・   Between "ア*" AND "ト*"   として実行しました。 <結果>   フリガナ ア~テ までしか表示されません。「ト」のつくデータもあるので  すが・・・。 以上、よろしくお願いします。

  • アクセス2000でデータ抽出時に・・・。

    以前、質問No.203113で教えていただいたデータ抽出方法を応用して、別のデータベースでも同じようなものを作ったのですが、条件を入力して抽出できるものと出来ないものが出てきました。エラーとして「実行時エラー'2185':コントロールがフォーカスを取得していない時に、コントロールのプロパティまたはメソッドを参照することはできません。」と出ます。 テーブルには、T_グループ名、T_個人名簿、T_住所一覧があり、T_グループ名に付けたサブデータシートではT_個人名簿が正しく表示されているのに(グループ名でリンクしている)、T_グループ名とT_個人名簿から作ったクエリではデータが漏れています(T_個人名簿で代表者をチェックしてグループ名とその代表者がわかるように選択クエリを作っています)。このクエリをもとにフォームを作っているのですが、ここで表示されていないデータの抽出条件を入れると、上のようなエラーが出ます。クエリで表示されているものは上手く抽出できます。 このクエリをもとに作ったフォームだから、条件を入れても抽出できないのだろう、と言うことはわかるのですが、解決方法がわかりません。 ビギナーなので、どのように表現すればわかっていただけるのか・・・。わかりにくい内容ですが、どなたかご指導お願いします。

  • ACCESSのクエリ:抽出条件で型が一致しません

    ACCESSでクエリを作ったのですが 実行すると、 「抽出条件で型が一致しません」のエラーが出ます 問題となっているヶ所は テーブルのフィールド定義がバイナリーになっています そして、クエリで   フィールド   テーブル   並べ替え   表示   抽出条件   または となっていますが、 この抽出条件に、1、を入れました テキスト型なら、"1" 数値系型なら、1、でいいのか、と思ったのですが バイナリ型は別の表現があるのでしょうか よろしくお願いします

  • Accessクエリでの複数の抽出条件設定

    Accessを利用して住所録のデータベースを作成しています。パラメータークエリを利用して複数の項目の検索結果をフォーム上に表示させたいのですが上手くいきません。 フリガナと勤務先の二つのフィールドを利用して検索結果を表示したいのですが, ・フリガナだけに条件を入力した場合 ・勤務先だけに条件を入力した場合 ・フリガナと勤務先の両方に条件を入力した場合 の3つのパターンを想定しています。 例えば,フリガナと勤務先の両方の検索結果を表示させる場合,フリガナフィールドの抽出条件に Like [フリガナを入力] & "%" 勤務先フィールドの抽出条件に Like [勤務先を入力] & "%" Or Is Null と入力すると,フリガナと勤務先の両方に検索条件を入力した場合, ・フリガナが該当し,かつ勤務先が該当するデータ のほかに ・フリガナが該当し,勤務先が空白のデータ が抽出されます。フリガナと勤務先の両方に検索条件をいれたときには,勤務先が空白のデータを抽出しないようにしたいのですが,どうしたら良いでしょうか。フリガナだけで検索するときには,勤務先が空白かどうかは考慮しない結果を表示させたいと思います。 ちなみに, フリガナフィールドの抽出条件に Like [フリガナを入力] & "%" 勤務先フィールドの抽出条件に Like [勤務先を入力] & "%" とすると,勤務先だけで検索したい場合に,勤務先の記載がない人のデータが出てこなくなってしまいます。 初心者ですが,よろしくお願いいたします。

  • 複数条件抽出(アクセス)

    F得意先マスターを作成しました。得意先CD、得意先名、フリガナ、住所、TELの項目名があります。(テーブルから作成しました) 例えば、フリガナがフで始まり、住所が神奈川で始まるものを抽出したいので、 テキストボックスを二つ作成し、コマンドボタンも作成しました。一つ目のテキストボックスにはフリガナを入力、二つ目には住所を入力します。 これを抽出するマクロを作成したいのですが、どうしてよいのか?? (また、一つ目のテキストボックスには何か条件を入れますが、二つ目にはいれないで、抽出したいというものにも対応したいと思っています)

  • アクセス 同じ年生まれの者を抽出する抽出条件の入力方法

    アクセス2000 名簿テーブルに日付時刻型で生年月日を入力し、和暦で(例 S30-05-21)表示させております。クエリで同じ年生まれの者を抽出したいのですが、抽出条件に year([名簿]![生年月日])=1955 とすれば昭和30年生まれの者が抽出できることは分かったのですが、抽出条件に1955ではなく、S30を使って抽出する方法を知りたいのです。 宜しくお願いします。

  • Accessの抽出についての質問

    Accessの抽出についての質問をします。 テーブルからデータシートビューで開いたものを「レコード」「フィルタ」「フィルタ/並べ替えの編集」で条件を入れて抽出できると思います。 そこまでは理解できたのですがクエリの場合はもう1つあると知りました。 クエリの中のデータをやはりデータシートビューで開いて、「レコード」「フィルタ」「フィルタ/並べ替えの編集」で条件を入れて抽出する以外に デザインビューで開いてデザイングリッドという下の画面でも同じように条件を入れて抽出できると聞きました。 画面はデータシートビューでの「フィルタ/並べ替えの編集」画面と少し似ているようですがちょっと違います。 この2つはどう違うのですか どう使い分けるといいのでしょうか? 教えてください。

  • ACCESSの抽出条件の設定について

    ACCESSでの抽出に関する質問です。 あるテーブルに顧客情報があります。 フィールドは「顧客名」「住所」「年齢」として、「顧客名に”山”や”川”を含まず、年齢が40未満」の抽出をする場合、 | 顧客名 |住所|年齢| |Not Like"*山*"| |<40| |Not Like"*川*"| |<40| と入れたんですが、”山”で始まる顧客名が抽出されてしまいます。 もちろん、Not Like "山*"にすると大丈夫なんですが・・・。 間違い箇所をご指摘ください。

  • Access]2つのテーブルを比較してフィールドの一部が一致したデータを抽出

    2つの名簿テーブルを比較してどちらのテーブルにも含まれている個人を抽出したいと考えております。 テーブル名とフィールドは以下のとおりです。 ==================== テーブル名「名簿A」 氏名 電話番号 住所 メールアドレス ==================== テーブル名「名簿B」 姓 名 電話番号 住所 メールアドレス ==================== たとえば、この2つの名簿をメールアドレスで一致したものを抽出する場合は選択クエリのデザインビューで「名簿A」のフィールドを読み込ませ、 メールアドレスフィールドの抽出条件として Like [名簿B].[メールアドレス] を入れれば抽出ができたのですが、メールアドレスは、名簿ごとに記入されていたりしなかったりするので、名前での一致を行いたいと思っています。 ここで問題なのが、名簿Aは「氏名」で入力されているのに対し、名簿Bでは「姓」と「名」が別フィールドになっております。 そこで自分なりにやってみたのが、選択クエリのデザインビューで「氏名」のフィールドの抽出条件として Like (*[名簿B].[姓]*) を設定するものでした。 これがうまくいけば最終的には Like (*[名簿B].[姓]*) And Like (*[名簿B].[名]*) という風にして、名簿Aの「氏名」フィールドに名簿Bの「姓」も「名」も入っているものを抽出できるかな?と考えたのですが、上記のように入力すると、自動的に Like ("*[名簿B].[姓]*") となってしまい、何も抽出されなくなってしまいました。 このような方法では希望する抽出は行えないのでしょうか? お分かりのかた、よろしくお願いいたします。

  • Access の 抽出条件について

    Accessの抽出条件について教えてください (1)のテーブルに AAAAA BBBBB CCCCC ##AAA #BBBB ###B とあるとします。 このデーターの「#」で始まるものだけを抽出したいのですが、どのような方法がありますか? 「Like "#*"」だと#をテキストと見てないせいか抽出出来ません。 このようなテキストと見出していないものの抽出する方法をご存知の方どうぞ教えてください。