プロが教えるわが家の防犯対策術!

PC自体の素人ですが、お願いします。

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

A 回答 (7件)

乗りかけた船ですので回答しますが、タブコントロールは使ったことがありません。


確かにサブフォームを貼り付けることはできましたが、参照方法がわかりません。
たぶん "me.ページ1.[サブフォーム名].form.filter"になるのかな?と思い
やってみたのですが、ヒントに出ません。

そんなことより、タブコントロールでやるのであれば、サブフォームを12枚作った方が簡単じゃないですか?
「ア行のサブフォーム」...「全てのサブフォーム」を作って
それぞれのタブに貼り付ける。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/01/25 16:49

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では良くわからないようでしたら、簡単な解説はいたしますので、また同じカテゴリーで質問を立ててみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/01/28 15:40

サブフォームの中にさらにタブコントロールが入っているという意味でとらえて


いいのでしょうか?

--以下ヘルプより引用--
>タブコントロールとは
>タブ コントロールを使うと、複数のページを単一のセットとして表すことが
>できます。多数のコントロールを操作する場合でそれらが 2 つ以上の種類に
>分類できる場合は、タブ コントロールを使うと便利です。たとえば、[社員]
>フォームでタブ コントロールを使用し、一般情報と個人情報に分けることが
>できます。
--引用終了--

>タブコントロールのプロパティは変更しなくていいのですか?

たぶん、タブコントロールの使い方を間違えていると思います。
私が説明したのは、コマンドボタン(メインフォーム側)とサブフォームを使った
例です。

この回答への補足

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

補足日時:2002/01/24 16:04
    • good
    • 0

>テンプレートの住所録の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

がんばってください。

この回答への補足

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

補足日時:2002/01/23 14:18
    • good
    • 0

表形式のフォームヘッダ等にボタンを配置して、各ボタンを「あ行」「か行」...とします。


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

この回答への補足

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

補足日時:2002/01/23 09:49
    • good
    • 0

まず、早くする方法としては、検索する項目にINDEXをつけます。

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

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

お礼日時:2002/01/23 09:47

1.あかさ・・入力フォームを作成


2.選択クエリーを作成
3.名簿の項目全てと検索用フィールドを作成
4.検索用フィールドに下記を指定
 フィールド  検策用:MID(振り仮名,1,1)
 抽出条件   ≧入力フォーム!入力項目

以上で実現可能と思います。
がんばってください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/01/23 09:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す