Microsoft Access 掲示板

レコードの抽出について / 24

26 コメント
views
4 フォロー
24

おはようございます。今回は届いていました。
動化確認してみましたら、確かにそのエラーがでますね。クエリも普通に開けるので特に問題はないですね。

ためしに、ADODBの処理をDAOに書き直してみましたら、エラーなく実行できるようになりました。

Private Sub コマンド25_Click()
 Dim a As String
    a = MsgBox("請求書履歴に登録しますか。はいを押すと請求書履歴に保存されます。", vbOKCancel)
    
    If a = vbCancel Then
    MsgBox ("中止しました")
    Exit Sub
    End If
    
   Dim DB As DAO.Database
    Dim rs As DAO.Recordset
    Dim rs1 As DAO.Recordset
    
    'Connectionは一つで共有する
    Set DB = Application.CurrentDb
    Set rs = DB.OpenRecordset("Q_月間請求書履歴", dbOpenForwardOnly, dbReadOnly)
    Set rs1 = DB.OpenRecordset("T_seikyu", dbOpenDynaset, dbAppendOnly)
       
    Do Until rs.EOF
        '"月間請求書履歴"(rs)のデータを"データ"(rs1)に新規追加
        rs1.AddNew
        rs1!請求書NO = rs!請求書NO
        rs1!請求日 = rs!請求日
        rs1!会社名 = rs!会社名
        rs1!氏名 = rs!氏名
        rs1!現場名 = rs!現場名
        rs1!工事名 = rs!工事名
        rs1!請求金額 = rs!請求金額
        rs1.Update
        '"月間請求書履歴"(rs)を次レコードへ移動
        rs.MoveNext
    Loop
    
    rs.Close
    Set rs = Nothing
    rs1.Close
    Set rs1 = Nothing
    
    DB.Close
    Set DB = Nothing
    
    DoCmd.OpenForm "F_seikyu"

End Sub

なぜ、ADODBでは失敗するのかは原因が分かりませんが、DAOの方がAccessのテーブルとは相性がいいと思います。

通報 ...