records tellen gaat fout

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.682
Hallo,
Ik heb ooit gelezen dat het command recordcount wel eens fout kan lopen, en dat is zo in mijn geval via deze code

Code:
            SQL_teller = "SELECT DATA.* FROM DATA WHERE DATA.KODE='" & Left([Forms]![patlijst]![KODELANG], 8) & "' AND DATA.PATH_GROEP = " & TB1!teller
            Set TB_Teller = db.OpenRecordset(SQL_teller)
            getelde_behandelingen = TB_Teller.RecordCount

de oplossing zou de volgende zijn:

Code:
            SQL_teller = "SELECT DATA.* FROM DATA WHERE DATA.KODE='" & Left([Forms]![patlijst]![KODELANG], 8) & "' AND DATA.PATH_GROEP = " & TB1!teller
            Set TB_Teller = db.OpenRecordset(SQL_teller)
            TB_Teller.MoveLast
            TB_Teller.MoveFirst
            getelde_behandelingen = TB_Teller.RecordCount

en dat werkt perfect maar
Als er geen records bestaan in mijn recordset, dan krijg ik natuurlijk een foutmelding bij:

TB_Teller.MoveLast

Hoe los ik dat op?

Bedankt
JP
 
Als je mijn Recordset voorbeelden had bekeken die ik de afgelopen jaren heb gepost, dan had je gezien dat ze nooit zomaar iets doen met de data; altijd eerst controleren of er wat in zit of niet. En dan pas een telling doen. Met DAO kun je sowieso nooit goed aantallen uitlezen, omdat een DAO recordset eerst de recordset gelezen moet hebben om te zien hoeveel records er in zitten. En dat heeft stevige nadelen als de tabel/recordset groot is, want je krijgt bij een echt grote tabel een behoorlijke vertraging. Met een ADO recordset kan het overigens wel gelijk, zonder vertraging..
Maar je moet dus eerst controleren of er wat in zit of niet, bijvoorbeeld zo:
Code:
On Error Resume Next
With rs
   If Not .BOF = .EOF Then 
      getelde_behandelingen = .RecordCount
   End If
End With
 
Michel,

Hier is nog iets niet in orde
Ik gaf de code als volgt in:
Code:
            SQL_teller = "SELECT DATA.* FROM DATA WHERE DATA.KODE='" & Left([Forms]![patlijst]![KODELANG], 8) & "' AND DATA.PATH_GROEP = " & TB1!teller
            Set TB_Teller = db.OpenRecordset(SQL_teller)
            On Error Resume Next
            With TB_Teller
                If Not .BOF = .EOF Then
                    getelde_behandelingen = .RecordCount + 1
                End If
            End With

ik kom telkens op 0 hetelde records.
Als ik de sql bekijk dan ziet die er als volgt uit:

SELECT DATA.* FROM DATA WHERE DATA.KODE='13011821' AND DATA.PATH_GROEP = 2

Laat ik die lopen dan zie ik dat er inderdaad meerdere records in die recordset moeten zitten..

Ik verander de code naar:
Code:
            On Error Resume Next
            With TB_Teller
                If Not .BOF = .EOF Then
                    If MsgBox("nog geen records teruggevonden ", vbOKOnly, "Kleine code vereist!") = vbOK Then
                    End If
                    getelde_behandelingen = .RecordCount
                Else
                    If MsgBox("meerdere records teruggevonden ", vbOKOnly, "Kleine code vereist!") = vbOK Then
                    End If
                End If
            End With

en krijg de melding dat er meerdere records gevonden worden zelfs als is de recordset leeg
wat ik weer via de sql lijn controleer

Wat loopt hier mis
JP
 
Laatst bewerkt:
Waar voer je de actie op uit? Dan kijk ik vanavond even in je db.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan