• ベストアンサー

ACCESS2000のサブフォームのデータをイベントプロージャで格納する方法

前にも同様のご質問をさせていただきましたが、解決しませんでしたので、もう一度質問させていただきます。 データ入力をACCESSで入力をしたいと考えております。 今回の場合にはサブフォームを使用するのですが、メインのフォーム側のボタンをクリックしただけで、メインのフォームに書かれたデータはメインのテーブルへ、サブフォームに書かれたデータはサブのテーブルへそれぞれデータを格納するには、[イベント プロシージャ]ではどのように記述すればよろしいのでしょうか。 よろしくお願いいたします。

  • Fujjy
  • お礼率77% (203/262)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Access2000であればADO(データベースとアクセスする手段のひとつ)が使用できます。 メインのテーブル テーブル名:メインのテーブル フィールド1 フィールド2 サブのテーブル テーブル名:メインのテーブル フィールド1 フィールド2 メインのフォームには下記のテキストボックスとボタン テキスト1、テキスト2、「データの格納」ボタン サブフォームには下記のテキストボックス テキスト3、テキスト4 で、「データの格納」ボタンをクリックしたらデータが格納できるサンプルを作ってみました。 Private Sub データの格納_Click() On Error GoTo Err_データの格納_Click メインデータの格納 サブデータの格納 MsgBox ("保存完了") Exit_データの格納_Click: Exit Sub Err_データの格納_Click: MsgBox Err.Description Resume Exit_データの格納_Click End Sub Public Sub メインデータの格納() Dim rst As New ADODB.Recordset Dim rstName As String Set rst = New ADODB.Recordset rstName = "メインのテーブル" rst.Open rstName, CurrentProject.Connection, adOpenKeyset, adLockOptimistic rst.AddNew rst![フィールド1] = Forms![メインのフォーム].テキスト1 rst![フィールド2] = Forms![メインのフォーム].テキスト2 rst.Update rst.Close Set rst = Nothing End Sub Public Sub サブデータの格納() Dim rst As New ADODB.Recordset Dim rstName As String Set rst = New ADODB.Recordset rstName = "サブのテーブル" rst.Open rstName, CurrentProject.Connection, adOpenKeyset, adLockOptimistic rst.AddNew rst![フィールド1] = Forms![メインのフォーム]![サブフォーム]![テキスト3] rst![フィールド2] = Forms![メインのフォーム]![サブフォーム]![テキスト4] rst.Update rst.Close Set rst = Nothing End Sub ご参考になれば幸いです。m(__)m

Fujjy
質問者

お礼

ありがとうございました。試してみます。

その他の回答 (1)

回答No.1

前回の質問番号がわかれば、その回答に補足しやすいのですが・・・ あと、作成してるフォームとサブフォームは、それぞれレコードソースをそれぞれのテーブルにしているかどうか、それぞれのフォームのテキストボックスは、連結か非連結かによっても変わります。 作成してるフォームとサブフォームは、それぞれレコードソースをそれぞれのテーブルにしており、それぞれのフォームのテキストボックスは、それぞれのテーブルの各フィールドに連結しているのならば、 フォームとサブフォームを再表示(Requery)すると、確実に入力したデータは格納されます。 ボタンがフォームにあるので、フォームを再表示は、 Me.Requery です。 サブフォームの再表示は、 Forms![フォーム名]![サブフォーム名].Requery となります。 以上ご参考になれば幸いです。m(__)m

Fujjy
質問者

補足

ありがとうございます。 質問番号は「No.243452」です。 フォームもサブフォームも非連結です。 データを入力したその瞬間から、テーブルへ格納するのではなく、ボタンをクリックするまでテーブルへの格納は行いたくないのです。 また、サブフォームはデータシートです。 説明不足で申し訳ありませんでした。

