Eerst het verschil maar tussen de verschillende Count functies. DCount gebruik je meestal om een waarde op te zoeken op basis van een vergelijking die je wilt maken in een query o.i.d. als je een aantal nodig hebt van een andere gegevensbron. Hij valt in de categorie
Statistische Domeinfuncties, een categorie die alles terugleest als tekst, dus niet altijd bruikbaar. In een query kun je met de functie Aantal (of Count in VBA) waarden tellen. In queries gebruik je Aantal meestal in Totalen functies, waarbij je een aantal wilt zien van een bepaalde groep. Recordcount is, zoals de naam al aangeeft, een eigenschap van een Recordset. Het aantal records in de tabel of query dus. Het resultaat ervan hangt af van de manier waarop de recordset geopend wordt.
Bekijk deze code maar eens, waarbij een tabel wordt geopend en een query op basis van dezelfde tabel:
Code:
With CurrentDb.OpenRecordset("Query4")
MsgBox .RecordCount
.MoveFirst
.MoveLast
MsgBox .RecordCount
End With
Het eerste voorbeeld opent een Query, en laat twee msgboxen zien met het aantal records. Als je deze variant zelf uitprobeert, zul je zien dat de eerste msgbox de waarde 1 zal geven, en de tweede msgbox het werkelijke aantal. Dat komt door de manier waarop de recordset wordt gelezen door de procedure. Bij het openen van een query, zonder nadere parameters, wordt de query geopend en staat de cursor op het eerste record. Access weet op dat moment niet hoeveel records er zijn, dus het totaal is op dat moment 1. Ga je naar het laatste record, en dan terug naar het eerste, dan weet Access inmiddels exact hoeveel record er zijn, en krijg je het goede aantal.
Code:
With CurrentDb.OpenRecordset("tblPaperBin")
MsgBox .RecordCount
End With
Voer je dezelfde procedure uit op een tabel, dan krijg je gelijk het juiste aantal records. Je hoeft dus niet eerst naar het laatste record te bladeren, en daarna terug naar het eerste.