rapport genereren op basis van keuzes in een formulier

Status
Niet open voor verdere reacties.

gotcha123

Gebruiker
Lid geworden
12 apr 2008
Berichten
86
Ik heb een formulier gemaakt waarin verschillende keuzes kunnen gemaakt worden om daarna een rapport te genereren (op basis van een bestaande database en gegevens).

Keuze 1 (cbobox): kies de persoon waarvan de gegevens afgedrukt moeten worden
Keuze 2 (cbobox => kalender, aangepast in VBA): ingave van de start- en einddatum van de periode die afgedrukt moet worden.

Wat zou ik nu precies moeten doen (in code) om dit rapport te kunnen maken?
Heb er al veel over nagedacht, maar blijkbaar werken mijn hersenen niet zo goed meer :-(

Alvast bedankt voor de reacties!
 
Maak een derde combobox voor je einddatum KEUZE3
je opent je rapport

Code:
DoCmd.OpenReport "NaamVanJeRapport",,"(PersoonNummer=" & me.KEUZE1.Value  & " AND (Datum Between # & KEUZE3.value & "# and #" & KEUZE2.value & "#))"

Mocht dat niet meteen lukken, zou het handig zijn dat je die database eens verstuurde.
 
ik had sowieso al een derde combobox met de einddatum daarin, dus dat was geen probleem. Echter als ik jouw code trachtte toe te passen, kreeg ik al direct een foutmelding van het moment ik ze kopieerde...

in bijlage de gecomprimeerde db.
Hopelijk raak jij er een beetje wijzer uit...
 

Bijlagen

Deze code werkt:

Code:
 Private Sub cmdRapport_Click()
   DoCmd.OpenReport "rptWekelijks", , "(SpelergroepID=" _
    & Me.cboKiesspeler.Value & " AND (Datum Between #" _
    & txtEindedatum.Value & "# and #" & txtBegindatum.Value & "#))"
    DoCmd.Close acForm, "frmRapportMaken", acSaveYes
End Sub

Als je SpelerID invult in tblMentaalSpeler (ik heb daar 1 ingezet voor de datum 20/05/08)

Dus als je spelernummer 1 kiest op het formulier frmRapportMaken en de periode voor 20/05/08 tot na 20/05/08 heb je één record
 

Bijlagen

Laatst bewerkt:
bij mij werkt het nog niet zoals het zou moeten...als ik meerdere records ingeef, en dan vraag ik een rapport van 1 bepaalde speler, dan geeft hij nog steeds alle records van alle spelers en ook niet in de periode die ik wil...
ik zoek nu nog steeds naar een rapport voor 1 bepaalde speler voor die bepaalde periode ...

wie kan er mij nog helpen, aub?
 
Laatst bewerkt:
Hallo Gotcha ,

zet volgende code achter je knop
Code:
Private Sub cmdRapport_Click()
    DoCmd.OpenReport "rptWekelijks", acViewPreview, , "(SpelerID=" _
    & Me.cboKiesspeler.Column(1) & " AND (Datum Between #" _
    & txtBegindatum.Value & "# and #" & txtEinddatum.Value & "#))"
    DoCmd.Close acForm, "frmRapportMaken", acSaveYes
End Sub

Groetjes
Dolfke;)
 
thanks a lot!
het ziet er naar uit dat dit werkt!

kan ik weer een stukje verder gaan met mijn database...
 
vreemd, als ik dit stukje tracht toe te passen in een andere database (identiek dezelfde structuur, maar andere gegevens), dan lukt het wel om de speler te selecteren, maar kanhij geen periode meer aanduiden. Ik krijg nu terug alle ooit ingevoerde gegevens voor deze speler...

heb je daar een idee over, Dolfke?

aanpassing: het blijkt bij nader inzien toch iets vreemds te zijn...ik heb vb. gegevens van 21/01/2008, van 23/04/2008 en van 30/05/2008. Als ik nu de periode tussen 22/04 en 01/05 aangeef, dan geeft het rapport enkel de record weer van 21/01/2008...Als ik de periode neem tussen 1/06/2008 en 30/06/2008, dan toont hij alle 3 de records, terwijl hij er geen enkele zou moeten tonen...
 
Laatst bewerkt:
Hallo Gotcha ,

Moet rekening houden hoe access datums verwerkt .
Deze werkt met de US-datum .

Dwz dat de datum gelezen wordt als 04-14-2008 = 14 april 2008

Je kan een format erbij voegen Format(UwdatumVeld, "mm/dd/yyyy")

Groetjes
Dolfke
 
er staat toch nergens in jouw code welke datum-instellingen het programma gebruikt?
ze hebben mij altijd verteld dat het programma de datum neemt zoals hij geconfigureerd is op jouw computer...
het lukt wel met de code die jij hebt doorgestuurd, maar dan enkel in die ene database...terwijl de andere db's hetzelfde geconfigureerd zijn...
 
Hallo Gotcha,

Probeer eens met onderstaande code
Code:
Private Sub cmdRapport_Click()
    DoCmd.OpenReport "rptWekelijks", acViewPreview, , "(SpelerID=" _
    & Me.cboKiesspeler.Column(1) & " AND (Datum Between #" _
    & Format(Me.txtBegindatum, "mm/dd/yyyy") & "# and #" & Format(Me.txtEindedatum, "mm/dd/yyyy") & "#))"
    DoCmd.Close acForm, "frmRapportMaken", acSaveYes
End Sub

Groetjes
Dolfke
 
dat lijkt te werken in de andere databases...al begrijp ik nog altijd niet goed waarom ik de 'fout' al niet te zien kreeg in het eerste bestand...

nog een klein vraagje: als ik nu niet meer wil selecteren op spelers (dus eigenlijk een rapport wil maken van alle spelers), maar wel nog voor een bepaalde periode, is het dan voldoende om het volgende te doen?

Code:
    DoCmd.OpenReport "rptWekelijks", acViewPreview, ,  
" (Datum Between #" _
& Format(Me.txtBegindatum, "mm/dd/yyyy") & "# and #" & Format       
(Me.txtEindedatum, "mm/dd/yyyy") & "#))"
DoCmd.Close acForm, "frmRapportMaken", acSaveYes

of zie ik iets over het hoofd?
 
Hallo Gotcha,

Bijna juist .

Je heb 1 haakje op het einde teveel .

Wat je kan doen is het volgende
Code:
Private Sub cmdRapport_Click()
Dim StrCriteria As String

If Len(Me.cboKiesspeler & "") > 0 Then
   StrCriteria = "(SpelerID=" _
    & Me.cboKiesspeler.Column(1) & " AND (Datum Between #" _
    & Format(Me.txtBegindatum, "mm/dd/yyyy") & "# and #" & Format(Me.txtEindedatum, "mm/dd/yyyy") & "#))"
Else
   StrCriteria = "(Datum Between #" _
    & Format(Me.txtBegindatum, "mm/dd/yyyy") & "# and #" & Format(Me.txtEindedatum, "mm/dd/yyyy") & "#)"
End If

    DoCmd.OpenReport "rptWekelijks", acViewPreview, , StrCriteria
    DoCmd.Close acForm, "frmRapportMaken", acSaveYes

End Sub

Als je keuzeveld speler leeg is wordt enkel naar de datums al criteria gekeken en anders ook naar de speler keuze


Groetje
Dolfke ;)
 
thanks!

al een geluk dat er nog experts zoals jij zijn die beginners zoals mij willen helpen..
als ik u tegenkom, dan krijg je een pintje van mij ;-)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan