[[20080522103302]] 『Accessファイルのフィールドデータmax値を取得しax(dbm_nasu) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Accessファイルのフィールドデータmax値を取得したい。』(dbm_nasu)

 Accessのファイルの一番目のフィールドに、長整数値でインクリメントされるデータが入ってます。
 各レコードの最大値を取得したいのですが、教えて下さい。
 現在Accessファイルのこのフィールドには、3,4,5,6,7,8と6個のレコードしかありません。
 最大値を取得する為に、1から順にインクリメントしてサーチしているのですが、
 1〜3が欠番の為に
            If Not .EOF Then .Seek myKey_i Else Exit Do
 の文で抜けてしまうみたいです。どうすれば良いでしょうか?

 'レコードのID_NO最大値を検索する。
 Sub mdb_id_max()
    Dim myCon      As New ADODB.Connection
    Dim myRst      As New ADODB.Recordset
    Dim myFileName As String
    Dim myTblName  As String
    Dim myKey_i    As Integer

    myFileName = "job.mdb"
    myTblName = "main"
    myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & ThisWorkbook.Path & "\" & myFileName & ";"
    With myRst
        'インデックスの設定
        .Index = "PrimaryKey"
        'レコードセットを開く
        myRst.Open Source:=myTblName, ActiveConnection:=myCon, _
            CursorType:=adOpenKeyset, LockType:=adLockOptimistic, _
            Options:=adCmdTableDirect
            myKey_i = 1
        Do
            '番号が登録されているか検索する
            If Not .EOF Then .Seek myKey_i Else Exit Do
                If .EOF Then '該当データ無し
                Else '該当データ有り
                    id_max_d = myKey_i '現在max IDのデータ
                End If
                myKey_i = myKey_i + 1
        Loop
                MsgBox "最大値は" & id_max_d & "です。"
        .Close
    End With
    myCon.Close
    Set myRst = Nothing 'オブジェクトの解放
    Set myCon = Nothing
 End Sub


 こんなのでいい様な気がするのですが。。。
 ・
 ・
 If Not .EOF Then
    .MoveLast
    MsgBox "最大値は" & .Fields(0) & "です。"
 End If
 .Close
 ・
 ・
 (半平太)

有り難う御座いました。半平太さん完全に動作しました。。(dbm_nasu)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.