Microsoft Access 掲示板

ADOで該当フィールドの全レコードを削除する方法 / 5

11 コメント
views
4 フォロー
5

もし、やりたいことが

指定したjanに該当するデータの新しい順にならべて2番目のデータを取得して、それをエクセルシートに貼り付けたい。

ということなら、下記のコードでいいでしょう。

Public Sub Sample()
    Dim daoCn As dao.Database 'Databaseオブジェクトを扱う変数(DB)を宣言
    Dim daoRs As dao.Recordset 'Recordsetオブジェクトを扱う変数(RS)を宣言
    Dim strSQL As String
    Dim i2 As Long

    strFileName = "出勤 - コピー.accdb"
    Set daoCn = DBEngine.Workspaces(0).OpenDatabase("C:\Users\tasuk\Desktop\VBA\経理\出勤\" & strFileName)

    jan = "1000000000016"
    i2 = 2

    Cd = "個人データ.氏名,出勤データ.月日,出勤データ.番号"
    Tn = "個人データ INNER JOIN 出勤データ ON 個人データ.jan=出勤データ.jan"
    Sc = " 出勤データ.jan = '" & jan & "'" '検索条件の確定

    strSQL = "SELECT TOP " & i2 & Cd & " FROM " & Tn & " WHERE " & Sc & " ORDER BY 出勤データ.月日 DESC" '降順でi2番目までのデータを取得
    strSQL = "SELECT TOP 1 * FROM (" & strSQL & ") ORDER BY 出勤データ.月日" '上記のデータから昇順で1番目のデータを取得(結局降順でi2番目のデータ)
    Set daoRs = daoCn.OpenRecordset(strSQL, dbOpenDynaset) 'DAOレコードセットオブジェクトを作成
    
    Worksheets(4).Range("A1").CopyFromRecordset daoRs
    daoRs.Close

End Sub
通報 ...