- ベストアンサー
Access複数フィールドを対象とした検索
- Accessで複数フィールドを対象とした検索フォームを作成したいです。VBAをあまり使わずにパラメータ入力を使用した検索方法を知りたいです。
- 注文テーブルと製番テーブルがあり、製番シールを参照して注文テーブルの製番フィールドを検索して変更したいです。
- 新たに検索クエリと検索フォームを作成して、複数のフィールドを対象にパラメータ入力して検索と編集を行いたいです。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (6)
- chayamati
- ベストアンサー率41% (260/624)
回答No.5の続きです。 先ず添付図に抜けがあります。製番テーブルの注番IDを追加してください この図は「型番修正フォーム」の作成過程でクエリビルダで作成した物です。 今回は「型番修正フォーム」を添付します。 上段は型番修正フォームのデザインビュー 中段は対象を「AA1300」して開いたもの 下段は対象を「AA1000」して開いたもの クエリにもフォームにも オートナンバー型の主キーである注文ID,製番IDがありません これはミスではありませんAccessで採番される利用者には 修正出来ない意味不明な項目でクエリ、フォームから省略できます。 またリレーション一方の注番はフォームから省略できます。 一つの注文情報に対して、複数の型番情報がありますが注文No.がユニークに する必要からこれにはその登録は出来ません。 サブフォームを持つ注文フォームが必要です。
- chayamati
- ベストアンサー率41% (260/624)
>ある製番一つを変更したい時に、どの注文の[製番1~3] に入っているか分からない旧製番を検索して新製番に変更する時があります。 出来ればVBAをあまり使わずに、"複数フィールドを対象にパラメータ入力" などして検索したいのですが…。 新たに検索クエリ/検索フォームを作成して 検索・編集出来るクエリ/フォームを作成する感じでしょ ★その通りです。 クエリの検索行は複数行あります、ここへ行を替えて[検索対象]と記述します これで、フォームを開くと検索対象の入力窓が表示され ヒットしたレコードのみ 表示されます。フォームを帳票形式に すると一覧で表示されます。 このまま修正入力も可能です。
補足
回答有難うございます。 今日はなかなか時間が取れなかったので明日以降試したいと思います。
- chayamati
- ベストアンサー率41% (260/624)
- kkkkkm
- ベストアンサー率66% (1734/2604)
> 出来れば抽出後、手入力修正を考えています…。 手作業で一個一個修正するのですか。 たとえば、「旧製番」というフィールドをもつ「旧製番テーブル」を作成し、修正用のフォームを作成してコントロールソースを旧製番テーブルにし、「旧製番」のテキストボックスを一個作ります。古いACCESSだと非連結フィールドでもリンクができましたが2013ではできないのでその為にテーブルを作ります。 そのフォームに [製番1]のみ表示のサブフォーム [製番2]のみ表示のサブフォーム [製番3]のみ表示のサブフォーム の3個のサブフォームを作成して(データ追加の許可はいいえ) それぞれ リンク親フィールドを「旧製番」 リンク子フォールドをそれぞれの製番 とすれば、「旧製番」に製番を入れたらそれぞれのサブフォームに旧製番のデータだけが表示されます。 という事でいいのでしょうか? 手動で訂正するのでしたら[製番テーブル]を開いて検索とか置換で現在のドキュメントで探すこともできると思いますが・・・。
お礼
kkkkkmさん 遅くなりました、試してみました。 フォームフィルタ機能で[旧製番]テキストボックスに探している製番を入力し、検索をかけると抽出されてきました。 ですが、[製番1]サブ[製番2]サブ[製番3]サブにすべてに同じ製番が表示されていて、[製番テーブル].[製番ID]テキストボックスもフォームに追加しておけば、どのフィールドに入力されていたか分かる感じでした。 いろいろな検索方法があるのだと実感致しました、大変勉強になりました。
補足
回答有難うございます。 今日は時間がなかなか取れなかったので、明日以降試してみたいと思います。
- kkkkkm
- ベストアンサー率66% (1734/2604)
> VBAまで習得出来ておらず、勉強中ですがなるべく簡単に検索する方法を模索中です。 VBAの話をしているとは思いませんが・・・。 更新クエリのレコードの更新にReplace関数使ったらという話ですが、実際試してないので結果は分かりませんけど、できないですか?。 製番テーブルにある旧製番を新製番に書き換えるという話ですよね。
補足
回答有難うございます。助かります。 すみません。VBAの話は…最初の質問の内容でした。補足内容、端折り過ぎてしまいました。 はい、確かに旧製番を新製番に書き換える話しなのですが…。 紹介して頂いたサイトの、Replace([部署名],"総務部","総務経理部")を応用して挑戦したのですが、[部署名]にあたるとこるが私の場合[製番1][製番2][製番3]と複数のフィールドに分かれており、"総務部"と"総務経理部"いう所は書き換え依頼の製番の情報が入るまでどの番号か不明なのです…。 膨大なメイン(注文テーブル)にあるサブ[製番1][製番2][製番3]フィールドの中で例えば[AB1234]という製番をこの複数フィールドを対象に検索してレコードを抽出したいと思っています。[製番1][製番2][製番3]のフィールド別に3回検索をかけるのが面倒となりまして。 ちなみに製番は重複していないです。出来れば抽出後、手入力修正を考えています…。 言葉が足りなくすみません。
- kkkkkm
- ベストアンサー率66% (1734/2604)
Replace関数を使ってデータを置き換える方法 https://pc.arthhuman.com/replace/ 更新クエリでテーブルのデータを置換する(文字列の一部更新) https://www.helpforest.com/access/ob_query/ac050011.htm 上記のサイトを参考にしてReplace関数を利用する方法をとればいかがでしょう。
補足
回答有難うございます。 すみません。言葉が足りませんでした。 >ある製番一つを変更したい時に、どの注文の[製番1~3]に入っているか分からない旧製番を >検索して新製番に変更する時があります。 というのは、製番は重複する番号シールは無く、変更する時はある注文の製番2だけ変更といった感じです。 総データ数はかなりあり、ホームフィルタでの検索では製番1~製番3各フィールドで行うのは面倒と思い質問の投稿させて頂きました。 VBAまで習得出来ておらず、勉強中ですがなるべく簡単に検索する方法を模索中です。 宜しくお願い致します。
お礼
chayamatiさん 遅くなりました、試してみました。 マスターテーブルは型番テーブルと注文先テーブルなどあります。私の質問内容からは省いてしまっていました。 注文情報を登録する時に注文No.や製番などが分かります。 私の説明が下手なのですが、検索対象は複数フィールドにある特定の[製番]なのですが、 添付図のようにクエリを作成し、[製番1][製番2][製番3]抽出条件にそれぞれ[対象]と入力しました。✓は外さずに表示してしまいましたが…。 簡単に複数フィールドを対象に検索抽出されました。大変、勉強になりました。 抽出されたレコード事態も追加・編集も可能なので本当に理想通りの結果です。 大変有難うございました。