query in een query

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.682
Hallo,
het valt me wat moeilijk om de situatie uit te leggen maar ik doe mijn best.
Ik heb volgende code:
Code:
    Dim Getuigschriften As String
    Dim SQL As String
    Dim i As Integer
    SQL = "SELECT REFERENTIE FROM Betalingen WHERE pingping = True;"
    With CurrentDb.OpenRecordset(SQL)
        .MoveLast
        .MoveFirst
        Do While Not .EOF
            If i < .RecordCount And Not Getuigschriften = "" Then Getuigschriften = Getuigschriften & "- "
            Getuigschriften = Getuigschriften & !REFERENTIE
            .MoveNext
            i = i + 1
        Loop
        .Close
    End With

via deze code wordt er een waarde aan de variabel "Getuigschriften" toegekend.
Deze waarde kan bvb zijn: "9632189-9632190-9632191"
binnen de code worden er dus 3 records gevonden: 9632189, 9632190 en 9632191

Nu wil ik de code zodanig aanpassen dat telkens er een record gevonden wordt (bvb 9632189), er naar de tabel DATA gegaan wordt, in elk record waar "geattesteerd" de waarde 9632189 heeft, het veld in DATA "betaald" op true gezet wordt.

Ik dacht een nieuwe SQL in te geven na "Do While Not .EOF"
om hier telkens het veld "referentie mee te pakken wat de waarde van bvb 9632189 bevat, maar dat lukt me niet
Iemand een handje?

Bedankt
JP
 
ik dacht het zo op te lossen:
Code:
    Dim Getuigschriften As String
    Dim SQL As String
    Dim SQL_data As String
    Dim i As Integer
    SQL = "SELECT REFERENTIE FROM Betalingen WHERE pingping = True;"
    With CurrentDb.OpenRecordset(SQL)
        .MoveLast
        .MoveFirst
        Do While Not .EOF
            SQL_data = "Select betaald from data where geattesteerd ='" & SQL!REFERENTIE & "';"
            If i < .RecordCount And Not Getuigschriften = "" Then Getuigschriften = Getuigschriften & "- "
            Getuigschriften = Getuigschriften & !REFERENTIE
            .MoveNext
            i = i + 1
        Loop
        .Close
    End With

maar krijg de foutmelding: "de kwalificatie moet een collectie zijn"...

Sta dus nog even ver.. :confused:
Bedankt voor de hulp

JP
 
Ik paste nu mijn code als volgt aan:

Code:
    Dim Getuigschriften As String
    Dim SQL As String
    Dim SQL_data As String
    Dim i As Integer
    SQL = "SELECT REFERENTIE FROM Betalingen WHERE pingping = True;"
    With CurrentDb.OpenRecordset(SQL)
        .MoveLast
        .MoveFirst
        Do While Not .EOF
            SQL_data = "UPDATE data SET data.betaald = True WHERE data.geattesteerd ='" & !REFERENTIE & "';"
            If i < .RecordCount And Not Getuigschriften = "" Then Getuigschriften = Getuigschriften & "- "
            Getuigschriften = Getuigschriften & !REFERENTIE
            .MoveNext
            i = i + 1
        Loop
        .Close
    End With

de code loopt, alleen wordt de update blijkbaar niet uitgevoerd...

JP
 
Je doet niks, behalve een SQL string maken. En die heb je niet eens nodig :D. Net zo min als de MoveLast trouwens. Oh ja, de MoveFirst kan ook weg :).
Als je een recordset opent, kun je daarin alles muteren wat je wilt. Of toevoegen, of verwijderen. Afhankelijk van wat je wilt. In het geval van toevoegen begin je met rs.Add, verwijderen (je raadt het goed) rs.Delete, en om te muteren begin je met rs.Edit. Vervolgens wijzig je de velden (al dan niet in een lus) en elk record dat je klaar hebt sla je op met rs.Update.
 
Zoals gewoonlijk snap ik het niet hoor Michel,

Het betreft hier toch 2 verschillende tabellen: het ene "betalingen" het andere "data"
via die "update" wil ik een veld aanpassen in de data tabel, moet ik die dan niet in een recordset steken voor ik een rs.update doe?

Ik kom er echt niet uit hoor...

(en trouwens... de code is voor 90%, een dik jaar geleden, nog door jou geschreven...;;):thumb:)

Groeten
JP
 
Na de SQL_data lijn voegde ik volgende syntax toe

CurrentDb.Execute SQL_data

Waarna alles naar behoren werkte...

Misschien niet zoals het moet maar toch, het werkt. (denk ik :confused:)

JP
 
Maar het hoeft niet zo omslachtig. Aan de andere kant: je kan ook drie keer links om een gebouw lopen om aan de rechterkant uit te komen :).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan