- ベストアンサー
更新クエリでフィールドの値をコピーする方法
- 更新クエリを使用して、レコードの特定のフィールドの値を別のフィールドにコピーする方法を教えてください。
- 現在の実装ではVBAとマクロのフィルタを使用して値を抽出し、フィールドに代入していますが、更新クエリで同様の操作ができないか考えています。
- 特定のフィールドをセットし、別のフィールドにその値を代入するための更新クエリの実装方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>WHERE (((基本情報クエリ.ID)=[Forms]![基本情報フォーム]![kensaku_box1].[ListIndex])); >検索ボックスを置きました。kensakubox1とkensakubox2です リストボックスかコンボボックスか不明ですが =[Forms]![基本情報フォーム]![kensaku_box1] でそのボックスの連結列の値を参照することができます。 なのでkensakubox1の表示が例えばID・名前と表示している場合でプロパティの連結列が1に設定してあればクリックしたIDの値を持っていますので(1がIDで2が名前) ([基本情報クエリ].ID)=[Forms]![基本情報フォーム]![kensaku_box1] で抽出できます。 なのでボックスの連結列がIDに対応するフィールドであれば WHERE (((基本情報クエリ.ID)=[Forms]![基本情報フォーム]![kensaku_box1])); で抽出できます。
その他の回答 (1)
- O_cyan
- ベストアンサー率59% (745/1260)
>更新クエリでやるとしても○○のフィールドを特定させ、△△のフィールドへSETすることがどうやるべきか? 簡単にやるにはクエリを2つ作ればできます。 そのテーブルをTbl1とした場合。 SELECT [Tbl1].ID, [Tbl1].調子, [Tbl1].コメント FROM Tbl1 WHERE ((([Tbl1].ID)=[ID誰を?])); としてQ_1というクエリで保存する。 UPDATE Tbl1 SET [Tbl1].調子 = [Q_1].調子, [Tbl1].コメント = [Q_1].コメント WHERE ((([Tbl1].ID)=[ID誰に更新する?])); という更新クエリを作れば良いと思いますが。 更新クエリを開けば[ID誰を?]と[ID誰に更新する?]を聞いてきますのでそこに山田->青木であれば[ID誰を?]でIDの1を[ID誰に更新する?]でIDの3を入力すれば更新完了。 2つのクエリをネストしても各WHERE文をフォームのコントロールから取得するようにしても出来ますのでその辺はご自分でやってみてください。
お礼
回答ありがとうございました。 おかげさまでもうちょっとでできそうです。 そんな方法でできるなんてちょっと思いつかないです。 >WHERE文をフォームのコントロールから取得するようにしても これを実現しようとしていますが、取得するにはどんなふうに書けばよいのか教えて頂けますでしょうか? フォームには2つの検索ボックスを置きました。kensakubox1とkensakubox2です。 素人なりにやってみた感じでは、更新されるのですが、実際のデータは更新されていないです。 .[ListIndex]のところがあいまいなんですが、ここにはなにを記述するのでしょうか? WHERE (((基本情報クエリ.ID)=[Forms]![基本情報フォーム]![kensaku_box1].[ListIndex]));
お礼
回答ありがとうございました。 おかげさまで無事できました! また、なにかのときはよろしくお願いします。