Laatste record in tabel

Status
Niet open voor verdere reacties.

Gum2

Gebruiker
Lid geworden
30 mrt 2007
Berichten
80
Van een tabel wil ik mbv VBA het laatste record bepalen.
Hiervoor gebruik ik de volgende code :


Set DB = CurrentDb


Set RSValues = DB.OpenRecordset("Ongesorteerd")

s = RSValues.RecordCount

If s > 0 Then
RSValues.MoveLast
D = Format(RSValues!Datum, "yyyy-mm-dd h:mm:ss")
E = RSValues!Error
O = RSValues!Omschrijving
End If

RSValues.Close

DB.Close


Indien ik deze code uitvoer op een tabel waaruit ik records verwijderd heb en vervolgens sorteer op datum dan wordt voor de variabelen D,E en O niet het laatste record gevonden.(zie bijgevoegd voorbeeld)
Voor beide tabellen wordt als laatste record voor variabele D de datum ' 28-6-2007 12:51:10 ' gevonden

Wat gaat hier fout ?

groeten Gum2
 

Bijlagen

  • Transport2.rar
    33,2 KB · Weergaven: 27
Met MoveLast ga je naar het laatste record in een recordset.
Dat is niet per definitie het record met de meest recente datum, het meest recente volgnummer of wat dan ook.
Maak een query en gebruik daarin de funktie Max.
Of loop door je recordset, schrijf de datum waar de recordset op staat weg naar een variabele en vergelijk de waarde van de variabele met een volgende datum uit je recordset.

Groet,

Tardis
 
Tardis,

Bedankt voor het meedenken.
Is dit wat je bedoelt ?

Set DB = CurrentDb


Set RSValues = DB.OpenRecordset("Gesorteerd")

teller = 1
s=RSValues.RecordCount
RSValues.MoveFirst
D = Format(RSValues!Datum, "yyyy-mm-dd h:mm:ss")
LD = Format(RSValues!Datum, "yyyy-mm-dd h:mm:ss")

Do Until teller = s

DD = DateDiff("s", LD, D)

If DD > 0 Then

LD = D

End If


RSValues.MoveNext
D = Format(RSValues!Datum, "yyyy-mm-dd h:mm:ss")
teller = teller + 1
Loop

RSValues.Close

DB.Close


Variabele D geeft hierin de laatste datum aan in tabel gesorteerd.

groeten Gum2
 
Laatst bewerkt:
Hoe het zou kunnen:

Code:
Sub test()

Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim strMaxDate As Date

Set db = CurrentDb
Set rs = db.OpenRecordset("Ongesorteerd")
              
If rs.RecordCount = 0 Then
    Else
    rs.MoveLast
    rs.MoveFirst
    strMaxDate = rs!Datum
    Do Until rs.EOF
        If rs!Datum > strMaxDate Then
        strMaxDate = rs!Datum
        Else
        End If
        rs.MoveNext
    Loop
End If
                   
MsgBox "Max Date is " & strMaxDate
                   
rs.Close
Set rs = Nothing

db.Close
                
End Sub

Zelf aanpassen naar jouw wensen.
Hou het makkelijk en gebruik een query:

Code:
SELECT Max(Datum)
FROM jouwtabel

of

Code:
SELECT Datum, Error, Opmerking
FROM jouwtabel
WHERE Datum =
(
SELECT Max(Datum)
FROM jouwtabel
)

PS Error is een gereserveerd woord in Access, pas even je kolomnaam aan ;)

Groet,

Tardis
 
Ok, wederom bedankt.
Zal de code morgen even uitproberen.

groeten Gum2
 
Of nog eenvoudiger: gebruik de dMax() of dMin() functies.
Even in de access help kijken wat je precies als parameters moet invullen.
 
Beste Bartuls en Tardis,

Ik heb alle code getest en ze werken perfect.
Bedankt voor de hulp !

groeten Gum2
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan