• 締切済み

2つのサブフォーム間でデータの連携

今、ある単票フォームに、2つのサブフォームを配置し、そのサブフォーム間で金額の連携をしたいと考えています。 【親フォームA】 ・ID1、長整数型(主きー) ・受付日時 ・発注金額総合計 <== ※Bが更新されたら、ここを更新したい 【サブフォームB】 ・ID2、長整数型(主キー) ・ID1(外部キー) ・発注日 ・発注合計金額 <=== ※Cが更新されたら、ここを更新したい ==> Aの更新へ↑ 【サブフォームC】 ・ID3、長整数型(主キー) ・ID2(外部キー) ・発注項目名 ・単価 ・数量 ==>ここを更新する→Bへ↑ ・単位 ==>ここを行進する→Bへ↑ ・摘要 サブフォームB、Cは、いずれも帳票型です。 それぞれ、テーブルA, B, Cがレコードソースで テーブル構成は、上の項目の構成と同じです。 A-ID1: B-ID1 = 1:多 B-ID2: C-ID2 = 1:多 この時、Cで単価と数量を入力したら、Bの発注合計金額の値を更新したいです。 それと同時に、親Form Aの「発注金額総合計」の値を、Bの全てのレコードの「発注合計金額」のSumで更新したいです。 よろしくお願いします。

みんなの回答

  • Anzu4699
  • ベストアンサー率59% (26/44)
回答No.2

また長文失礼いたします、必要な部分だけ見ていただけると助かります ■補足回答 >フィールドの更新後処理では、SQLで更新クエリーを実行すると >、フォームのレコードソースの値は既に更新されているのでしょうか? テーブルのレコードとしてはまだ更新されていません レコードソースの連結項目であっても、 カレントレコードが「移動」されるか「閉じられる」か「コミット(保存)」された際に 初めてデータベース(テーブルレコード)に反映されます 従ってフィールドの更新後処理では、実際のレコードはまだ更新されていません レコードとしては、まだ編集中という位置づけになります 「acCmeSaveRecord」は保存の意味合いになるのであるいみ性解です ※編集中のレコードは、キーボードのESCを2度連続押下すると元に戻す機能を持っています ■余談:データベースが外部(SQLやOracle)の場合、以下のような現象が発生します (1)PC-Aでテーブルレコード修正中(編集中)のとき、他のPCからそのレコード参照すると前の値が参照されます (2)PC-Aでテーブルレコード修正中(編集中)のとき、他のPCでも同じレコードを修正しようとすると ___最後に更新しようとするPCに警告メッセージが出てきて反映できません(ココ裏覚えですがでたはず) ___その場合、レコードロックなどの仕組みを作る必要になります(仕組みは物凄い情報量になるので省きます) ■大昔(2008年ごろ)、自分が教わった事 テーブルを実際開いてみてください、テーブルのレコード内の(どれでも良いです)項目値を 入力すると左側に鉛筆マークがでてきます。 この鉛筆マークは編集中と意味で、まだレコードには実際に反映されていません キーボードのEscボタンを2回チャチャと押すと編集中のレコードは元に戻ります Escボタンを押さずにレコードを移動またはテーブルを閉じると反映されます ※VBやRPG400の言語で言うと、コミットされるというわけです これがAccessではフォームでも連結項目の場合、適用されるというわけです 解らなければ、そういうものだと理解しときや と教わった、やばいなぁ走馬灯のように思い出す自分・・・なんか涙出てくる 以上でした (さぁ定時だぁパチンコ行くぞ~w)

  • Anzu4699
  • ベストアンサー率59% (26/44)
回答No.1

