recordcout is verkeerd

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.697
Hallo,

Ik heb volgende code:

HTML:
    If TB1!OVER <> TB1!REEKS Then
     If tb3!Mengvorm <> True And tb3!MAXAANT <> 0 Then
        DoCmd.SetWarnings False
        DoCmd.RunSQL "delete datagroep.* FROM datagroep"
        DoCmd.RunSQL "INSERT INTO datagroep ( kode, opmerking, code ) SELECT DATA.KODELANG, DATA.OPMERKING, DATA.CODE FROM data GROUP BY DATA.KODELANG, DATA.OPMERKING, DATA.CODE HAVING DATA.KODELANG ='" & Forms!patlijst!KODELANG & "' AND DATA.OPMERKING <> 'Schriftelijk verslag' AND DATA.Code <> 'EXTRA';"
        Set TB_Groep = db.OpenRecordset("datagroep")
        If TB_Groep.RecordCount <> 1 Then
            If MsgBox("Data bevatten verschillende codes!!!", vbOKOnly + vbExclamation, "LET OP!") = vbOK Then
                GoTo einde
            End If
        End If
        DoCmd.SetWarnings True
     End If
    End If

De foutboodschap wordt nooit getoond omdat, als ik het aantal records laat tellen binnen de TB_Groep, ik steeds het cijfer 1 krijg, alhoewel, als ik de tabel bekijk, er 3 records aangemaakt werden.
Wat gaat hier fout?
Bedankt
JP
 
Niet elk type recordset geeft geluk het goede aantal records. Dus dat is de eerste vraag: hoe heb je tb_Groep gedefinieerd?
 
ik schreef

Else
Dim db As Database
Dim TB_Groep As Recordset, TB1 As Recordset, tb3 As Recordset
.................
 
Dan gebruik je een DAO recordset en die kan niet gelijk bij openen het juiste aantal records uitlezen. Je krijgt dan per definitie de foute waarde. Een DAO recordset moet eerst naar het laatste record en dan terug naar het eerste om de counter te kunnen weten.
 
Dan moet je de recordsets uit de ADO collectie halen. Maar dit
Code:
    Set TB_Groep = db.OpenRecordset("datagroep")
    With TB_Groep
        .MoveLast
        .MoveFirst
        If .RecordCount <> 1 Then
            If MsgBox("Data bevatten verschillende codes!!!", vbOKOnly + vbExclamation, "LET OP!") = vbOK Then
                GoTo einde
            End If
        End If
    End With
werkt ook prima; zeker als je tabel maar een paar records bevat is dat qua snelheid goed te doen.
 
Het werkt.. Bedankt daarvoor maar blijkbaar is er wel een betere manier. Hoe had ik het dan moeten doen?
 
Ik heb niet gezegd dat het een betere oplossing is :). Met ADO bewerk je records vanuit een andere techniek dan met DAO, maar heel veel (merkbaar) verschil zit er niet tussen. DAO zit standaard in Access, dus je hoeft er niks extra's voor te doen om het te gebruiken. Wil je met ADO werken, dan moet je een extra bibliotheek laden. Het is dus wat kwetsbaarder dan DAO.
ADO kun je dan wel weer gebruiken om vanuit andere programma's informatie op te halen.
Kortom: het is een keuze, niet meer dan dat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan