Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Access 2016)
レコードの修正
投稿日時: 19/03/15 00:04:35
投稿者: Manabukunn

いつもお世話になっております。
 
レコードの修正をするVBAを作成したいと思っております。
 
Private Sub save_button_Click()
 
Dim dbs As Database
Dim rst As Recordset
 Set dbs = CurrentDb
 Set rst = dbs.OpenRecordset("受診日")
 
With rst
 .Edit
! 受診日= Forms!受診日修正!date
 .Update
  .Close
End With
 
Forms!受診日.Requery
DoCmd.Close acForm, "受診日修正", acSaveNo
 
End Sub
 
という感じで受診日修正フォームを開いて
そのフォームに入力された情報で受診日テーブルに
リンクした受診日フォームを修正するという感じです。
(実際には複数個所を修正)
 
ありがちな質問だと思われますが受診日フォーム(帳票フォーム)で
選択しているレコードを修正したい状況ですが
先頭のレコードが変更されてしまいます。
解決方法はどのようにすればよろしいでしょうか。
よろしくお願いいたします。

投稿日時: 19/03/15 00:53:00
投稿者: Manabukunn

追記です。
フォーム:受診日上にフォーム:受診日修正を開くボタンがあり
受診日修正フォーム上にこのコードが動くボタンが
設置してあります。
よろしくお願いいたします。

回答
投稿日時: 19/03/15 10:19:00
投稿者: sk

引用:
受診日修正フォームを開いて
そのフォームに入力された情報で受診日テーブルに
リンクした受診日フォームを修正する

引用:
ありがちな質問だと思われますが受診日フォーム(帳票フォーム)で
選択しているレコードを修正したい状況

・[受診日修正フォーム]は連結フォームなのか。
 それとも非連結フォームなのか。
 
・[受診日修正フォーム]が連結フォームである場合、
 そのレコードソースはどのテーブル/クエリなのか。
 
・[受診日修正フォーム]のレコードソースが
 ([受診日フォーム]と同じく)テーブル[受診日]であるならば、
 [受診日修正フォーム]上においてフィールド[受診日]と
 連結しているテキストボックスの値を編集するだけで
 事足りるのではないか。
 (あとはカレントレコードの保存後に、
 [受診日フォーム]の再クエリを実行すればよい)
 
引用:
フォーム:受診日上にフォーム:受診日修正を開くボタンがあり
受診日修正フォーム上にこのコードが動くボタンが
設置してあります。

・そのコマンドボタンの[クリック時]イベントが発生した際に
 DoCmd.OpenForm メソッドを実行するようにしているとして、
 第 4 引数 WhereCondition には何も指定していないのか。
 
引用:
Set rst = dbs.OpenRecordset("受診日")

・テーブル[受診日]の主キーはどのフィールドなのか。

投稿日時: 19/03/16 14:30:16
投稿者: Manabukunn

skさん有難うございます。
 
 
確かに連結にして
 
dateID = Me!受診日ID.Value
 
 DoCmd.OpenForm "受診日修正", acNormal, , wherecondition:="受診日ID =" & dateID
 
にすれば簡単だということがわかりました。
 
今後ともよろしくお願いいたします。