第4回で、本日は、「検索・抽出」表示処理です。
マイクロソフト ACCESS(アクセス)でデータベースを作成 検索・抽出処理
これは開発者の立場から云うと、EXCELでデータベースを自分で作成している方に多いのですが、ACCESSなどでデータベースを作成して、「これを使いなさい」と云うと非常に抵抗をしめす方が、けっこう多くいます。
<Excel使いの限界>
なぜなら、「EXCELの表」で一覧管理していた時のように簡単にある特定のデータを「自分の思うように探しだせなくなる」からです。EXCELの場合は、横に長い一覧で表示されます。そして「EXCEL使い」の方は、これを見ないと安心できないんですね?。
「EXCEL使い」の方は、どんなに頑張っても、データを大量の「セル」でしか管理することができますんので、データが多くなればなるほど、収集がつかなくなり、困ってしまう状態になるのですが、じゃ、Accessを使用してなんとかしようとは。。。。思わないようです。
■ACCESSでデータベースを管理する画面を作成すると、例えば、顧客管理をする業務では、通常、顧客単位に画面に表示して処理します。
そこで今回は、「EXCEL」から「ACCESSデータベース」に移行した時、「EXCEL使い」を安心させてあげることができる検索・抽出方法を複数紹介します。
何万件データが登録されていても、効率よく個々のデータを読み出すことが可能です。顧客データなどを管理する保守画面などで、有効ではと思います。
<注意事項>——————————————————-
本連載の「知識レベル」は、
・「ACCESS」の画面、帳票等をウイザードを使用して、画面や帳票が作成することができる。
・あと「ボタン」の取り付け方等も理解している。
・データ「テーブル」を定義して、画面のウイザードで、項目を画面上に生成できる。
これ以下の操作レベルですと、「説明する内容を記載する部分が何ページあっても足りません」ので勘弁してください。簡単な書籍を購入して、まず操作を覚えてからにして下さい。
———————————————————————
Sponsored Links
1.検索・抽出処理
せっかくデータを登録しても、欲しい任意のデータを1件探しだして表示する事ができないと不便ですので、まずその方法について、色々な処理方法を記載しますので、参考にして下さい。
1)一発で該当データを1件だけ検索・抽出して表示する。
データベースのキー項目を入力すると、該当データを1件表示してくれますので、重複を許さないキー、例えば顧客管理Noなど使用する場合に有効です。
「検索」ボタンをクリックされた時のサンプルでクリック時の「イベント プロシージャ」内に記述するだけです。
DoCmd.ShowAllRecordsDoCmd.ApplyFilter “”, “[Forms]![顧客データ保守フォーム]![管理番号検索]=[顧客データ]![顧客CD]”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Private Sub 顧客CD検索_Click() On Error GoTo 顧客CD検索_Err DoCmd.RunCommand acCmdSaveRecord DoCmd.ShowAllRecords DoCmd.ShowAllRecordsDoCmd.ApplyFilter "", "[Forms]![顧客データ保守フォーム]![管理番号検索]=[顧客データ]![顧客CD]" 顧客CD検索_Exit: Exit Sub 顧客CD検索_Err: MsgBox Err.Description Resume 顧客CD検索_Exit End Sub |
フォームの検索欄に入力された管理番号で、顧客データの顧客CDと一致するデータを呼び出す。
簡単でしょ。大事な所はたった2行です。
これをコピーして貼り付けて、フォーム上の名前とデータの名称を書き換えれば完成です。
<補足>
・解除ボタンをクリックしたときのコードは下記の3行です。
DoCmd.RunCommand acCmdSaveRecord
DoCmd.ShowAllRecords
Forms!顧客データ保守フォーム!管理番号検索 = “”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Private Sub 検索解除_Click() On Error GoTo 検索解除_Err DoCmd.RunCommand acCmdSaveRecord DoCmd.ShowAllRecords Forms!顧客データ保守フォーム!管理番号検索 = "" 検索解除_Exit: Exit Sub 検索解除_Err: MsgBox Err.Description Resume 検索解除_Exit End Sub |
2)ドロップダウンリストより選択後、照会ボタンで絞り込んだもう一つの一覧画面を表示する。
例えば、あるマンションで絞り込むと、顧客データが22件存在します。
この22件のみ入力処理したい場合、登録件数の上の三角マークで、個別データを切り替えれば、一件づつ呼び出さなくても処理できます。
ある、まとまった属性のデータのみに修正入力したい場合に有効ではないでしょうか。
このような検索・抽出処理を入力・登録処理画面に本当に必要な物だけ付け加えてあげれば、ほとんどのデータを簡単に呼び出すことができますので、大変便利なデータベースになります。
MS顧客照会ボタンをクリックした時の「イベント プロシージャ」に記述するコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Private Sub コマンド215_Click() On Error GoTo Err_コマンド215_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "FS_顧客データ(マンション照会用)フォーム" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド215_Click: Exit Sub Err_コマンド215_Click: MsgBox Err.Description Resume Exit_コマンド215_Click End Sub |
例えば、マンション名で絞り込んだ一覧が表示されて、選択すると該当データを表示する。
■顧客データ検索(マンション照会用)サブフォーム
該当データをクリックすると、保守画面に表示されるようにしています。
「読出」ボタンか、「部屋番号」をダブルクリックした時に、記述する「イベント プロシージャ」
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Private Sub コマンド20_Click() On Error GoTo Err_コマンド20_Click If IsLoaded("顧客データ保守フォーム") Then Call Form_顧客データ保守フォーム.Find_Record(Me!顧客CD) End If DoCmd.Close acForm, "顧客データ検索(マンション照会用)サブフォーム" Exit_コマンド20_Click: Exit Sub Err_コマンド20_Click: MsgBox Err.Description Resume Exit_コマンド20_Click End Sub |
■Find_Recordの関数の定義は、顧客データ保守フォームの「イベント プロシージャ」内に記述しておく。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Public Sub Find_Record(i As Long) On Error GoTo Err_Find_Record If Nz(i) = 0 Then Exit Sub Me.SetFocus Me!顧客CD.SetFocus DoCmd.FindRecord i, acAnywhere, False, acDown, False, , True Exit_Find_Record: Exit Sub Err_Find_Record: MsgBox Err.Description Resume Exit_Find_Record End Sub |
3)あいまい検索処理1
電話番号、かな名など、途中の連続する文字や数字を入力して、右の「逆三角マーク」を押すと、ドロップダウンリストに入力した文字に該当する候補を複数表示してくれます。
入力した文字数(あいまい度)によって、ドロップダウンリストに絞り込んだデータの数が変化しますが、大体ほしいデータが発見できると思います。
部分一致検索になります。
ヵナ名の「逆三角マーク」をクリックされた時のサンプル「イベントプロシージャ」です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Private Sub ふりがな検索コンボ_AfterUpdate() On Error GoTo ふりがな検索コンボ_AfterUpdate_Err '現在行を確定する DoCmd.RunCommand acCmdSaveRecord ' コントロールの値と一致するレコードを検索する Me.RecordsetClone.FindFirst "[顧客CD] = " & Me![ふりがな検索コンボ] Me.Bookmark = Me.RecordsetClone.Bookmark Me![顧客名].Requery ふりがな検索コンボ_AfterUpdate_Exit: Exit Sub ふりがな検索コンボ_AfterUpdate_Err: MsgBox Err.Description Resume ふりがな検索コンボ_AfterUpdate_Exit End Sub |
4)あいまい検索処理2
部分一致検索になります。
入力した文字で、あいまい検索処理をして、絞り込んだもう一つの一覧画面を表示する。
入力した文字数(あいまい度)によって、検索表示したデータの量が変化しますが、大体ほしいデータが発見できると思います。
一覧表示する目的は、ある項目のみでは、探しても「特定」できない場合、複数の項目を表示して該当データを探す必要がある場合に有効です。
■保守画面の方で、名前等を入力(部分一致検索)して、「請求データ読出」ボタンをクリックすると、次の画面で、検索された該当のデータが表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
On Error GoTo Err_コマンド130_Click Dim stDocName As String Dim stLinkCriteria As String '明細画面情報セーブ処理 DoCmd.RunCommand acCmdSaveRecord stDocName = "F_請求データ一覧読出(ユーザ名あいまい検索)フォーム" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド130_Click: Exit Sub Err_コマンド130_Click: MsgBox Err.Description Resume Exit_コマンド130_Click End Sub |
■ユーザー名をクリックすると、保守画面に該当データが表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Private Sub ユーザ名_Click() On Error GoTo Err_ユーザ名_Click If IsLoaded("F_請求書データ保守フォーム") Then Call Form_F_請求書データ保守フォーム.Find_Record(Me!請求書管理番号) End If DoCmd.Close acForm, "F_請求データ一覧読出(ユーザ名あいまい検索)フォーム" 'DoCmd.Minimize Exit_ユーザ名_Click: Exit Sub Err_ユーザ名_Click: MsgBox Err.Description Resume Exit_ユーザ名_Click End Sub |
—Accessデータベース作成講座 関連記事—
・第1回 マイクロソフト ACCESSでデータベースを作成するには
・第2回目は Accessで、「得意先マスター保守」処理画面を作成してみる。
・第3回目は Accessで、「得意先マスター保守」処理画面を作成してみる。
・第5回 Access2010でパスワード管理データベースを作成してみよう。
・第6回 EXCELで作成した住所録をAccess2010に取り込んではがき宛名印刷をしてみる。
・第7回 郵便局の郵便番号簿データをダウンロードして、郵便番号・住所検索用のアプリをAccessで作成してみる。
・第8回 マイクロソフト ACCESSでデータベースを作成する時のプログラムソースのコーディングについて
—Accessについて 関連記事—
・Access 2013 の新機能とAccess 2013 で廃止、変更された機能とバージョンアップの必要性について
・マイクロソフト、「Access」の便利な機能を使って、業務アプリケーションを作成して活用する。
・第1回 ACCESS(アクセス)データベース作成ソフトについて
・第2回 ACCESS(アクセス)データベース作成ソフトについて
・第3回 ACCESS 2007の情報
・第4回 ACCESS トラブル対処の情報1「mdbが壊れてしまった時」
・第5回 ACCESSを「ファイル共有」で使用する場合の注意事項
・第6回 ACCESS トラブル対処の情報2 「メモリ不足」エラーについて
・第7回 ACCESSで Jet 4.0 データベースの動作環境を最適に保つ方法
・第8回 Access 2000とMSDEを利用してクライアント/サーバーシステムを構築する
・第9回 ACCESS 2010の情報
・第10回 Access2000(mdb)からAccess2010(accdb)に変換する
Sponsored Links