関連するQ&A

  • ACCESSのサブフォームをVBAで・・・

    よろしくお願い致します。 ACCESSのサブフォームをVBAでテーブルに入力するにはどのようにしたら良いのでしょうか? イメージ的にはボタンをクリックするとメインのフォームとサブフォームの両方のデータが、別々のテーブルに入力されるようにしたいのですが・・・ ご回答ください。お願い致します。

  • ACCESS2003 サブフォームのデータ

    こんにちは。宜しくお願い致します。 ACCESS2003でDBを作成しています。 メインフォームの中にサブフォームを作っています。 それぞれのID(オートナンバー)をリレーションシップとして設定し、連動しています。 メインフォームにデータを追加する際、サブフォームにデータを入力せずに、 次のメインフォームにデータを入れた場合、 サブフォームのオートナンバーが働かず、のちのちデータを入れた際にIDが違うため情報がずれてしまいます。 例えば、 メインフォームのID1~9のサブフォームには何も書き込まずメインフォームにだけデータを入力します。 その後、メインフォームのID10にあるサブフォームにデータを書き込むと、立ち上げなおしたときに、そのサブフォームへの入力したデータがID1のデータとして出てきてしまいます。 恐らく簡単なことだとは思うのですが、なにぶん初心者なものでさっぱり分かりません。 お分かりになる方、是非ともご教授お願いいたします。

  • ACCESSのサブフォームについて

    ACCESSにおいて、サブフォームにデータを表示させた状態で、あるレコードをダブルクリックで選択させ、 そのデータ(対象レコード)をメインフォームに戻って使用させるにはどのようにしたらよろしいのでしょうか? サブフォームの該当箇所に、ダブルクリック時イベントを貼り付けて、 制御をメインフォームへ移すのでしょうか。 よろしくお願いします。

  • ACCESS2007でのサブフォームとグラフについて

    access 2007での質問です。 フォーム上に既存のテーブルを基にサブフォームとピボットグラフを表示させています。 サブフォームとグラフが同じレコードソースを使用しています。 サブフォームでデータを変更した場合に、グラフも変更内容を同時に反映させる方法はどうしたら良いのでしょうか。 フォームをフォームビューからデザインビューに切り替え、また、通常のフォームビューに戻すとデータ変更内容が反映されています。 これ以外何かイベントプロシージャなどで指定はできないものでしょうか。教えてください。

  • ACCESSで条件によってサブフォームを非表示に

    Accessの初心者です。よろしくお願いします。 Accessで住所録を作っています。 メインフォームは主に本人のデータを表示し、サブフォームで家族の データを表示するようにしました。 その時、家族がいない人についてはサブフォーム自体を表示しないようにしたいと思います。 そこで下記のようにしましたがうまくいきませんでした。 (1)サブフォーム内で家族の人数をカウントする。 (2)このカウント結果をメインフォームに表示する。(メインフォーム にテキストボックスを配置し、コントロールソースをサブフォームの 人数カウントにする。)     ここまではうまくいきました。 (3)ここでメインフォームのイベントの「開くとき」に以下のように記 述しました。(メインフォームのテキストボックスにカウントという  名前をつけました。) Private Sub Form_Open(Cancel As Integer) If Me!カウント = 0 Then サブフォーム.Visible = False Else サブフォーム.Visible = True End If End Sub この記述の仕方がまずいと思うのですが、どのようにすればよいか 分りません。よろしくお願いします。

  • Accessメインサブフォームにて・・・

    Accessのサブフォームで、入力するためのフォームと、 実際にメインフォームの中で表示させる時のサブフォームの表示を 変えたいのですが・・・。 (1)ボタンをクリックして、入力するためのサブフォームを表示させる。  これは帳票形式で、テキストボックスの罫線が表示されているよう  にします。 (2)入力し終わったら、メインフォームに戻る。  こちらで表示されるサブフォームは、テキストボックスの罫線が表示  されていないようにする。 上記のようなことはできるでしょうか?よろしくお願いします。  

  • アクセスのサブフォーム

    よろしく、お願いします。 アクセスのサブフォームをVBAでテーブルに登録する方法を教えてください。 フォームからメインテーブルとサブテーブルへ、ボタン一つで同時に登録したいのです。 よろしく、お願いします。

  • ACCESS2000で、サブフォームのデータを並べ替えする方法は?

    アクセス初心者+αの者です。 メインフォームを開いた時に、サブフォームにはメインとのリンク項目に該当するデータをクエリから抽出し、表示するようになっています(データによっては複数件あり)。 データ抽出は出来てますが、データの表示順がうまく出来ません。サブフォームのレコードソースSQL文にOrderBy句で指定してもダメでした。 メインフォームの並べ替えプロパティが怪しいと思ってるのですが、どのように記述すれば良いのでしょうか?(VBAでもOKです) 並び替えしたい項目は、サブフォーム内に持ってます。 情報の不足もあるかもしれませんが、よろしくお願いします。m(__)m

  • サブフォームが見えなくなる。

    サブフォームが見えなくなる。 Access初心者です。 メインフォームにサブフォームを入れ込んだのですが、メインフォームを新しいレコードに移動すると、サブフォーム自体が出てこなくなります。 データがあるレコードではきちんとサブフォームが出ていることが確認出来ています。 どうしていいのか判らないので教えて下さい。 マクロで入力ボタンを押すとメインのフォームを開き、新しいレコードに移動することをやっていますが、関係あるでしょうか? やりたいことはメインを新しいレコードに移動した時に、サブフォームが表示されて入力できるようにしたいということです。

  • Accessのメインフォームとサブフォームの使い方について

    Accessにてメインフォーム(単票形式)+サブフォーム(帳票形式)を使って進捗管理をするデータベースを作っており、新規にメインフォームで入力し、サブフォームで入力したデータを表示させてます。 サブフォームで更新したいレコードをクリックしたときにメインフォームでそのレコードを表示させるにはどのようにすればよろしいのでしょうか?

専門家に質問してみよう