Access (VBA)

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

 
(Windows 10 Pro : Access 2016)
OpenRecordset
投稿日時: 19/12/17 01:20:21
投稿者: 忘れんぼ

こんばんわ
 
OpenRecordsetで表示中の帳票を更新したいのですが、
どうコードすれば可能ですか?
------------------------
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim td As DAO.Recordset
    Dim i As String
 
        i = Me.cmd_nenga.Column(0)
 
            If Me!cmd_セールス = "(売上年月)" Then MsgBox "売上年月が選択されていません"
            Exit Sub
 
        Me.Form.RecordSource = ""
            Set db = CurrentDb
            Set rs = db.OpenRecordset("t_address", dbOpenDynaset)
                With rs
                    Do Until .EOF
                        .Edit
                        .Fields("売上データ") = Null
                        .Update
                        .MoveNext
                    Loop
                    .Close
                End With
            Set rs = Nothing
        Me.Form.RecordSource = "t_address"
        Me.Form.Refresh
-----------------------------

回答
投稿日時: 19/12/17 09:35:23
投稿者: sk

引用:
OpenRecordsetで表示中の帳票を更新したい

「表示中の帳票」とは、具体的に何を指しているのでしょうか。
 
引用:
Me.Form.RecordSource = ""

引用:
Me.Form.RecordSource = "t_address"

掲載されているのはフォームモジュールに記述されている
コードのようですが、そのフォームと「表示中の帳票」は
別のオブジェクトなのでしょうか。

回答
投稿日時: 19/12/17 11:09:20
投稿者: NoLookUp

忘れんぼ さんの引用:

        i = Me.cmd_nenga.Column(0)
  
            If Me!cmd_セールス = "(売上年月)" Then MsgBox "売上年月が選択されていません"
            Exit Sub '← ココでどんな条件でもプロシージャから強制離脱している……
  
        Me.Form.RecordSource = ""

……
ので、それ以降のコードは実行されていません。
 
以上を加味考慮して再構再考されてみてはいかがでしょうか。

回答
投稿日時: 19/12/17 13:11:16
投稿者: hatena
投稿者のウェブサイトに移動

NoLookUpさんが指摘している部分を下記のように書き換えれば
とりあえずは実行されると思います。
 

        If Me!cmd_セールス = "(売上年月)" Then
            MsgBox "売上年月が選択されていません"
            Exit Sub '← ココでどんな条件でもプロシージャから強制離脱している……
        End If

 
引用:
OpenRecordsetで表示中の帳票を更新したいのですが、

 
帳票フォームのレコードを更新したいのなら、わざわざOpenRecordsetで別のレコードセットを開かなくても、すでにある帳票フォームのレコードセットを更新すればいいでしょう。
 
    With Me.Recordset.Clone
        .MoveFirst
        Do Until .EOF
            .Edit
            .Fields("売上データ") = Null
            .Update
            .MoveNext
        Loop
    End With
    Me.Recalc

投稿日時: 19/12/19 04:21:26
投稿者: 忘れんぼ

sk様、NoLookUp様、hatena様、ありがとうございました。
かなり支離滅裂しておりました。
ご指摘の通り修正しましたら、無事 動作しました。
-----------------------------
     Dim i As String
 
          i = Me.cmd_セールス.Column(0)
               If Me!cmd_セールス = "(売上年月)" Then
                    MsgBox "売上年月が選択されていません"
                    Exit Sub
               End If
          With Me.Recordset.Clone
               .MoveFirst
               Do Until .EOF
                   .Edit
                   .Fields("売上データ") = Null
                   .Update
                   .MoveNext
               Loop
          End With
          Me.Recalc
-----------------------------
と、しました。ありがとうございました。