■前提条件 (1)開発言語(アプリ)はAccessと判断 (2)親フォーム及びサブフォームBの更新したい項目はテーブルの項目で連結項目と判断 (3)データベースはAccessと判断 説明(3a).データベースがSQLServerやOracleServerの場合、集計クエリを用いた更新クエリの作成が可能 説明(3b).データベースがAccessの場合、集計クエリを用いた更新クエリの作成が不可能 ※不可能理由:ACCESSのデータベースエンジンにある限界の一つで実行すると、 「更新可能なクエリであることが必要です。」というエラーがでます。 ■準備 (サンプルコードにてスペル間違いがあるかも) (1)テーブルAの「発注金額総合計」を更新するSQLを用意 --- 以下、詳細 --- (1A).集計+テーブル作成SQLを用意 (Sum関数利用) <サンプルコード:SQL名=Q_TBL_B_SumTBL> SELECT T_TBL_B.ID1, Sum(T_TBL_B.発注合計金額) AS 合計金額 INTO T_TBL_B_SumTBL FROM T_TBL_B GROUP BY T_TBL_B.ID1 HAVING T_TBL_B.ID1 = ★引数★ ※テーブル作成する理由は、上記前提の説明(3b)の問題点の代替案 (1B).(1A)で作成したテーブルを用いて、テーブルAの「発注金額総合計」を更新 <サンプルコード:SQL名=Q_TBL_B_Upd> UPDATE T_TBL_B_SumTBL LEFT JOIN T_TBL_A ON T_TBL_B_SumTBL.ID1 = T_TBL_A.ID1 SET T_TBL_A.発注金額総合計 = [T_TBL_B_SumTBL]![合計金額]; (1C).(1A)で作成したテーブルオブジェクト自体を削除 <サンプルコード> DoCmd.DeleteObject acTable, "T_TBL_B_SumTBL" (2).テーブルBの「発注合計金額」を更新するSQLを用意 --- 以下、詳細 --- (2A).単価×数量を算出するSQLを用意 <サンプルコード:SQL名=Q_TBL_C_Cmp> SELECT T_TBL_C.ID2, [T_TBL_C]![単価]*[T_TBL_C]![数量] AS 金額計算 FROM T_TBL_C WHERE T_TBL_C.ID2 = ★引数★ (2B).(2A)のSQLを用いて集計+テーブル作成SQLを用意 (Sum関数利用) <サンプルコード:SQL名=Q_TBL_C_SumTBL> SELECT Q_TBL_C_Cmp.ID2, Sum(Q_TBL_C_Cmp.金額計算) AS 合計金額 INTO T_TBL_C_SumTBL FROM Q_TBL_C_Cmp GROUP BY Q_TBL_C_Cmp.ID2; ※テーブル作成する理由は、上記前提の説明(3b)の問題点の代替案 (2C).(2B)で作成したテーブルを用いて、テーブルBの「発注合計金額」を更新 <サンプルコード:SQL名=Q_TBL_B_Upd> UPDATE T_TBL_B RIGHT JOIN T_TBL_C_SumTBL ON T_TBL_B.ID2 = T_TBL_C_SumTBL.ID2 SET T_TBL_B.発注合計金額 = [T_TBL_C_SumTBL]![合計金額]; (2D).(2B)で作成したテーブルオブジェクト自体を削除 <サンプルコード> DoCmd.DeleteObject acTable, "T_TBL_C_SumTBL" ■対応回答(未検証につき作成時には微調整が必要) (1).サブフォームCの更新時イベントにて、準備(2)のSQL等を実行後(Docmd.RunSQL関数だったかな) サブフォームBのリクエリーを実施 (2).サブフォームBの更新時イベントにて、準備(1)のSQL等を実行後(Docmd.RunSQL関数だったかな) 親フォームAのリクエリーを実施 <備考A> 作成時はまずボタンで動作するようにして置き、動作検証後に更新後イベントに 組み込むことをお勧めいたします(きちんと動作しないときの原因調査に役立つ) <備考B> リクエリー等を頻繁に行うと、ちらつきが気になる人がよくいます の場合、ちらつき防止用の関数があったと思います(関数名忘れ)ので併用することをお勧めします <備考C> フォーム更新後イベントに付き、入力しただけでは反映されません 入力即という事であれば、項目の更新後または変更時イベントで行えばよいと思います が、その場合以下の点に注意 (備考C1).Access特有の編集時における元に戻す(確かEscを2回クリック)機能が使えなくなります (備考C2).さらに頻繁に動作することになる為、データ量によってはレスポンスが悪くなる可能性有 ■まとめ 用は、それぞれのフォームに対し、更新SQLを実施後、 画面再表示(リクエリー)をかける あとはその実行するタイミング(キック場所)を調整していけばよいと思います。 前提条件が違っていて、更新したい項目が、非連結項目の場合は、また別の手法になります 実際のサンプルコードを全部作って説明したほうが良いのかもしれませんが 理解を深めるために、ここから先は調べてみてください ※内心=時間があれば全部のサンプルコードを載せたい所だが、単に自分(Anzu)が時間が無いだけの言い訳でした 以上でした。

superwonderful
質問者

お礼

ご回答ありがとうございました。 とりあえず、時間的に余裕がありませんので、また、落ち着いた時に書かれている内容を吟味してみたいと思います。 ありがとうございます。

superwonderful
質問者

補足

大変お忙しいなか詳しい説明をくださり、ありがとうございます。 以下、私からのお返事を書かせていただきます。 >■前提条件 (1)開発言語(アプリ) → Accessです。 (2)親フォーム及びサブフォームBの更新したい項目はテーブルの項目で、フォームのレコードソースです。リレーションシップも設定済みです。 (3)データベース → Accessです。 >説明(3a).データベースがSQLServerやOracleServerの場合、集計クエリを用いた更新クエリの作成が可能 →先でSQL Serverに移行する事を検討するかも知れません。集計クエリを用いた更新クエリー作成がアクセスでは出来ないという情報、ありがとうございました。 >■準備 >(1)テーブルAの「発注金額総合計」を更新するSQLを用意 >(1A).集計+テーブル作成SQLを用意 (Sum関数利用) ><サンプルコード:SQL名=Q_TBL_B_SumTBL> >SELECT T_TBL_B.ID1, Sum(T_TBL_B.発注合計金額) AS 合計金額 INTO T_TBL_B_SumTBL >FROM T_TBL_B GROUP BY T_TBL_B.ID1 HAVING T_TBL_B.ID1 = ★引数★ >※テーブル作成する理由は、上記前提の説明(3b)の問題点の代替案 Group by + Having句の使い方をこちら「http://www.atmarkit.co.jp/ait/articles/0706/21/news128.html」で調べてみました。 処理の順番では、Where句→Group by句→Having句となるので、Group by句でグループ分けしたものに対して、Having句でID1の抽出する値を絞り込んでいるということですね。 >(1B).(1A)で作成したテーブルを用いて、テーブルAの「発注金額総合計」を更新 ><サンプルコード:SQL名=Q_TBL_B_Upd> >UPDATE T_TBL_B_SumTBL LEFT JOIN T_TBL_A ON T_TBL_B_SumTBL.ID1 = T_TBL_A.ID1 >SET T_TBL_A.発注金額総合計 = [T_TBL_B_SumTBL]![合計金額]; この場合、Update [SUM table b] left join [table a] on ... とすると、左から右への更新クエリーになって、該当するレコードがない場合には、追加クエリーの役目もするのですね。。。 (http://hatenachips.blog34.fc2.com/blog-entry-153.html) >■対応回答(未検証につき作成時には微調整が必要) >(1).サブフォームCの更新時イベントにて、準備(2)のSQL等を実行後(Docmd.RunSQL関数だったかな) >サブフォームBのリクエリーを実施 >(2).サブフォームBの更新時イベントにて、準備(1)のSQL等を実行後(Docmd.RunSQL関数だったかな) >親フォームAのリクエリーを実施 →現在、RecordsetCloneを取得して、計算して、フォームの該当フィールドにセットする処理を作ってみましたが、イベントの処理がなかなか難しいです。ヘタすると、イベントがずっと連鎖して動きっぱなしのような画面の動きになってしまいます。その理由は、多分、親、子、孫で「Before_Updateのイベント」に処理を入れているからです。その対策として、値を更新した後に孫のサブフォームのフレームにSetfocusするとしたら、イベントの連鎖更新が止まりました。 スピードに関して言えば、しかし、処理的には上の更新クエリーのほうがずっと速いのでしょうか? ><備考A> →まずはボタンを作って試してみるというご提案、とても役に立ちそうです。 ><備考B> >リクエリー等を頻繁に行うと、ちらつきが気になる人がよくいます → Me.Repaint = False → Me.Repaint = True ですね <備考C> >フォーム更新後イベントに付き、入力しただけでは反映されません >入力即という事であれば、項目の更新後または変更時イベントで行えばよいと思います >が、その場合以下の点に注意 >(備考C1).Access特有の編集時における元に戻す(確かEscを2回クリック)機能が使えなくなります >(備考C2).さらに頻繁に動作することになる為、データ量によってはレスポンスが悪くなる可能性有 → フィールドの更新後処理で為した時、RecordsetCloneを使うと、値を変える前の古い値で計算してしまい、うまくいきませんでした。なので、Form_Currentで実行していますが・・・ すると、計算結果が更新出来ない時が出てしまう時があり、そのために、ボタンを作ってしまいました。無理やりRecordsetCloneで値の計算をする時、わざわざRuncommand acCmeSaveRecordを実行してから、RecordsetCloneを作っています。 フィールドの更新後処理では、SQLで更新クエリーを実行すると、フォームのレコードソースの値は既に更新されているのでしょうか? よろしくお願いします。

関連するQ&A

  • 3つのテーブルの画面表示

    Access 2013 vba リレーションが貼ってある親子関係の3つのテーブルがあったとして・・・ A table: ・ID1(主キー) ・依頼会社ID ・依頼内容 ・金額総合計(Bの会社毎の金額の合計) B table: ・ID2(主キー) ・ID1(外部キー) ・会社ID ・金額計(Cの明細の金額の合計) ・完了日 ※AのID1 : BのID1 = 1 : 多 C table: ・ID3(主キー) ・ID2(外部キー) ・項目名 ・単位 ・数量 ・金額 ※BのID2 : CのID2 = 1 : 多 このようなテーブル構成がある場合に まず、AとBの画面を作りそこでBの情報を入力して 次に、Bの帳票のどれかを選ぶと、 BとCのメイン・サブフォームが表示され、そこでCの明細を入力するというやり方も考えていますが、もう一つ、1つの画面で、BとCを両方サブフォームとして配置し、Bの方のレコードを選択すると、Cの方でそれに対応する明細が表示できるようなものを作りたいです。 このような方法が可能か教えていただきたいのと、その場合のやり方を教えて下さい。 宜しくお願いします。

  • ★Access★2つのサブフォームの計算

    受注管理として、注文書の作成入力をしています。 『メインフォーム』で、顧客先などを入力し、『サブフォームA』で受注明細を入力しています。そして受注種類が2つあるので、フィールドの違う受注明細の『サブフォームB』もあるんです。各サブフォームには数量・単価・金額が入っています。 『サブフォームA』『サブフォームB』の両方に注文がある場合は、各サブフォームの合計(=[Form]!サブフォームA!金額合計)を出し、その合計同士を足して総合計金額(A+B)が『メインフォーム』にちゃんと表示されます。しかし、『サブフォームA』にだけ注文がある場合、『A』合計は表示されますが、『B』合計が空欄になってしまって、A+Bの合計が計算されないのです。さらにレポート印刷もできないのです。 どうすればいいのでしょうか?合計プロパティの既定値を0にしてもだめなんです。誰か教えて下さい。

  • Accessでサブフォームの合計をメインフォームに

    Access2007で開発しています。 メインフォームにサブフォームを貼り付けており、 サブフォームに入力した「数量」「単価」から「金額」を計算して表示し、 その合計金額をメインフォームのテキストボックス(非連結)に表示しようと しています。 サブフォームは行単位で追加、削除が可能です。 サブフォームの更新結果が正しくメインフォームに表示されずに困っています。 おわかりの方、おられましたらお教え頂きたく、よろしくお願い致します。 【サブフォーム】   ・レコードソース:T_明細   ・[詳細]項目:数量・・・レコードソース=T_明細・数量        単価・・・    〃    =T_明細・単価        金額・・・数量および単価のAfterUpdateで計算して表示。    [フォームフッター]項目:金額計・・・コントロールソース=Sum([金額])   ・Vbaコード:   Private Sub Form_AfterUpdate()   Forms![メインフォーム].合計計算   End Sub   Private Sub Form_Delete(Cancel As Integer)   Forms![メインフォーム].合計計算   End Sub 【メインフォーム】  ・テキストボックス:「合計金額」(非連結) Public Sub 合計計算()    Me.サブフォーム.Requery   方法1: Me!合計金額 =DSum("金額", "T_明細", (キー項目指定 記述省略))   方法2: Me!合計金額 = Me![サブフォーム].[Form].[金額計] End Sub ここで、 方法1の場合:数量、単価の変更入力及び行追加は正しく動作するが、          行削除の後、メインフォームの「合計金額」が再計算されず、変更前のまま。 方法2の場合:数量、単価の変更入力及び行追加すると、「合計金額」が”0”になる。          行削除しても「合計金額」は変わらず、変更前のまま。 どちらも、サブフォオームの「金額計」は正しく表示されています。 以上、よろしくお願い致します。

  • サブフォームのテキストボックスの表示が遅い

    ACCESS2010です。 サブフォーム(帳票フォーム)のフッターにある、コントロールソースが =nz(sum([金額]),0) と設定してあるテキストボックスがあります。([合計金額s]) サブフォームの詳細には[数量]、[単価]、[金額](タブオーダーもこの順番)があり、この[金額]の合計値が上記[合計金額s]に表示されます。 ただ一つ問題があり、[金額]でエンターを押した後[合計金額s]の内容が更新されるまで約1秒位かかります。 これの何が問題なのかと言うと、[金額]でエンターを押した後[F12]キーを押すことで入力したデータをテーブルに書き込んでいるのですが、メインフォームに[合計金額s]を参照しているコントロールがあり、[合計金額s]が更新される前に[F12]キーを押すと更新前の内容でデータに書き込まれてしまうのです。 今は[金額]でエンターを押し一息ついてから[F12]キーを押しています。 何か良い解決策が有りましたらご教示ください。

  • 受注明細テーブルについて

    Access2013 vba 今工事関係のシステムを作っています。 ・工事受注の情報を入力する画面A ・工事部材の注文明細を入力する画面B(帳票・サブフォーム) ・工事の管理情報を入力する画面C(単票・メインフォーム) ・工事の発注明細を入力する画面C2(帳票・サブフォーム) ・受注明細画面D(帳票フォーム) とあるとして 【A】受注情報管理 ・受注ID(main key) ・受注日 ・依頼内容 ・部材注文合計金額 ・発注合計金額 【B】部材注文明細 ・部材明細ID2 (main key) ・受注ID(foreign key) ・品番 ・商品名 ・単価 ・数 ・摘要 【C】工事管理情報→依頼先会社毎に、受注IDに紐づく ・工事管理ID (main key) ・受注ID (foreign key) ・依頼先会社ID(foreign key) ・工事開始日 ・工事終了日 【C2】工事管理─仮発注明細 ・明細ID4(main) ・工事管理ID ・項目名 ・単価 ・数量 ・摘要 受注明細を、部材注文明細と仮発注明細から作成するやり方を考えました。 BとC2のレコードから、受注IDをキーにして、全てのレコードを以下のDの受注明細テーブルに格納する・・・。この時、B, C2と、Dは非同期→すると、もし、部材明細や仮発注明細が変更されると、Dが連動してその変更内容が反映出来ません。このやり方が良いのかとうか、いまいちわかりません。ご助言をお願いします・・・。 【D】受注明細 ・受注明細ID5(main) ・受注ID ・項目名 ・単価 ・数量 ・摘要 ・請求ID

  • Accessでのサブフォームの操作について

    Accessでのフォームの操作についてお教え下さい。 使用しているバージョンは2010です。 フォームAにボタンを設置し、フォームBを開くようにしました。 フォームAとBはIDで連携し、指定したレコードを開くようにしています。 フォームBには、サブフォームCがあります。 サブフォームCには複数のレコードが入っており、 こちらも指定したレコードを表示させてたいのですが方法が分かりません。 フォームAに設置したボタンを押すと、フォームBの指定したレコードを開き、 フォームB内にある、サブフォームCの指定したレコードを表示させたいです。 VBA等で制御することは可能でしょうか。 可能でしたら方法をお教え下さい。 宜しくお願いいたします。

  • Access サブフォームのリレーションに関して

    標記の件よろしくお願いします。 メイフォームとサブフォームを メインフォーム ID オートナンバー型 主キー設定設定あり。 サブフォーム  ID 数値型(長整数) 主キー設定なし。 の条件でリレーションしてあります。 現状ではメイフォームのIDとサブフォームのIDを を別々に手入力しています。 メインフォームのIDを入力したらサブフォームのIDが自動的に 同じ数値で表示されるような設定をするにはどのようにすれば よいのでしょうか。 また、新規データを入力する際に レコードセレクタにて空の入力欄を表示させて 前回のデータの入力を確定させているのですが これ以外の方法はありますでしょうか? この方法だと他の担当が操作した場合に いつデータ入力が完了したのか 次のデータを入力するにはどうすればよいのか 分かりづらいのではないかと思います。 上記2点どちらかでも構いませんので アドバイスお願いいたします。

  • Access2013 vbaサブフォームのレコード

    [Access2013 vba] ■したいこと サブフォームのレコードの中から、一レコードだけをチェックボックスなどで選択したいのですが、どのようにしたら出来ますでしょうか。 複数行選択は出来ないようにしたいです。 選択したのち、メインフォームの選択ボタンを押すと、そのレコードのID番号を取得して、呼出元のフォームのIDフィールドに代入したいです。 ■画面の流れ・・・ Aフォーム → 帳票型Bフォームで、レコードを選び「開く」ボタンを押す→ B 'メインフォームとCサブフォーム)が開く Cサブフォームのレコードをチェックボックスにチェックを入れて選択する B ' メインフォームの「選択」ボタンを押すと B ' メインフォームと、その前のBフォームが閉じて Aフォームに戻り、AフォームのIDフィールドに選択したIDが格納される。 よろしくお願いします。

  • 【Access】サブフォームのコンボボックス連携

    ACCESSで社員の資格情報を入力するシステムを作成したのですが 以下の問題を解決できず困っています。 どうすればいいか お力を貸して頂けないでしょうか? ■問題:メインフォームで別レコードに移動した際 サブフォーム内の連携コンボボックスを更新されない □コンボボックス2の表示項目 1.分類別No 2.資格名ID 3.資格名 3のみを表示していますが、 1つ目のコンボボックス1の数値で 全コンボボックス2の資格名が出てしまいます。 ■フォーム構成 メインフォーム内に以下を設置 1.移動ボタン 2.帳簿サブフォーム □サブフォーム構成 レコード1 コンボボックス1 コンボボックス2 レコード2 コンボボックス1 コンボボックス2 ~~ 最終レコード コンボボックス1 コンボボックス2 ■コントロールソース コンボボックス1:大分類ID コンボボックス2:資格名ID ■テーブル構成 資格名  資格名ID(主キー)  大分類ID  分類別ナンバー(大分類ごとの登録順ナンバー)  資格名   資格大分類  大分類ID(主キー  大分類名 (IT系・運転系など) ■コンボボックス2の値集合ソース(表示項目:資格名) SELECT 資格名.資格名, 資格名.分類別No, 資格名.資格名ID FROM 資格大分類 INNER JOIN 資格名 ON 資格大分類.資格大分類ID = 資格名.資格大分類ID WHERE (((資格名.資格大分類ID)=[Forms]![メインフォーム]![サブフォーム]![コンボボックス1])) ORDER BY 資格名.分類別No; ------------------------------------ サブフォームに記載し効果のなかったVBAコード ’再クエリ Private Sub Form_Current() Dim cntrl As Control If Not IsNull(Me![コンボボックス1]) Then For Each cntrl In Form.Controls If cntrl.ControlType = acComboBox Then cntrl.Requery End If Next cntrl End If End Sub ’ソース更新 Private Sub Form_Current() With Forms!メインフォーム名!サブフォーム名!コンボボックス2 .RowSource = .RowSource End With End Sub ■参考サイト 'サブフォーム内での2つのコンボボックスの連動について 'http://goo.gl/nfvxW '~ '>   コンボボックスAの更新後処理イベントに '> Me!コンボボックスB.Requery '> 'Me.コンボボックスB.RowSource = Me.コンボボックスB.RowSource '数値でコンボボックス選択 'http://goo.gl/ovZ3C 'リストボックスの行を選択するときは、「Selected(n)」を使います 'http://goo.gl/RbsWX 'サブフォームの指定 ' =Forms!フォーム名!サブフォームコントロール名.Form.テキストボックス名 'http://goo.gl/vKxtj

  • 票フォーム-データ更新について

    Access2003を利用しています。 伝票入力用のワークテーブルを帳票フォームで入力しようとしています。 (ワークテーブル内容) ID 商品コード 商品名 数量 単価区分 単価 金額 単価A 単価B 単価C  ・  ・ (10種類の単価設定あり) 単価J 帳票フォームのレコードソースにワークテーブルをセットして (表示) 商品コード、商品名、数量、単価 金額 (非表示)A単価、B単位、C単価、~J単価 としています。 商品コードが入力されると、商品マスターから情報を取得して 単価A~Jに値をコピーしています。 txt単価A = recW("単価A")  txt単価B = recW("単価B")  txt単価C = recW("単価C")    ・   ・ txt単価J = recW("単価J")  ここで質問ですが、 現状だとレコードに値を入れたい場合、 非表示のテキストボックスを利用していますが フォームのレコードセットにそのまま代入する方法はないでしょうか? 初心者の質問でお恥ずかしいですが、何卒、ご教授ください