Hoe maak ik gebruik van de recordset van een formulier

Status
Niet open voor verdere reacties.

Ruudh59

Gebruiker
Lid geworden
30 nov 2013
Berichten
56
Ik heb een formulier met subformulier waarbij ik allerlei filters kan zetten.
Op een zeker moment wil ik wat met de records die het resultaat zijn van alle filteracties.

Ik had begrepen dat je de zgn. recordset kan benaderen van het formulier.

Daarvoor ben ik de volgende code begonnen:

Dim rs As DAO.Recordset
Set rs = Forms!{Form}!{Subform}.Recordset

Op deze regel krijg ik bij uitvoering de fout '438 Deze eigenschap of methode wordt niet ondersteund door dit object'.

Wat doe ik hier fout oftewel, hoe moet ik dat doen?
 
Om te beginnen: {Form} moet zijn: [Form]. Maar leg eerst eens uit wat je wilt doen, want dit: Op een zeker moment wil ik wat met de records die het resultaat zijn van alle filteracties. kan bijna niet vager :). Wil je de records meenemen naar de Efteling? Water geven?
 
De { } heb ik gebruikt om aan te geven dat daar de werkelijke naam van het formulier staat. Ik heb het even generiek gehouden. Ik had ook andere tekens kunnen gebruiken.
Uiteraard moet je daar de juiste syntax gebruiken.

Wat ik er vervolgens mee ga doen maakt eigenlijk niet uit en daar gaat het bij mijn vraag ook niet om, maar ik wil b.v. het bedrag dat in elk record voorkomt bij elkaar optellen.
Maar wat ik niet wil doen (of niet verwacht te hoeven doen) is eerst opnieuw een query toepassen op mijn database.
Tenslotte heb ik de verzameling met records al bepaald door de gekozen filters in het formulier.
De verzameling records in mijn formulier wil ik benoemen als recordset.
Vervolgens zou ik dat de recordset kunnen doorlopen en bedragen optellen, een rapport kunnen samenstellen of nog meer vaags.
Het gaat al fout bij de declaratie van een recordset en dat begrijp ik niet.

Kan je me helpen aan de werkwijze om een declaratie van een recordset afkomstig uit een formulier te doen?
 
Berekeningen op basis van gefilterde records doe je natuurlijk gewoon op het formulier, lijkt mij een stuk makkelijker. Maar goed, de ingewikkeldste manier mag natuurlijk ook :). Met Recordset stel je sowieso een recordset in die je dan ook nog moet vullen. En dat doe je niet. Je kunt dit proberen:
Code:
Set rs = Me!Subform1.Form.RecordsetClone
Of:
Code:
Dim strSQL as String
strSQL = Me!Subform1.Form.RecordSource
Set rs = CurrentDb.OpenRecordset(strSQL)
In de laatstse variant heb je nog niet het filter erbij.
Een aantal 'vage' varianten mag je hier wel posten als je die hebt, want die zou ik ook niet kunnen maken. Wordt dus leerzaam :)
 
Dank je. Ik zal het vanavond eens proberen.
De fout die ik dan gemaakt zou hebben in de instructie is het ontbreken van ".form." voor Recordset en "RecordsetClone" i.p.v. "Recordset"
"Set rs = Forms!Form!Subform.Recordset" moet worden "Set rs = Forms!Form!Subform.Form.RecordsetClone"

Wat bedoel je met "doe je natuurlijk gewoon op het formulier"?
Ik doe het gewoon op het formulier, maar hoe benader je dan de data die als verzameling records in het doorlopende subformulier worden weergegeven?
Daarvoor is de recordset toch het middel?

Stel je hebt een aantal records in een doorlopend subformulier en in elk record staat een bedrag. Op het hoofdformulier wil ik de som van deze bedragen weergeven. Hoe zou jij dat aanpakken?
 
Zolang ik niet weet wat je precies wilt, kan ik daar geen antwoord op geven. Uitgaande van
'''maar ik wil b.v. het bedrag dat in elk record voorkomt bij elkaar optellen.
Dat doe je gewoon op het (subformulier) waarin je in de voettekst een SOM formule maakt. Wil je de waarde ook op het hoofdformulier zien/gebruiken, dan verwijs je met een tekstvak naar het Totaalveld in het subformulier. Kan dus volledig zonder recordset.
 
Weten hoe ik een recordset kan benaderen was wel het doel van mijn vraag en heb ik straks waarschijnlijk toch wel nodig, dus ik ga zeker verder op deze weg, maar ook de oplossing zonder recordset is welkom. Dank.
 
Beide oplossing werken, zoals omschreven; Recordset en SOM in voettekst.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan