- ベストアンサー
コンボボックス検索で複数データを検索できない
- コンボボックスで該当するデータを全て検索したいのですが、検索先の「キー(文言)」が複数レコードで存在する場合、最初に検索「表示レコード」したデータ以外は検索できなくて困っています。
- コンボボックス検索で検索先の「キー(文言)」に複数のレコードが存在しても検索できる様にしたい。
- 今迄は文言フィールドを検索キーとしていた事もあり、検索先の「キー(文言)」が複数存在するケースが殆ど無かったので、こうした事象に気が付きませんでした。以上ですが宜しくお願いします。
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
外国人情報のテーブル作成 フィールドのプロパティーシートの操作は理解できましたね たいてい、編集枠の右端クリックから始まりますね 名前:テキスト型、IME入力モード ひらがな ※数値型、日付型の時は半角モードですが、 テキスト型の時は選択できる この設定でデータ入力時半角全角の切り替えより解放されます 国地域ID:数値型_長整数 規定値0 表題を国地域名※フォーム作成時見出欄がフィールド名とになるが、これをに変更 ルックアップ設定 [ルックアップ]→[表示コントロールの右端]→[コンボボックス] →[値集合ソースの右端]→[国地域マスタ]→[列数の右端]→[2] ※国地域マスタのIDと国地域名の二つ →[列幅の右端]→[0] ※表示対象のIDは非表示、国地域名のみ表示 分類名ID:数値型_長整数 規定値0 表題を分類名 [ルックアップ]→[表示コントロールの右端]→[コンボボックス] →[値集合ソースの右端]→[分類マスタ]→[列数の右端]→[2]※分類マスタのIDと分類名の二つ →[列幅の右端]→[0] ※表示対象のIDは非表示、国地域名のみ表示 情報:メモ型 ※テキストボックスの文字数の最大が255文字ですが、メモ型にするとこの制約が外れ、 他のボックスではEnterキーでカーソルはフィールドから抜け出し次のフィールドに移動する。 ※メモ型の場合Enterキーで改行され、カーソルから抜けるにはマウスかTabキー ※テキスト型で改行を入れるにはCtrl+Enterキー ====================================================================== リレーションシップ これがエクセルにないツールで大変有効です 例えば生徒名簿でクラス→生徒→家族のように何段にも関連する情報多数あります。 この関連を定義するのがリレーションシップです。 この場合一つのクラスに数十名の生徒、一人の生徒に数名の家族と通常1対多数の関係にある結合を参照整合性と呼びサブフォームのあるフォーム、サブレポートのあるレポートに反映されます。 今回はこの活用がありませんが作成手順の流れを示します。、 [データベースツール]→[リレーションシップ]→[空白部分で右クリック]→[Shiftキーを押下したまま外国人情報、国地域マスタ、分類マスタ]→[追加]→[閉じる]→[外国人情報の国地域IDを国地域マスタのIDへドラッグ]→[参照整合性をクリックしてチェックを入れる]→[作成] →[外国人情報の分類IDを分類マスタのIDへドラッグ]→[参照整合性をクリックしてチェックを入れる]→[作成]→[×]
その他の回答 (11)
- chayamati
- ベストアンサー率41% (260/624)
エクセルのデータをコピペまたはインポートするだけで、アクセスのテーブルは作成できますが必要 これだけではエクセルの延長線上であるだけで、アクセスの機能を活かすことは出来ません。 エクセルで処理した方が良いでしょう。 アクセスの核にあたる部分がテーブルです。 質の良いテーブル設計することにより、システムの90%以上が完成したことになります。 では、テーブル設計に入ります。 今回は、外国人情報、国地域マスタ、分類名マスタ3つのテーブルを作成しますが マスタテーブルから作成することにします。 [作成]→[テーブルデザイン]と入るとテーブル作成の画面になります。 1.国地域マスタ作成 [「国地域名」と入力]→[データ型はテキスト型]→[値要求の右端からハイ]→[インデクスで重複無し]→[フリガナ欄の右端…]→[テーブルを先に保存にはい]→[テーブル名に「国地域マスタ」と入力]→[OK]→[主キーが設定されていませんにハイ]→[新しいフィールド作成にフリガナと訂正して完了] このテーブルは重複登録ミスは未然防止、国地域名を入力するとフリガナが自動で入ります。 フリガナはコンボボックスの表示順番にできます。 同じ流れで分類マスタも作って下さい。 今回はここまでですが、このプロパティーシートにはエクセルでおなじみのIME入力モード、IME変換モード、住所入力支援もあります。機能を確認ください。 次回外国人情報のテーブル作成でルックアップ機能とリレーションシップテーブル設計は完了です。 ------------------------------------------------------------------------------------------- VII、お尋ねしたいこと 1,ラベルとコマンドボタンの採用による運用上の違いによる利点。 コマンドボタンは作成は楽ですが、コマンド実行前に前処理(レコードの範囲設定)のある時は実行時1ステップ またACCESS2000のころコマンドボタンに色付けが出来なかった。 2,コンボボックスをテーブル段階でルックアップ設定の採用の利点。 テーブルだけでデータ編集が出来、フォーム、レポートに反映されるのでこちらの手間が省ける
- chayamati
- ベストアンサー率41% (260/624)
>つまり、タブフォームみたいなものでは無いという事でしょうか。 そうですね フォームに限らず、テーブル、クエリ、レポートどれを開いてもこの見出しは表示されます。 確認して下さい >同一質問内に於いて、新たに「お尋ね(質問)」させていただく場合、画像が貼付できない「補足コメント入力」欄しか見当たりません。 どうやら、画像添付は最初の一回だけのようです。 「コンボボックス検索で複数データを検索_追加画像1」の表題で新規にQしますか 尚、今までの回答の体験困ったことは、何をどのように回答したのか見直しにに困りました 質問を小分けにしませんか 今後、下記のような予定で説明したいと思っています。 1.テーブル設計.リレーションシップを含む 2.クエリ 3.フォーム設計 4.レポート設計 テーブルの設計が完了すれば、他の順序はどれからでも、同時でもよいと思います。
補足
chayamati レベル12様へ 作り始めたばかりでデータ量は少ないです。しかし、知識レベルはビギナーですので、基本をド返しした馬鹿の一つ覚え(我流)の使い方から出てしまうと、正直、何もわからなくなるものだと実感しました。 データベース作成のおさらいですが。 I、テーブルの作成 1,外国人情報登録(名前):ID:オートナンバー、国地域:数値型、分類名:数値型、情報:メモ 2,国地域:数値型(名前):ID:オートナンバー、分類名:テキスト 3,分類名:数値型(名前):ID:オートナンバー、分類名:テキスト II、フォーム「外国人登録」を作成 1,テーブル(名前:外国人情報登録)をクリック、複数アイティムを選択して一覧フォームを作成。 III、リレーションシップの作成 1,「1」「2」「3」をリレーションシップウインドで作成 IV、外国人登録テーブル「2と3のフィールド」にルックアップウィザードを設定 ・国地域と分類名「2と3」を(「数値型」設定とプルダウンメニュー)から「ルックアップウイザード」を選択次へ「テーブル:チェックボックス」次へ「ルックアップフィールド:ID」次へ「キー列を表示しないチェックボックスを外す」で完了。 V、無地のフォーム作成「名前:マスター」 1,コンボボックスを2個の設定 ・コンボボックスのプロパティー「値集合ソース」にプルダウンからテーブルの「2と3」を選ぶ。 2,ラベルを1個「名前:外国人情報登録」の設定 ・クリック時のイベントのプロシージャ―にアドバイスの記述を書き込む。 VI、正直、V迄の操作とこの後の手順がまだ理解できていない。 ・I~Vまでの手順に間違いがないか。「うまく動かせていないので」 ・マスター(フォーム)からフォーム「外国人情報登録」の呼び出し方ですが、「ラベル:VBA記述」のクリックがフォームを開くトリガーと理解して宜しいでしょうか。(「ボタン」の知識しかなかった為。従って、ラベルを理解したいと思っています。) VII、お尋ねしたいこと 1,ラベルとコマンドボタンの採用による運用上の違いによる利点。 2,コンボボックスをテーブル段階でルックアップ設定の採用の利点。 以上ですが、普段使っていない手法でもあり大変興味があります。宜しくお願いします。
- chayamati
- ベストアンサー率41% (260/624)
>タブ構造「メニューと外国人情報登録」 これはメニューも開いていることです。 メニューから外国人情報登録を開きましたので、外国人情報登録を閉じるかメニュータブをクリックすると、メニューが表示されます。
補足
chayamati レベル12様へ つまり、タブフォームみたいなものでは無いという事でしょうか。 「追伸ですが」 誠に申し訳ございません。まだ、できて居りません。画像を添付してお尋ねするしかないと思っていますが、私(質問者)の立場で同一質問内に於いて、新たに「お尋ね(質問)」させていただく場合、画像が貼付できない「補足コメント入力」欄しか見当たりません。それは、ヘルプ(http://guide.okwave.jp/question/more.html)を参照しましても「画像」の貼付はできないようです。 私の場合(質問者の立場で)、画像添付しようとすると新たに質問し直すしか選択肢を見つけられませんが、しかし、chayamati レベル12様は、同一質問内で何度も画像添付の上で「回答」されて居られます。(質問者と回答者のOKWave画面上のメニューの違いでしょうか。) 誠に恐縮ですが、私(質問者の立場で)が質問時点「画像貼付できますので」を除き「以降」の操作に於いて、画像を貼付してお尋ねできる方法をご存知でしたら、是非、ご伝授願えませんでしょうか。 質問先の筋が全く違う「利用者が解決する問題」ことは承知して居りますが、OKWave様への質問方法「メールアドレス等を探せていない」が分からないこともあり正直困っています。 以上ですが、解決の糸口だけでもアドバイス願えませんでしょうか。
- chayamati
- ベストアンサー率41% (260/624)
噛み違いの原因が分かりました。あなたのテーブルを精査せずに、私の仕組みに当てはめようとした事によるものです。すべては私に原因があります。ごめんなさい。 Accesのテーブルは建築物の土台と骨組みにあたるもので、これに肉付けするのが、クエリ、フォーム、レポートとVBAです。 なので、今までの事をご破算にして、テーブル体系を整理したいと思います。 テーブルは「外国人情報」だけですか 外国人情報テーブル:ID、国地域、分類、情報報 これを ・外国人情報:ID、国地域ID(国地域.IDにリレーション)、分類ID(分類.IDにれレーション)、情報 ・国地域:ID、国地域名、ふりがな ・分類:ID、分類名、ふりがな 詳しくは添付画像を参照ください 画像右側のルックアップの補足 ・表示コントロールの右端クリックでボックスの種類リスト ・連結列1 値集合ソース1番目のフィールド(ID) ・列数2 値集合ソースの2番目までのフィールド(ID、国地域名) ・列幅0 列数2の内一つ目は表示しない(国地域名の表示) ・リスト行数16 (表示行数は自由に設定できる) やり直されるならコメントください、 また既に出来上がっているテーブルのレコード数が大量にあるのなら移行の方法も考えねばなりません、レコード数もお願いします。
- chayamati
- ベストアンサー率41% (260/624)
1,フォームの作成 (1)フォーム名:外国人情報登録 !!!フォームは開いてデータを登録できますか 2,無地のフォームを作成 (1)フォーム名:メニュー 3,コマンドボタン1個:「名前(外国人情報登録)」クリック時のイベント記述 (1)アドバイスの記述をコピペしました。 !!!コマンドボタンではありません。先ずこのコマンドボタンを削除してください。 ラベルツールをクリック→フォーム上をクリックして「外国人情報登録」と入力します。 この時点ではこのボックスの名前は「ラベルXXX」です、ラベルボックスのプロパティーシートのその他タグの最上段に表示されていますこれを「外国人情報登録」と書き換えます。 次にイベントタグ内の【クリック時の右端の…】→【コードビルダ】→【OK】で Private Sub 外国人情報登録_Click() End Sub と表示されるのでコピペで完成させます 4,コンボボックスの作成と設定 (1)コンボ(名前:国地域選択),データの値集合ソースに「国地域を選択」 ・SELECT DISTINCT 外国人情報テーブル.国地域 FROM 外国人情報テーブル; (2)コンボ(名前:分類選択),データの値集合ソースに「分類センタ国地域を選択」 ・SELECT DISTINCT 外国人情報テーブル.分類 FROM 外国人情報テーブル; !!!コンボボックスの元となるテーブルは外国人情報テーブルとは別に作成しては 4-1.国地域 ・ID オートナンバー ・国地域名 テキスト型 インデックスは重複無し ・フリガナ テキスト型 ふりがな支援を設定 4-2.分類 ・ID オートナンバー ・分類名 テキスト型 インデックスは重複無し ・フリガナ テキスト型 ふりがな支援を設定 5,不具合について (パラメータの入力)国地域IDと分類IDのダイアログ表示です。勿論フォーム「OKで操作を飛ばす」を開いてもデータはありません。 !!!コンボボックスのプロパティーシート内の連結列の数値は値集合ソースのフィールド位置を意味します。 6,chayamati レベル12様へ (1)不具合の対処がわかりませんです。 !!! 4-1、4-2で解決されるのでは (2)フォームは、タブ構成になっていますがどの様に作られてのでしょうか。 !!!どのフォームことでしょうか、 フォーム作成のウィザードで単票形式と帳表形式(複数行形式)があることはご存知ですね
補足
chayamati レベル12様へ まだ完成していないのですが、どうしても気になりますので取り急ぎ再お尋ねします。2017-03-11 11:04:16 回答No.6で貼り付けられたフォームですが、タブ構造「メニューと外国人情報登録」になっていますね。これはどの様に作成されたのでしょうか。教えて下さい。 宜しくお願いします。
- chayamati
- ベストアンサー率41% (260/624)
添付は回答No.4の国地域と分類を空白のまま「外国人情報登録」をクリックした結果です。 1.1レコード1行の複数レコード表示です。 2.情報は複数行必要ですので、データ型をメモ型にし、フォームフッターにも配置しました 3.国地域をフランスにし、分類を空白とするとフランスのリストが出来上がります。
補足
chayamati レベル12様へ まず単純に1~5で実施しました「全然できずです。申し訳ございません」。「6」1~5での決定的な間違いと作成されたフォームの作り方をお尋ねしました。 1,フォームの作成 (1)フォーム名:外国人情報登録 [ナビゲーション内の外国人情報テーブルをクリック]→[作成]→[その他のフォームの右端▼]→[複数のアイテム]→フォーム作成 「※このやり方でフォームが作れることを知りませんでした。」 2,無地のフォームを作成 (1)フォーム名:メニュー 3,コマンドボタン1個:「名前(外国人情報登録)」クリック時のイベント記述 (1)アドバイスの記述をコピペしました。 4,コンボボックスの作成と設定 (1)コンボ(名前:国地域選択),データの値集合ソースに「国地域を選択」 ・SELECT DISTINCT 外国人情報テーブル.国地域 FROM 外国人情報テーブル; (2)コンボ(名前:分類選択),データの値集合ソースに「分類センタ国地域を選択」 ・SELECT DISTINCT 外国人情報テーブル.分類 FROM 外国人情報テーブル; 5,不具合について (パラメータの入力)国地域IDと分類IDのダイアログ表示です。勿論フォーム「OKで操作を飛ばす」を開いてもデータはありません。 6,chayamati レベル12様へ (1)不具合の対処がわかりませんです。 (2)フォームは、タブ構成になっていますがどの様に作られてのでしょうか。 以上、宜しくお願いします。
- chayamati
- ベストアンサー率41% (260/624)
>ご質問の「分類のコンポボックスでしぼり込まれたのでしょうか。」ですが、「国地域」で絞り込みをしています。表示後に下向き「↓」をクリックし「同じ国名のレコード」が存在するとフォーム「同一フォーム」上でデータが変更されます。「同じ国名のレコード」の最後のレコードが表示されると次へ進めません「エラー表示なし」。「↑」は移動分のレコード★添付の画像は貴方の貼り付けた画像に赤枠を追記したものです。 ・この赤枠内に上記の機能は全て含まれています。この中に絞り込まれたレコード件数は1件という情報もありますね 赤枠内の右端の記号はレコード追加です。これをクリックすると新規登録画面になります。 ・新規登録はフランス以外でも可能です、分類も自由に選択できますが ただコンボボックスのデータ元が「外国人情報」であれば国地域も、分類項目も新規は不可です。 「別件でのお尋ねですが」 chayamati レベル12様は、コメントに画像貼り付けて回答をされていますが、 >質問者である私が画像貼り付けでコメントする方法はあるのでしょうか。 「コンボボックス検索で複数データを検索できない」に画像がありましたので理解されているのでは 【OKWAVEの質問枠の下の「画像貼り付け」]→【参照】→【画像ファイル名】→【開く】 この画像ファイルはSnipingツールでウィンドウの一部をコピー、コピーした画像に何かを追加するには 画像をエクセルのSheetに張り付け、【挿入】→【図形】→【】と進み、再びSnipingツールでコピーしファイルを保存します。
- chayamati
- ベストアンサー率41% (260/624)
話が噛み合っていないようですね 添付画像を見ると何処かで一件に絞り込まれていますね 分類のコンポボックスでしぼり込まれたのでしょうか 太枠内の検索国名はコンポボックスですね、検索結果フォーム上配置しても有効ではありません。 このボックスのデーター元「外国人情報テーブル」以外のテーブル(例えば国名)にしましょう 【ナビゲーション内の外国人情報テーブルをクリック]→[作成]→[その他のフォームの右端▼]→[複数のアイテム] これで外国人情報テーブル内のレコード全てが反映したフォームが作成されます。 このフォームに国地域と分類のコンボボックスで絞り込みます。 空白のフォーム上に「地域選択」、「分類選択」のコンボボックスと「外国人情報登録」のラベルボックスを配置し 「外国人情報登録」の右端右端…よりクリックイベントを起動して、次のようにコーディングする Private Sub 外国人情報登録_Click() If IsNull(国地域選択) And IsNull(分類選択) Then DoCmd.OpenForm "外国人情報登録", acNormal If Not IsNull(国地域選択) And IsNull(分類選択) Then DoCmd.OpenForm "外国人情報登録", , , "forms!メニュー!国地域選択=国地域ID" If IsNull(国地域選択) And Not IsNull(分類選択) Then DoCmd.OpenForm "外国人情報登録", , , "forms!メニュー!分類選択=分類ID" If Not IsNull(国地域選択) And Not IsNull(分類選択) Then DoCmd.OpenForm "外国人情報登録", , , "forms!メニュー!国地域選択=国地域ID and forms!メニュー!分類選択=分類ID" End Sub 1,検索元のコンボボックス名「国地域検索」と設定内容 (1)設定1,データの値集合ソースに「国地域を選択」 ・SELECT DISTINCT 外国人情報テーブル.国地域 FROM 外国人情報テーブル; 自分だけの思い込みかもしれませんが、重複したレコードがあるテーブルはコンポボックスの検索もとには出来ない
補足
chayamati レベル12様へ 質問に答えていなくて申し訳ございません。まず、ご質問の「分類のコンポボックスでしぼり込まれたのでしょうか。」ですが、「国地域」で絞り込みをしています。表示後に下向き「↓」をクリックし「同じ国名のレコード」が存在するとフォーム「同一フォーム」上でデータが変更されます。「同じ国名のレコード」の最後のレコードが表示されると次へ進めません「エラー表示なし」。「↑」は移動分のレコードを戻るだけになります。 「別件でのお尋ねですが」 chayamati レベル12様は、コメントに画像貼り付けて回答をされていますが、質問者である私が画像貼り付けでコメントする方法はあるのでしょうか。差し支えなければご指導願えればと思います。
- chayamati
- ベストアンサー率41% (260/624)
補足願います。 貴方の「外国人情報コンボボックス検索」のフォームを開いた瞬間、添付された画像以外 1.何か表示されますか? 2.マウスカーソルはどの位置ですか
補足
chayamati レベル12様へ ご質問の「開いた瞬間」のロケーションについて。 ・マウスの位置は「I」マークでの「外国人情報コンボボックス検索」エリア内です。 ・「外国人情報コンボボックス検索」を開いた瞬間に他に表示「フォーム・他」は確認出来ませんでした。 以上ですが。宜しくお願いします。
- chayamati
- ベストアンサー率41% (260/624)
「外国人情報コンボボックス検索フォーム」上に検索条件ボックスを配置しても有効ではありません 「外国人情報コンボボックス検索フォーム」を開いたとき、国名入力枠が表示されませんか これは国名が未定であることを意味します。 別のフォーム(例えば「メニュー」)上にコンボボックスを配置して、 このイベントで「外国人情報コンボボックス検索フォーム」を開きます。 >検索先の「キー(文言)」が複数存在するケースが殆ど無かったので、こうした事象に気が付きませんでした。 テーブルの設計を見直す必要があります。
補足
chayamati レベル12様へ 「お礼」 まず、アドバイスありがとうございます。先々月の1月に質問の「ひとつのコマンドボタンで2つ以上の機能を持たせたい」が実現できていなくて恥ずかしい気持ちです。これを自分のものにできれば大きく飛躍できそうですが。全体の構成が頭の中で描けない状況です。スリムで軽快な動きのDBを目指していますので、アドバイスの機会に触れられるのが励みになります。「私の思考回路で解決に至るには、今しばらく時間が必要な感じです。」 「現状報告」 設定をいろいろと変えてみました所、検索対象レコードが複数存在する時でも検索できる様な気がしています。但し、やり方の良し悪し(DBへの悪影響有無等)が分からない領域であり、自身で断定(やっていいのか)できていません。 「やったこと」 質問2の一部(下記)を変更しました。「先頭から検索(デフォルト=はい)」を「いいえ」に変えたのですが、検索対象のレコードが複数存在するレコードでも検索が可能でした。先にも申しましたが、このやり方でDBに悪影響があると困りますので、ご判断をお願いできればと思います。 2,検索元のコンボボックス名「国地域検索」と検索ボタンの設定内容 (1)設定1,次のデータへ移動する「↓ボタン」と「ボタン↑」のマクロ設定 ・アクション:コントロールの移動=「国地域」 ・レコードの検索=「=[国地域検索]」 ・検索方向=「↓ボタン」=「下へ」、「ボタン↑」=「上へ」 ・他は全てデフォルト=※ではなくて一部変更、「先頭から検索(デフォルト=はい)」→「いいえ」 勝手なお願いですが、宜しくお願いします。
- 1
- 2
お礼
chayamati レベル12へ 長く引き止めてしまいました。途中勘違いもありご迷惑をお掛けしました。やはり、リレーションシップがキーになっているので、既存のDBでオブジェクトの少ないものを対象に作り直す「多くの機会を持つ」ことで、リレーションシップの感覚を高めたいと思います。ありがとうございました。