rapportage o.b.v. keuzelijst

Status
Niet open voor verdere reacties.

iegje

Gebruiker
Lid geworden
25 apr 2007
Berichten
125
Om gegevens te selecteren voor een rapportage wil ik kiezen uit een keuzelijst, hiervoor heb ik een formulier gemaakt met daarin de keuzelijst.
Hoe krijg ik dit voor elkaar?
 
Eerst moet je een knop maken die het rapport opent. Vervolgens gebruik je een variabele die het rapportfilter samenstelt, op basis van de keuzelijst. In de code die het rapport opent, geeef je vervolgens het filter mee als opdracht.

Code:
    sFilter = "[KlantID]=" & Me.cboKlant.Value
    stDocName = "Namen&Kenmerken Query"
    DoCmd.OpenReport stDocName, acPreview, , sFilter

bijvoorbeeld
 
Ik heb nu de volgende code
Code:
Private Sub rapport_openen_Click()
On Error GoTo Err_rapport_openen_Click

    
    sFilter = "[beoordeling]=" & Me.cboBeoordeling.Value
    stDocName = "qryMRIbeoordeling"
    DoCmd.OpenReport stDocName, acPreview, , sFilter

Exit_rapport_openen_Click:
    Exit Sub

Err_rapport_openen_Click:
    MsgBox Err.Description
    Resume Exit_rapport_openen_Click

Maar krijg de melding: Compileerfout: Een varialbele is niet gedefinieerd
 
Laatst bewerkt:
Logisch.
sFilter en stDocName zijn variabelen, die moet je dus wel als variabele definieren.

Tardis
 
Zet, om het te testen, eventueel de regel Option Explicit uit. Of declareer de variabelen.

Vermoedelijk zit er ook nog een foutje in je filter:

Code:
    Dim sFilter As String, stDocName As String
    sFilter = "[beoordeling]='" & Me.cboBeoordeling.Value & "'"
    DoCmd.OpenReport stDocName, acPreview, , sFilter
 
Laatst bewerkt:
Nu krijg ik de melding: U moet een rapportnaam opgeven als argument bij de actie of methode
 
Lijkt mij logisch; het commando doet precies dat: een rapport openen. Die heb je zelf al gepost: stDocName = "qryMRIbeoordeling". De code werkt uiteraard alleen als je een rapport hebt met die naam (die overigens erg onhandig is, want als je een willekeurige voorbijganger vraagt wat "qryMRIbeoordeling" is, dan zegt 95%: dat is een query! Noem je rapport bijvoorbeeld: "rptMRIbeoordeling". Da's minder verwarrend...
 
dat is het probleem, ik heb daar de verkeerde naam ingevoerd :o
Nu opent het rapport wel.

Alleen pakt hij niet de gegevens volgens de keuzelijst, ik krijg alleen een leeg rapport.
 
Laatst bewerkt:
In een eerdere post heb ik de filterinsteling gegeven voor filteren op een tekststring. Misschien filter je toch op een numeriek veld. In dat geval moeten de quootjes weer weg. Het filter is dan:
sFilter = "[beoordeling]=" & Me.cboBeoordeling.Value Het kan ook zij dat [beoordeling] een tekstveld is dat je uit een tabel haalt met je keuzelijst. En dat je in die keuzelijst de ID waarde uitleest i.p.v. de tekst. Dat kun je controleren door deze extra regels toe te voegen onder de sFilter regel:

Code:
dim tmp
tmp=Inputbox("","",sFilter)

Hiermee controleer je de waarde die in het filter wordt gezet.
 
Toch kom ik er niet uit, ik zal wel wat verkeerd doen.
Het gedeelte waar het om gaat van de DB heb ik bijgevoegd.
 

Bijlagen

Ik heb alleen de frontend vepakt, want daar ging het uiteindelijk om...
De opzet van het formulier was mij niet gelijk duidelijk, dus ik heb van het tekstvak Personeelsnummer maar even een keuzelijst met invoervak gemaakt. Uiteindelijk bleek je op het verkeerde veld te filteren (volgens mij wil je een rapport op basis van personeelsnummer). Maar voor de zekerheid heb ik er een tweede rapport bij gemaakt dat op beoordeling filtert.
 

Bijlagen

De bedoeling is dat het formulier opent met het juiste personeelsnummer.
De keuzelijst beoordeling is waarop gefilterd moet worden, alleen krijg ik ook teveel items in de keuzelijst, deze moeten ook van hetzelfde personeelsnummer wezen.

Maar ik ga eerst met je antwoord aan de slag aan de slag, misschien kom ik zo wel al een heel eind.
 
Met de combobox kom je denk ik al een heel eind; die filtert nu de keuzelijst.
 
Ze mogen juist niet kunnen kiezen met de eerste combobox :p
Bij het openen van het formulier wordt het goede personeelsnummer gebruikt na aanmelden via inlogscherm.
 
Laatst bewerkt:
Maakt niet zoveel uit; als je het formulier standaard al filtert op de juiste gebruiker, kun je dat personeelsnummer al gebruiken om de keuzelijst te filteren. Ik zou het personeelsnummer dan wel al gelijk in het tekstvak zetten, en dat locken zodat het niet vervangen kan worden door een ander personeelsnummer.
 
Doe ik, kan ik de eerste combobox dan zo vervangen voor een textvak?

Edit:
Het is al gelukt, ik zet hem op opgelost :-)
Michel, wederom enorm bedankt.

Ik ga dit nu op meerdere plekken proberen toe te passen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan