Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 5 van 5

Onderwerp: records tellen gaat fout

  1. #1
    Vraag is niet opgelost

    records tellen gaat fout

    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

  2. #2
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    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
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  3. #3
    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 aangepast door JEPEDEWE : 14 januari 2018 om 08:38

  4. #4
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Afstand tot server
    ±151 km
    Waar voer je de actie op uit? Dan kijk ik vanavond even in je db.
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  5. #5
    Zie je prive mail voor uitleg

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren
Aanbiedingen