Laatste record is NIET het record met hoogste recordnummer

Status
Niet open voor verdere reacties.

rudallen

Gebruiker
Lid geworden
19 nov 2008
Berichten
11
Access 2010 : Laatste record is NIET het record met hoogste recordnummer in query (als laatste toegevoegd)??

Een tabel met KrsNr (record nummer), KrsNaam (naam), KKoers (koers), KrsDat (koers datum)
KrsNr is gegevenstype: Autonummering, Lange integer, Reeks

Met deze tabel maak ik een query:
KrsNrL: KrsNr KrsNaam KrsDatL: KrsDat KKoersL: KKoers
Laatste Group By Laatste Laatste

KrsNrL zou moeten zijn: het laatste record (als laatste toegevoegd).
Ik veronderstel dat dit ook het grootste getal is van KrsNr (record nummer).

In mijn query is dit niet zo.
Kan het volgende de oorzaak zijn: soms heb ik foute records gewist, worden deze records herbruikt voor de laatste toegevoegde records (maar met een nieuw recordnummer) ??
 
Het laatste record dat is toegevoegd krijgt het laatst gebruikte Autonummer +1. Met Laatste zou je dat moeten zien, al is Max beter, want dat pakt per definitie het hoogste nummer. Omdat je op een ander veld een Group by doet, krijg je echter het hoogste nummer te zien per groep. En dat kan een ander nummer zijn dan wat je verwacht.
Autonummers worden niet herbruikt, dus het hoogste nummer hoeft niet overeen te komen met het aantal records. Tenzij je nooit iets hebt weggegooid.
 
@ Octafish,
Met deze tabel maak ik een query:
KrsNrL: KrsNr ------ KrsNaam ------ KrsDatL: KrsDat ------ KKoersL: KKoers ------ KrsNrMax: KrsNr
Laatste ------------- Group By ------ Laatste ---------------- Laatste -----------------Max

LaatsteVanKrsNr is NIET gelijk aan MaxVanKrsNr

ik begrijp wat je bedoeld, als ik Max gebruik voor recordnummer heb ik dan wel het juiste recordnummer (laatst toegevoegd EN Max(Recordnummer)),
maar de functie Laatste([KKoers]) geeft niet de laatste koers, maar de koers uit de record die als Laatste wordt berekend, maar komt niet overeen met de laatste toegevoegde record.
Voor KoersNr (recordnummer) kan ik wel functie Max() gebruiken, maar dat kan ik NIET voor het berekenen van de laatste KKoers.

Dus voor de LaatsteVanKKoers geeft deze functie NIET de koers van de laatst ingevoerde record (van iedere Group by -reeks) !??
Voor iedere groep verwacht ik voor de Laatste ook het grootste recordnummer, en dit is niet zo.
En dit is nu juist mijn probleem.
 
Ik zou zeggen: maak een voorbeeldje.
 
Hallo,
ik heb de database vereenvoudigd (records verwijderd) en een betreffende query bijgevoegd.
In die query zijn niet alle laatste koersen de laatste koers van de betreffende groep.

zie bijlageBekijk bijlage TestLaatste.zip
 
Met Max krijg je altijd de juiste waarde. De functie Laatste niet. Lijkt mij duidelijk hoe je verder gaat...
 
@Octafish
Met Max kan ik niet werken voor het veld KKoersL, dan krijg ik niet de laatste koers, maar de grootste koers en dit is niet de bedoeling, en als ik Laatste gebruik wordt NIET de laatst ingevoerde koers weergegeven.
Voor KrsDatL kan ik wel Max gebruiken, geen probleem omdat de Max van dit veld gelijk is aan de laatst ingevoerde datum (maar als ik Laatse van KoersDat gebruik krijg ik NIET de KoersDat van de laatst ingevoerde record)
Er moet toch iets fout gaan ??
Bedankt voor de reactie.
 
Access is een relationele database. En dat betekent dus niet dat je tabellen aan elkaar kunt koppelen, zoals zoveel mensen denken, maar dat je werkt met een gegevensverzameling. Laatste is daarbij een relatief begrip. Als je werkt met een unieke identifier, dan kun je op basis daarvan het laatste record opzoeken (met Max bijvoorbeeld) en de waarde uit het veld halen die daar bij hoort.
 
Op het web vind ik zo goed als geen uitleg over de optie "Laatste" van "Totalen" in een query.
Ik vraag me dan ook af wat deze functie "Laatste" als resultaat geeft (indien niet de gegevens van uit de laatst toegevoegde record), welke laatste record geeft "Laatste" dan ?

Voor Access 2003 vind ik het volgende: "......De opgehaalde records worden in chronologische volgorde weergegeven, dus in de volgorde waarin de records in de tabel zijn ingevoerd.....
Dit lijkt mij ook logisch, maar mijn resultaat (in Access 2010) is niet zo ??
http://office.microsoft.com/nl-be/access-help/de-eerste-of-de-laatste-record-in-een-query-in-een-access-database-zoeken-HA001034563.aspx

Ik kan dit oplossen door 2 query's te maken, één totalen-query met Group by naam en Max van datum,
en een tweede query (of tabel met alle records) met een join [naam1]-[naam2] en join [Max van koers]-[koers].

Maar dan zie ik het nut niet van de functie Laatste !?
?????????????????????????????????????????????????:confused:
 
Als je een beetje zoekt naar eigenschappen van de functie LAST zul je gevonden hebben dat die functie in Access niet betrouwbaar is, vooral niet in combinatie met meerdere tabellen. MAX is dat wel. Probeer dus altijd met MAX (op basis van een autonummer) de gewenste waarde op te halen.
 
@ Octafisch
OK, ik zal 2 query's gebruiken, dus 1 met functie Max, de 2e met de gegevens die ik nodig heb.
Bedankt voor de hulp
Rud
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan