Record 1 'Wim', record 2 'Hans' en record 3 'Frits' afdrukken

Status
Niet open voor verdere reacties.

myfirstaccess

Gebruiker
Lid geworden
21 apr 2009
Berichten
15
Hoi,

Wie kan me even op weg helpen met het volgende?

een qry geeft me 3 namen terug in 3 records tw Wim, Hans, Frits.

Deze wil ik achter elkaar afdrukken op een rapport in 1 besturingelement als Wim, Hans en Frits.

Dus ik verwacht een loop te moeten maken om een string op te bouwen, maar wie kan me even helpen?

Gr Ron
 
Met een functie kan dat wel.
Code:
Function NamenSamen() As String
    With CurrentDb.OpenRecordset("qNamen")
        If Not .RecordCount = 0 Then
            Do While Not .EOF
                .MoveFirst
                NamenSamen = .Fields("Naam").Value & ", "
                .MoveNext
            Loop
        End If
        .Close
    End With
    Do While Right(NamenSamen, 2) = ", "
        NamenSamen = Left(NamenSamen, Len(NamenSamen) - 2)
    Loop
End Function
Nog wel even de querynaam en veldnaam aanpassen uiteraard. In je rapport maak je dan een tekstveld met als Besturingselementbron de formule: =NamenSamen
 
nog niet helemaal daar

Hoi, bedankt voor je reactie! het werkt, maar nog niet geheel voor mijn eigen qry.

VBA loopt vast op de 2e regel. Mijn qry geeft de namen weer obv (onderstaande where) een factuurnr (waaraan deze mensen hebben gewerkt). Dat nr verkrijgt hij via een subfrm, daar is dat nr gekozen.

Dus mogelijk is het factuurnr nog niet bepaald wanneer de code start of moet ik de code nog wat aanpassen.

Ik ga nog even wat proberen, maar als je me nog wat kunt helpen graag.

//
WHERE (((projectlines.invoice_id)=[Forms]![fFactureren]![tFactuurID]) AND ((services.name) Like "arbeid*"));
//
 
Ik snap je aanvulling niet helemaal; wanneer en hoe wil je de functie nu gebruiken? En wat doet het criterium daar bij?
 
Hoi, ja sorry onderstaande gedachtengang van mij klopt niet. Op het moment van start qry (jouw code) zijn alle gegevens voor de qry's bekend. Toch een foutmelding. Ga nog wat freubelen :-)

gr
 
too few parameters. expected 1

Hoi, sorry dat het even duurde. dit is wat ik er nu van kan maken.
qry FactuurEmployee geeft mij 2 records/ namen Wim en Hans. De qry is een parameterquery met 2 velden 'FactuurID' en 'Naam'.
De qry wordt aangeroepen vanaf frm Factureren. Hier staat ook een veld met het 'FactuurID'. Dus zodoende werkt de qry.

Als ik vervolgens je code in de functie NamenSamen stop en die als besturingselement aan een veld op mijn factuur koppel, dan werkt het niet.
Ik krijg dan de VBA foutmelding 'too few parameters. expected 1. als ik dan foutopsporing doe, is deze regel code geel 'With CurrentDb.OpenRecordset("qFactuurEmployee")'.

De parameter die gemist wordt is dan waarschijnlijk de FactuurID. Alleen die moet wel al beschikbaar zijn. Mogelijk kan de code heb niet benaderen. (let op, ik heb weinig verstand van VBA! :-)).

Dus komt het er dan op neer dat de variabele FactuurId nog in de code moet worden verwerkt? Iets als:
Function NamenSamen() As String
With CurrentDb.OpenRecordset("qFactuurEmployee")
!! Where FactuurID = Forms!Factureren!FactuurID. !! Toevoeging !!
If Not .RecordCount = 0 Then
Do While Not .EOF
.MoveFirst
NamenSamen = .Fields("Naam").Value & ", "
.MoveNext
Loop
End If
.Close
End With
Do While Right(NamenSamen, 2) = ", "
NamenSamen = Left(NamenSamen, Len(NamenSamen) - 2)
Loop
End Function

Dit is zoals ik er nu tegenaan kijk. Heb dus weinig kennis van VBA, dus geen idee of dit hout snijdt :-)
Hoop dat ik het duidelijk genoeg omschreven heb.

Gr Ron
 
Je had er niet bij gezegd dat je een query gebruikt met een parameter er in. Deze query draait blijkbaar al onder je formulier, en wordt nu nog een keer aangeroepen op het rapport? Staat het formulier nog wel open? Want als het formulier is afgesloten gaat het natuurlijk op voorhand al niet werken.
Ik zou in dit soort ingewikkelde constructies niet maken op basis van een met een parameter; de kans dat dit fout gaat is veel te groot. Ik zou er dan voor kiezen om een query te maken waar de criteriawaarden hard in staan. Dus niet Where FactuurID = Forms!Factureren!FactuurID in de query, maar Where FactuurID = 1021. Dan werkt zowel je rapport gelijk goed, en de functie ook.
 
Hoi, oke duidelijk verhaal. Is er misschien een andere methode waarbij je wel kunt werken met variabele criteriawaarden? Ik heb de constructie met Forms!... vaak gebruikt in mijn db, maar moet dan mogelijk overstappen op een beteren wijze, zodoende.
Bedankt voor je hulp!
 
Mijn methode is op zich net zo flexibel als jouw methode met de Forms! referentie. Misschien zelfs wel flexibeler, want hij werkt altijd, en dat kan ik van de Forms! methode niet zeggen :) De truc is, dat je op basis van een keuze die je laat maken een query maakt waar de goede gegevens als criterium in zitten. In die query zitten dus geen verwijzingen naar een formulier, maar de echte waarden. Kies je een andere waarde uit je formulier, dan wordt ogenblikkelijk de query aangepast. In het gebruik zul je dus nooit een verschil merken met een criterium op basis van een formulierverwijzing. Grote voordeel: de query die je gebruikt werkt altijd, want er staat altijd een correcte waarde in de parameter. En als de query werkt, dan werkt het rapport ook altijd. Je ziet dus als je het rapport opent de gegevens van de laatste keer dat je het formulier/rapport gebruikte. Wil je wat anders, dan doe je dat via het formulier. En dat doe je nu dus ook!
 
Hoi, ik begrijp niet direct hoe je dat doet? Heb je toevallig een link naar een voorbeeld. Zal dit weekend even een mijn manier posten, ter dubbel check dat we het over hetzelfde hebben. :-)
B.t.w. mijn complimenten voor je uitleg en tijd die je hieraan besteedt!!
 
In de aflevering van de Access cursus die over pak 'm beet een week in de nieuwsbrief staat, wordt nu net dit proces behandeld :) Als je daar niet op kan wachten, kan ik wel een voorbeeldje opzoeken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan