プロが教える店舗&オフィスのセキュリティ対策術

前にも同様のご質問をさせていただきましたが、解決しませんでしたので、もう一度質問させていただきます。

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/09/12 11:38

前回の質問番号がわかれば、その回答に補足しやすいのですが・・・



あと、作成してるフォームとサブフォームは、それぞれレコードソースをそれぞれのテーブルにしているかどうか、それぞれのフォームのテキストボックスは、連結か非連結かによっても変わります。

作成してるフォームとサブフォームは、それぞれレコードソースをそれぞれのテーブルにしており、それぞれのフォームのテキストボックスは、それぞれのテーブルの各フィールドに連結しているのならば、
フォームとサブフォームを再表示(Requery)すると、確実に入力したデータは格納されます。

ボタンがフォームにあるので、フォームを再表示は、
Me.Requery
です。
サブフォームの再表示は、
Forms![フォーム名]![サブフォーム名].Requery
となります。

以上ご参考になれば幸いです。m(__)m

この回答への補足

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

補足日時:2002/09/10 13:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!