Rapport openen op basis van keuzelijst

Status
Niet open voor verdere reacties.

ElGreco

Gebruiker
Lid geworden
20 apr 2012
Berichten
17
Ik heb een formulier met adresgegevens. Ik heb meerdere rapporten waarin deze adresgegevens gebruikt kunnen worden.
In het formulier open ik met een knop een keuzeformulier dat in VBA is gemaakt. In dit keuzeformulier staan de beschikbare rapporten (keuzerondjes).
Hoe open ik nu precies een gekozen rapport met de gegevens van het onderliggende formulier?
Ik ben wel al zo ver dat ik een rapport kan openen maar dit gebeurt dan voor alle records.
Ik doe dit met:
DoCmd.OpenReport "rBevestiging", acViewPreview
Wat moet ik hieraan toevoegen om het betreffende rapport voor één specifiek record te openen?
 
Je kunt op zich vanuit een formulier simpel filteren naar een rapport door het filter toe te voegen aan de opdracht. Dat ziet er dan zo uit:
Code:
    DoCmd.OpenReport stDocName, acPreview, , Me.Filter
In dit geval neem je het filter van het formulier over in het rapport. Omdat je een tussenformulier gebruikt, gaat dit zo niet werken. Je zult dan specifiek naar het formulier met het filter moeten verwijzen.
 
Is duidelijk. Kun je misschien aangeven hoe dit laatste dan wordt gecodeerd?
 
Aanvullende code

Zou ik a.u.b. een antwoord kunnen krijgen op mijn laatste vraag?
Alvast bedankt.
 
Eerst een vraag van mijn kant: heb je het formulier gefilterd, of gaat het om het actieve record? En in het laatste geval: wat is het sleutelveld van je formulier? En is dat een tekstveld of een numeriek veld?
 
OctaFish, bedankt voor de snelle reactie.
Ik wil de actie toepassen op een formulier dat is gefilterd (dus altijd 1 formulier).
Unieke velden in dit formulier zijn: Achternaam (tekstveld) en NaamID (primaire sleutel/numeriek/autonummering).
Kun jij hier wat mee?
 
Als het formulier is gefilterd, zou mijn opdrachtregel van 20-4 zonder meer moeten werken. Zo niet, dan kun je het filter ook zo maken:

Code:
Dim sFilter As String
    sFilter="NaamID]=" & Me.NaamID 
    DoCmd.OpenReport stDocName, acPreview, , sFilter
Overigens zou ik van een tekstveld [Achternaam] nooit een uniek veld maken; je sluit daarmee alle Jansens en Smitjes (minus 1) uit van je database. Lijkt mij niet handig...
 
Ik heb e.e.a. ingevoerd en krijg dan de volgende foutmelding:
Compileerfout:
Kan de methode of het gegevenslid niet vinden
Wat doe ik niet goed?
Hier mijn volledige code:
Private Sub CommandButton1_Click()
Dim sFilter As String

frmMenu.Hide

sFilter = "[NaamID]=" & Me.NaamID

If OptionButton1 = True Then
DoCmd.OpenReport "rBevestiging", acViewPreview, sFilter
ElseIf OptionButton2 = True Then
DoCmd.OpenReport "rBevestiging met bijlage", acViewPreview, sFilter
End If

End Sub

Commandbutton1 is de OK knop uit het VBA-formulier
Optionbutton 1 en 2 zijn de keuzerondjes in VBA-formulier
frmMenu is het VBA-formulier dat ik open vanuit het gefilterde formulier
frmMenu roep ik aan d.m.v. een knop in het gefilterde formulier

Je hebt gelijk over het veld Achternaam. Was bekend. Ik los dit op door de achternamen uniek te maken: Jansen (1), Jansen (2) etc.
Hoor graag weer even.
 
Heb je de komma's goed geteld? Ik gebruik er twee, jij hebt er één staan. Overigens ziet je code er beter uit als je hem opmaakt met de CODE knop.
 
Ook met 2 komma's krijg ik dezelfde foutmelding.
Hij blijft hangen op & Me.NaamID.
 
Me.NaamID werkt alleen als je een veld NaamID op je formulier hebt. Ik kan uiteraard niet beoordelen of dat ook zo is. En of NaamID een numeriek veld is.
 
Ik heb inderdaad een veld NaamID en dit veld is numeriek. Dus daar ligt het niet aan.
 
Blijkbaar wel, want je krijgt er een foutmelding op :)
Als de code vastloopt, en je naar Foutopsporing gaat, geeft NaamID dan een waarde als je de muis er boven houdt? Als je dat niet kunt checken, kun je dan eerst een variabele tmp maken en die vullen met tmp= Me.NaamID; dan kun je de variabele denk ik wel bekijken.
 
Blijkbaar wel, want je krijgt er een foutmelding op :)
Als de code vastloopt, en je naar Foutopsporing gaat, geeft NaamID dan een waarde als je de muis er boven houdt? Als je dat niet kunt checken, kun je dan eerst een variabele tmp maken en die vullen met tmp= Me.NaamID; dan kun je de variabele denk ik wel bekijken.
 
Octafish, ik kom er niet uit.
Ik heb een voorbeeldje gemaakt waarmee mijn probleem misschien beter duidelijk wordt.
Hopelijk kun jij me dan weer verder helpen.
Nogmaals ik wil graag op basis van de keuze die gemaakt wordt in het keuzeformulier een rapport afdrukken voor het onderliggende adres.
 

Bijlagen

Het gebeurt niet snel dat ik met stomheid geslagen ben, maar die primeur is voor jou :) Ik heb namelijk geen flauw idee (en eigenlijk wíl ik het niet eens weten, want ik vind het nogal onzinnig in Access) hoe je het voor elkaar gekregen hebt om een VBA UserForm in de database te krijgen! Ik ben in ieder geval die optie nog nooit eerder tegengekomen, en kan daarbij zeggen dat ik 'm ook nog nooit nodig heb gehad. Access heeft namelijk (als enige in de Office) een fantastische tool om formulieren te maken, dus waarom zou je dat (met heel andere technieken) via vba userforms willen doen?
Als je dat userform er uit sloopt, en de optierondjes gewoon op je adres formulier zet, is het een fluitje van een cent. Heb je ook geen macro meer nodig. (nog zo'n onderdeel waar ik een grote fan van ben...)
 

Bijlagen

Het gebruik van een Userform zorgt voor opgeruimde formulieren. Zodoende krijg je geen formulieren die vol staan met knoppen, keuzerondjes en vinkjes. Dus je merkt al dat ik er een iets andere mening op na hou. Jouw oplossing was mij al bekend maar ik zou graag een Userform op dezelfde manier laten werken.
Ik had gehoopt dat jij me verder kon helpen maar ik denk dat dat op dit moment niet zal lukken. Jammer.
Ik ga verder zoeken en proberen.
Toch bedankt voor alle medewerking.
Wellicht vink ik een oplossing. In dat geval laat ik het jou weten.
 
Ik zou het wel kunnen, maar heb eigenlijk geen belangstelling in dit soort oplossingen. Maar als je dus userforms kunt maken, wat mij niet lukt, dan kom je daar vast wel uit...
Overigens zie ik weinig verschil tussen een userform met keuzerondjes of een Access formulier met keuzerondjes. En nu weet ik nog steeds niet hoe je dat userform hebt gemaakt :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan