非連結フォーム(frm_B)のOPEN時にADOレコードセットでデータを表示させ、更新ボタンを押すと、追加クエリでそのフォーム上で表示されたデータをテーブル(tbl_B)に新規登録させ、さらにその非連結フォームには別のフォームの内容を表示させるVBAを書きましたが、最後に別のフォームの内容で非連結フォームにデータをセットしたとき?にテーブルのデータも更新されてしまいます。最初にテーブルに追加したデータとは切り離したいのですがどうすればうまくいくのでしょうか。
・フォームfrm_BをOPEN
'DAOレコードセット
Dim dbDAO As DAO.Database
Dim rsDAO As DAO.Recordset
Dim stSQL As String
stSQL = "SELECT No.,規格No.,改訂No. FROM tbl_B " _
& "WHERE 規格No. ='" & Forms![frm_A].[規格No.] & "'" _
& "AND 改訂No. =" & Forms![frm_A].[改訂No.] & ""
'DAOレコードセット
Set dbDAO = CurrentDb
Set rsDAO = dbDAO.OpenRecordset(stSQL)
Set Me.Recordset = rsDAO
Me![No.].ControlSource = "No."
Me![規格No.].ControlSource = "規格No."
Me![改訂No.].ControlSource = "改訂No."
'DAOレコードセットクローズ
Set rsDAO = Nothing
Set dbDAO = Nothing
・更新ボタンクリック
Private Sub cb_kaitei_Click()
Dim stDocName As String
'追加クエリ
stDocName = "q_B"
DoCmd.OpenQuery stDocName, acNormal, acEdit
Forms![frm_B].SetFocus
Me![No.] = Forms![frm_A].[No.]
Me![規格No.] = Forms![frm_A].[規格No.]
Me![改訂No.] = Forms![frm_A].[改訂No.]
・
このときにレコードセットで追加したレコードのほうも更新されてしまいます。これを別のレコードと判断させたいのです。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
No.1です。
補足欄について。
そもそも、なぜフォームを非連結にしているのでしょうか?
いちいちフォームAの条件で絞った結果をフォームBのレコードソースにせずに、フィルタをかければいいのでは?
そして、連結しておいて、追加処理を、
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
で行えばいいのでは?
その後で、新規レコードに移動して、フォームBの各コントロールに、フォームAの値をセットすればいいと思います。
セットしただけでは、まだ更新されていないので、ここで上記のコードを再び実行すれば、新規データとして登録されます。
できました!そうか新規レコードに移動する処理をすればよかったんですね。
あとフィルターもレコードセットでSQL記述するよりずっと楽でした。今まで使った事がなかったので気づきませんでした。どうもありがとうございました。
No.1
- 回答日時:
こんにちは。
maruru01です。つまり、1つのフォームで複数のテーブルのデータ処理をしたいということでしょうか?
それなら、各コントロールのControlSourceに設定せずに、非連結のままにしておき、クエリでテーブルに書き込んではどうでしょうか?
それか、フォームを2つ用意して、それぞれのテーブルと連結しておくとか。
そして、更新ボタンクリックで、別のフォームを表示して、元のフォームを閉じればいいでしょう。
この回答への補足
ありがとうございます。1つのフォーム(frm_B)で1つのテーブル(tbl_B)ということなんです。最初にレコードセットでレコードをフォームに表示させ、それでテーブルを1件追加処理(tbl_B)して、次に別のフォーム(frm_A)に表示されているデータをフォームに表示させて(frm_B)、テーブル(tbl_B)に別レコードとして登録しているんですが、最初に追加したレコードも一緒に更新されてしまうんです。私のレコードセットの解釈が間違っているんだとおもうんですが、煮詰まってしまいました。
補足日時:2004/06/30 09:40お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Oracle SQL update方法 2 2022/06/22 14:07
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
このオブジェクトに値を代入することはできません
その他(データベース)
-
帳票フォームに全レコードを表示できない
その他(データベース)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
ADOでRecordsetオブジェクトをレコードソースに設定したい
その他(データベース)
-
6
どこにもフォーカスを当てたくない
Access(アクセス)
-
7
ACCESSで値を代入できないとは?
Visual Basic(VBA)
-
8
Accessでコードを入れると名前がでるようにしたい
Access(アクセス)
-
9
2つ目のレコードの値を取得するには?
Access(アクセス)
-
10
Access非連結フォームから複数レコード挿入
Access(アクセス)
-
11
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
12
Access:サブフォームのレコードのコピー(複数)
Access(アクセス)
-
13
ACCESSでコンボボックスにSQLで抽出した値を表示したい
その他(データベース)
-
14
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
15
Access2010 Enterで次テキストへ移動
その他(Microsoft Office)
-
16
サブフォームを非表示させる方法を教えて下さい
その他(Microsoft Office)
-
17
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
18
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
19
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
20
Accessでフォームから別フォームのテキストボックスの値を設定する
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのフォームからデータの...
-
選択したチェックボックスのみ...
-
アクセスでテーブルの変更内容...
-
accessの自動更新処理をできな...
-
Accessのフォーム上にレコード...
-
Access 別フォームへの再クエ...
-
アクセス非連結フォームのテキ...
-
ADOでRecordsetオブジェクトを...
-
帳票フォームに全レコードを表...
-
Accessフォームのテキストボッ...
-
アクセスのフォームのビューが...
-
Accessのハイパーリンクのパス...
-
Access上でホイールマウスの機...
-
Accessのフォームに表示...
-
アクセス2003サブフォームで選...
-
「メソッドまたはデータメンバ...
-
MS-Access レコードセレクタの...
-
Accessのフォームで作業領域を...
-
アクセスでの項目追加について...
-
Access2002 フォームを閉じるた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのフォームからデータの...
-
選択したチェックボックスのみ...
-
アクセスのフォームのビューが...
-
ACCESSで入力フォームをHTMLフ...
-
Accessのフォーム上にレコード...
-
Access 別フォームへの再クエ...
-
Accessフォームのテキストボッ...
-
accessの自動更新処理をできな...
-
「メソッドまたはデータメンバ...
-
アクセスでテーブルの変更内容...
-
アクセスでの項目追加について...
-
Accessのフォームで作業領域を...
-
Access フォーム上でコンボボッ...
-
アクセス 0以外をカウントす...
-
ACCESSの表形式で、レコードを...
-
Accessのハイパーリンクのパス...
-
ADOでRecordsetオブジェクトを...
-
Access2002 フォームを閉じるた...
-
ACCESSで、フォームのレコード...
-
Access runtimeでテーブル、ク...
おすすめ情報