runtime error '424' object required..????

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.697
Ik krijg bovenstaande foutmelding in volgende code:

Dim db As Database
Dim Getuigschriften As String
Dim TB As Recordset
Dim SQL As String
Set db = CurrentDb()
SQL = "SELECT Betalingen.pingping, Betalingen.REFERENTIE FROM Betalingen WHERE (((Betalingen.pingping)=True));"
Set TB = db.OpenRecordset(SQL)
TB.MoveFirst
Do Until TB.EOF
Getuigschriften = Betalingen.REFERENTIE
TB.MoveNext
Loop

de bedoeling is dat ik alle Betalingen.REFERENTIE waarden in de varaible Getuigschriften krijg... in oorsprong schreef ik volgende code:
Getuigschriften = Getuigschriften &"-"& Betalingen.REFERENTIE
Maar, ik dacht dat hier mijn fout ergens in zat, daarom "vereenvoudigde" ik die codelijn, echter zonder resultaat

Graag een handje

JP
 
Je zou ondertussen moeten weten dat je code moet opmaken met de CODE knop; dus als je dat nog wilt doen: graag! En verder snap ik niet wat je wilt doen; de variabele Getuigschrift vullen, maar met deze code overschrijf je hem alleen maar.
 
Als ik je vraag goed heb gesnopen, dan is dit wat je wilt:
Code:
Dim Getuigschriften As String
Dim SQL As String
Dim i As Integer
SQL = "SELECT REFERENTIE FROM Betalingen WHERE (Volle_pot=True);"
With CurrentDb.OpenRecordset(SQL)
    .MoveLast
    .MoveFirst
    Do While Not .EOF
        If i < .RecordCount And Not Getuigschriften = "" Then Getuigschriften = Getuigschriften & "; "
        Getuigschriften = Getuigschriften & !REFERENTIE
        .MoveNext
    Loop
End With
MsgBox Getuigschriften
 
sorry voor de "code"
bedankt voor jouw code
wat ik wou doen schreef ik een beetje later:
Getuigschriften = Getuigschriften &"-"& Betalingen.REFERENTIE
maar omdat ik die foutmelding kreeg dacht ik dat dat door die code kwam, dus veranderde ik dit in
Getuigschriften = Betalingen.REFERENTIE
maar ik kreeg de foutmelding opnieuw dus lag het niet aan
Getuigschriften = Getuigschriften &"-"& Betalingen.REFERENTIE
Ik snap nog steeds niet wat ik fout deed
waarom maak jij geen recordset aan???
waarom
.MoveLast
.MoveFirst
over een weer bewegen... waar is dat goed voor
hoe moet ik die punt (.) eigenlijk begrijpen/lezen?

Merci!
JP
 
Ik maak alleen een recordset aan als dat nodig is; en dat hoeft hier dus niet. Je neemt alleen maar geheugenruimte weg door van alles te declareren wat niet nodig is. Dus als het niet hoeft: niet doen.
Met Movelast en Movefirst laat je de recordset helemaal in, en weet je met .Recordcount ook hoeveel records er inzitten. Doe je dat niet zo, dan geeft .Recordcount een verkeerde waarde.
De punt is voldoende als je een actie met With opent.
Code:
With CurrentDb.OpenRecordset(SQL)
    .MoveLast
    .MoveFirst
Is hetzelfde als:
Code:
    CurrentDb.OpenRecordset(SQL)
    CurrentDb.MoveLast
    CurrentDb.MoveFirst
Het is een nettere manier van programmeren, en je hoeft minder code in te typen.
 
waar ik ook graag wat meer wil van weten is die "i"
Je schrijft:

Do While Not .EOF
If i < .RecordCount And Not Getuigschriften = "" Then Getuigschriften = Getuigschriften & "; "
Getuigschriften = Getuigschriften & !REFERENTIE
.MoveNext
Loop

hoe krijgt i een nieuwe waarde telkens de loop loopt??
ik zou al schijven i=i+1 of zo iets
 
Heb je gelijk in; die regel is weggevallen bij het kopieëren :)
 
Kan kloppen, aangezien die regel nergens voor nodig is.

Tardis
 
maw... de waarde van i neemt automatisch met 1 toe..
Stel dat je die waarde met 2 of 3 wil laten toenemen, wat doe je dan?
 
Meestal gebruik ik deze code:
Code:
        Do While Not .EOF
            If Not Getuigschriften = "" Then Getuigschriften = Getuigschriften & "; "
            Getuigschriften = Getuigschriften & !REFERENTIE
            .MoveNext
        Loop
Ik gebruik een teller als ik verwacht dat de procedure lang duurt; in dat geval laat ik in de statusbalk een teller meelopen die aangeeft hoeveel records er nog moeten verwerkt. En dan heb je uiteraard de i=i+1 wel nodig.
In deze code doet i niks als je hem niet optelt met 1. Maar de controle op EOF is al voldoende om het scheidingsteken toe te voegen, zoals in bovenstaand voorbeeld.
 
maw... de waarde van i neemt automatisch met 1 toe

Nee.
De variabele i wordt standaard ingesteld op 0.
In dit geval wil je alleen weten of de recordset records retourneert maw of RecordCount > 0.
Variabele heb je verder niet nodig.
Zie ook de vorige reactie van OctaFish.

Tardis
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan