Archief - Waar zitten hier de Access-specialisten?! :-)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

tomswaelen

Legacy Member
Dit is mijn opzet:

Ik heb een database waar, bijvoorbeeld, 3 rapporten inzitten: Report01, Report02 en Report03. Deze rapporten bevatten een veld datum, waarop ik een parameterquery heb gezet. Dus als ik het rapport open, vraagt hij 'Voer de datum in', en dan laat het rapport alle records van die datum zien.

Nu zou ik graag een formulier maken met een knop en een veld op:

- de knop drukt alle rapporten ineens af. Dus met één klik drukt hij dan Report01, Report02 en Report03 af. Maar aangezien die rapporten parameterquery's bevatten, gaat hij voor elk rapport opnieuw de datum vragen.

- hoe kan ik nu het zo maken dat ik in dat veld (dus ik bedoel het veld in het formulier waar ook de knop om alle rapporten ineens af te drukken, staat) een datum kan invullen, en dat die datum dan wordt gebruikt als antwoord op alle parameterquery's?

Dit zou alles moeten verduidelijken; dit is wat ik wil maken:

access.jpg

t294419

Legacy Member
bij het click event van die knop, op de drie puntjes klikke en dan via vba de drie rapporten opvragen met datum uit dat tekstvakje (je moet dus zelf de code intikken, ma is nie moeilijk, kweet het nie meer vanbuiten, tis nogal lang gelede dak ik in vba heb 'gecoded' :rofl: ) men kop staat momenteel op pointers dus ... (sry portfolio opdracht, te lang gewacht ermee)

tomswaelen

Legacy Member
t294419 zei:
bij het click event van die knop, op de drie puntjes klikke en dan via vba de drie rapporten opvragen met datum uit dat tekstvakje (je moet dus zelf de code intikken, ma is nie moeilijk, kweet het nie meer vanbuiten, tis nogal lang gelede dak ik in vba heb 'gecoded' :rofl: ) men kop staat momenteel op pointers dus ... (sry portfolio opdracht, te lang gewacht ermee)
Spijtig genoeg heb ik nog nooit in VBA geprogrammeerd, dus ik weet niet hoe dat moet. Als iemand mij een voorbeeldje kan geven, kan ik het waarschijnlijk wel desbetreffend aanpassen...

borracho

Legacy Member
Private Sub Knop0_Click()
On Error GoTo fout
Dim strdocname As String
Dim strdocname2 As String


If IsNull(txta) Then
MsgBox "Voer een datum in.", vbOKOnly, "Fout"
Else
Me.TimerInterval = 5000
strdocname = "rpt1"
strdocname2 = "rpt2"

txta = Format(txta, "dd/mm/yyyy")

DoCmd.OpenReport strdocname, acViewPreview
DoCmd.PrintOut
DoCmd.OpenReport strdocname2, acViewPreview
DoCmd.PrintOut
End If

Exit Sub

fout:
Err_knop0_Click:
MsgBox Err.Description

End Sub

Private Sub form_timer()
DoCmd.Close acReport, "rpt1"
DoCmd.Close acReport, "rpt2"
Me.TimerInterval = 0
End Sub

rpt1 en rpt2 hernoem je naar je rapportnamen
txta naar uw datumveld

bij rapport ga je naar rapport eigenschappen recordbron en je selecteert gewoon alle velden tabel. Hiet typ je nog bij criteria van je datumveld [forms]![jeformuliernaam]![jedatumveld]
zelfde voor 2de rapport


normaal zou je als je een goede datum ingeeft, rapporten moeten openen, afprinten en sluiten na 5 seconden
Foutmeldingen voor wanneer slechte datum , moet je zelf nog maar maken
(in tabel heb ik ook korte datumnotatie staan)

tomswaelen

Legacy Member
borracho zei:
Private Sub Knop0_Click()
On Error GoTo fout
Dim strdocname As String
Dim strdocname2 As String


If IsNull(txta) Then
MsgBox "Voer een datum in.", vbOKOnly, "Fout"
Else
Me.TimerInterval = 5000
strdocname = "rpt1"
strdocname2 = "rpt2"

txta = Format(txta, "dd/mm/yyyy")

DoCmd.OpenReport strdocname, acViewPreview
DoCmd.PrintOut
DoCmd.OpenReport strdocname2, acViewPreview
DoCmd.PrintOut
End If

Exit Sub

fout:
Err_knop0_Click:
MsgBox Err.Description

End Sub

Private Sub form_timer()
DoCmd.Close acReport, "rpt1"
DoCmd.Close acReport, "rpt2"
Me.TimerInterval = 0
End Sub

rpt1 en rpt2 hernoem je naar je rapportnamen
txta naar uw datumveld

bij rapport ga je naar rapport eigenschappen recordbron en je selecteert gewoon alle velden tabel. Hiet typ je nog bij criteria van je datumveld [forms]![jeformuliernaam]![jedatumveld]
zelfde voor 2de rapport


normaal zou je als je een goede datum ingeeft, rapporten moeten openen, afprinten en sluiten na 5 seconden
Foutmeldingen voor wanneer slechte datum , moet je zelf nog maar maken
(in tabel heb ik ook korte datumnotatie staan)
Ondertussen heb ik ook al uitgevist hoe ik dat moet doen zonder zelf code te moeten schrijven, maar toch bedankt hoor :) Hoe kan ik overigens dit doen:

Een invoer verplicht maken, en als er niets ingevoerd is, een foutmelding weergeven.

Maw:

Hoe kan ik dit:

If IsNull(txta) Then
MsgBox "Voer een datum in.",

doen zonder code te moeten schrijven, dus hoe kan ik dit doen in Access zelf?

PussyDuster

Legacy Member
Ok hopelijk helpt deze screenshot je voor het opbouwen van je query:

Screen
Als criteria gebruik je dus uw datum van je formulier [forms]![Naamvanjeformulier]![naamvanhetdatumveld]



- voor het afdrukken van meerdere rapporten
ga naar je knopje op je formulier en rechtsklikken gebeurtenis opbouwen programma code:

dan kom je in vba:

Code:
Private Sub cmddrukrapporten_Click()
On Error GoTo Err_cmddrukrapporten_Click

 ' drukken van rptdatum mijn eerste rapport

    Dim stDocName As String
    stDocName = "rptDatum"
    DoCmd.OpenReport stDocName, acNormal

 ' voeg je andere rapporten ook zo toe verander dus de naam van je rapport hier
    stDocName = "rptDatum2"
    DoCmd.OpenReport stDocName, acNormal
    
Exit_cmddrukrapporten_Click:
    Exit Sub

Err_cmddrukrapporten_Click:
    MsgBox Err.Description
    Resume Exit_cmddrukrapporten_Click
    
End Sub


EDIT HEHEHE juist 15 minuten in men reply gestoken :cry:

tomswaelen

Legacy Member
PussyDuster zei:
Ok hopelijk helpt deze screenshot je voor het opbouwen van je query:

Screen
Als criteria gebruik je dus uw datum van je formulier [forms]![Naamvanjeformulier]![naamvanhetdatumveld]



- voor het afdrukken van meerdere rapporten
ga naar je knopje op je formulier en rechtsklikken gebeurtenis opbouwen programma code:

dan kom je in vba:

Code:
Private Sub cmddrukrapporten_Click()
On Error GoTo Err_cmddrukrapporten_Click

 ' drukken van rptdatum mijn eerste rapport

    Dim stDocName As String
    stDocName = "rptDatum"
    DoCmd.OpenReport stDocName, acNormal

 ' voeg je andere rapporten ook zo toe verander dus de naam van je rapport hier
    stDocName = "rptDatum2"
    DoCmd.OpenReport stDocName, acNormal
    
Exit_cmddrukrapporten_Click:
    Exit Sub

Err_cmddrukrapporten_Click:
    MsgBox Err.Description
    Resume Exit_cmddrukrapporten_Click
    
End Sub


EDIT HEHEHE juist 15 minuten in men reply gestoken :cry:
Ja, dat was idd wat ik zelf uitgevist had, maar toch bedankt voor de moeite :)

Maar hoe kan ik nu maken dat, als men bij het datum veld voor het afdrukken van meerdere rapporten geen datum invoert, het systeem zegt: Voer een datum in ?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan