[ACCES] Periode selecteren bij rapportweergave

Pagina: 1
Acties:
  • 503 views sinds 30-01-2008
  • Reageer

  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
Hallo, ik weet niet of ik dit hier moet posten, maar hier zitten de experts.

Allereerst wil ik even duidelijk maken dat ik geen pro ben met access, ik kan een databse in elkaar flansen, maar daar is ook alles mee gezegd.

Dan nu mijn vraag:

Ik heb voor school een database inelkaar gezet waar gearchiveerde dossiers ingevoerd kunnen worden en waar vervolgens managementinformatie uitgehaald kan worden. Ik heb een drietal tabbellen in gebruik en 1 bevat onder andere de volgende velden:

Tabel zaak
-dossiernr
-songeval
-dsluiting

Hierbij is songeval het soort ongeval en dsluiting de datum dat de zaak is geachiveerd.

Ik heb hier een querry van gemaakt met SQL die er als volgt uiziet:

SELECT z.songeval AS [Soort ongeval], Count(*) AS [Aantal]
from zaak as z
group by z.songeval
order by Count(*) DESC;

Dit geeft het aantal zaken per ongeval weer. Deze querry heb ik samen met een aantal andere als subrapport in een algemeen rapport verwerkt. Dit werkt allemaal prima, alleen moet het eigenlijk zo zijn dat als iemand het rapport wil openen diegene eerst 2 datums in moet voeren van waartussen hij of zij de resultaten wil zien (het gaat hierbij om "dsluiting"). Dus zeg maar het aantal soort ongevallen tussen 01-01-03 en 01-01-04.

Ik heb echt geen idee hoe dit moet (toch iets te gevorderd voor mij denk ik). Ik heb zo'n beetje alle topics hierover gelezen, maar kon nergens 1 vinden die echt op mijn situatie aansluit en de helpfunctie heb ik ook niet veel aan.

Ik hoop dat jullie mij kunnen helpen, in elk geval bedankt voor het lezen van dit verhaal!!

Sup


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 21:24

NMe

Quia Ego Sic Dico.

Je kan een WHERE-clause opnemen:
SQL:
1
WHERE datum BETWEEN #01-01-03# AND #01-01-04#

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
ja, alleen dan staat die vast. Het is de bedoeling dat de gebruikers van de applicatie (die er dus helemaal geen verstand van hebben) steeds opnieuw kunnen bepalen welke datum ze willen zien. Dus elke keer als ze het rapport via een formulier openen moet om een datum gevraagd worden...

Sup


  • camiels
  • Registratie: Januari 2001
  • Laatst online: 07-01 17:15
Je zou via een formulier de gebruiker het rapport kunnen laten open. In het formulier laat je dan de van tot datum selecteren of invullen. Daarna kan je twee dingen doen denk ik:

1.) Variabele opnemen in SQL en dus alles overzetten naar VBA, je opent dan vanuit vba het rapport met een dynamische sql als recordsource.

2.) Tijdelijke tabel aanleggen met SQL statement zoals je hierboven aangeeft en met datum selectie. Die tijdelijke tabel gebruik je daarna als source voor je rapport.

  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
camiels schreef op vrijdag 19 november 2004 @ 12:16:
Je zou via een formulier de gebruiker het rapport kunnen laten open. In het formulier laat je dan de van tot datum selecteren of invullen. Daarna kan je twee dingen doen denk ik:

1.) Variabele opnemen in SQL en dus alles overzetten naar VBA, je opent dan vanuit vba het rapport met een dynamische sql als recordsource.

2.) Tijdelijke tabel aanleggen met SQL statement zoals je hierboven aangeeft en met datum selectie. Die tijdelijke tabel gebruik je daarna als source voor je rapport.
Ik open het rapport al vanuit een formulier. Ik gebruik de formulieren als startpagina zeg maar en ga dan steeds naar een nieuw formulier waar ik weer andere keuzes geef. Zo zijn er drie "eind" formulieren voor het invoegen van gegevens (per tabel 1) en zijn er drie formulieren die naar rapporten verwijzen. Alleen wil ik hier dus een datum kunnen selecteren. Ik weet alleen niet hoe.

En wat bedoel je met een dynamische sql of een tijdelijke tabel?

Sup


  • JJvG
  • Registratie: Juli 2003
  • Laatst online: 27-04 16:49
Als je het rapport vanaf een formulier opent, kun je in de query van het rapport het volgende doen:

code:
1
2
3
4
5
Naam veld          |
Tabelnaam          |
Oplopend/Aflopend. |
        []         |
Conditie: Between [Formuliernaam]![naamInputBox] And [Formuliernaam]![naamInputBox2]

Let op: Vierkante haken laten staan!

Als je de gebruiker zelf een datum wilt kunnen laten invullen kan je ook doen:

code:
1
2
3
4
5
Naam veld          |
Tabelnaam          |
Oplopend/Aflopend. |
        []         |
Conditie: Between [Vul de begindatum in: ] And [Vul de einddatum in:]

Let op: Ook hier de vierkante haken laten staan!
Access zal in het laatste geval een inputbox tonen

  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
Aahh, bedankt die onderste werkt prima :D

Alleen nu heb ik een kleine complicatie. Ik heb op dit moment 8 "rapportjes" met algemene informatie. Die kunnen elk apart afgedrukt worden, maar ook allemaal tegelijk in 1 rapport. Dit is gewoon een leeg rapport met 8 subrappporten. Als ik die nu wil openen moet ik 8 keer de begin en de einddatum invullen!

Kan dit ook zo gemaakt worden dat dat hier ook maar 1 keer hoeft of moet ik voor deze verzamelrapporten maar aparte querry''s maken en die dan zonder datum keuze laten werken?

In elk geval bedankt voor de hulp tot zover!

Sup


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Bij het laatste stuk code van JJvG moet je idd elke keer dat de query wordt uitgevoerd (dus bij elk rapport dat je opent) de 2 data opnieuw invullen.

Ik ben toevallig ook net bezig met een formulier waar een periode gekozen moet worden, in mijn geval steeds 1 week. Ik heb het opgelost met een MonthView control. Hier klikt de gebruiker een datum aan, en ik kijk dan welke week dat is geweest, en van waar tot waar die week precies loopt. (Je zou ook 2 MonthView-controls kunnen gebruiken om een periode te krijgen)
Gebruiker kiest dus een datum en klikt op de knop 'bekijken', waarna deze code wordt uitgevoerd:
Visual Basic:
1
2
3
4
5
6
Dim StartDate As Date, EndDate As Date, dTemp As Date
 
' Start en einddatum bepalen
dTemp = MonthView0.Value
StartDate = DateAdd("d", (1 - Weekday(dTemp, vbMonday)), dTemp)
EndDate = DateAdd("d", 6, StartDate)


In StartDate en EndDate staan nu 2 datums, deze kun je weer gebruiken bv in een query of om een formulierfilter of where-clausule te maken. Om nu meerdere rapporten te laten zien voor de gekozen periode kun je bv zo iets in het klik-event van een knop zetten:
Visual Basic:
1
2
3
4
5
Dim sWhere as String

sWhere = "[datum] BETWEEN " & StartDate & " AND " & EndDate
DoCmd.OpenReport "Rapport1", , , sWhere
DoCmd.OpenReport "Rapport2", , , sWhere

Vooral dit laatste is voor jou handig denk ik.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
Ben ik weer :D

Ik heb bovenstaand probleem nog steeds niet opgelost. Ik kan in een enkel rapport dus prima de datum zelf laten kiezen. Ik gebruik alleen rapporten met 1 hoofdrapport en dan 7 subrapporten. Als ik hierbij de datum wil laten kiezen en ik zet in alle 8 rapporten:

WHERE dsluiting between [kies hier uw begindatum] AND [kies hier uw einddatum]

dan vraagt hij wel om de datum, alleen moet ik hem dan 8 keer invullen en dat is geen doen! Weet iemand hier een oplossing voor? Kan ik niet iets in het rapport zelf zetten (programmacode?) wat dit probleem oplost en waardoor hij dus maar 1 keer om de datum vraagt??

Zwippie heeft het over iets in de klik event van een knop zetten, waar moet dat dan precies staan?

Dit is het huidige klikevent van de knop die het rapport opent:

Private Sub Knop3_Click()
On Error GoTo Err_Knop3_Click

Dim stDocName As String

stDocName = "10 Algemene informatie"
DoCmd.OpenReport stDocName, acPreview

Exit_Knop3_Click:
Exit Sub

Err_Knop3_Click:
MsgBox Err.Description
Resume Exit_Knop3_Click

End Sub

Waar zou dan iets tussen moeten????

Ik hoop dat jullie een beetje begrijpen wat mijn probleem is en dat iemand me kan helpen! Bij voorbaat dank!!

Sup


  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
Is er niemand die hier een oplossing voor weet?? Of is het gewoon niet mogelijk?

Sup


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Harrie21 schreef op dinsdag 07 december 2004 @ 09:28:
Zwippie heeft het over iets in de klik event van een knop zetten, waar moet dat dan precies staan?
Als ik doorborduur op je bovenstaande code, dan wordt het dit:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub Knop3_Click()
On Error GoTo Err_Knop3_Click

   Dim stDocName As String
   Dim dStart as Date, dEinde as Date
   Dim sWhere as String

   stDocName = "10 Algemene informatie"
   
  ' Bepaal start en einddatum en maak een WHERE instructie
   dStart = InputBox("Wat is de begindatum?")
   dEinde = InputBox("Wat is de einddatum?")
   sWhere = "[dsluiting] BETWEEN " & dStart & " AND " & dEinde

   ' Open het rapport
   DoCmd.OpenReport stDocName, acPreview, , sWhere

   ' Je kunt nu meerdere rapporten openen met dezelfde WHERE component in sWhere
   stDocName = "11 Specifieke informatie"
   DoCmd.OpenReport stDocName, acPreview, , sWhere

Exit_Knop3_Click:
   Exit Sub

Err_Knop3_Click:
   MsgBox Err.Description
   Resume Exit_Knop3_Click

End Sub

Dit ter verduidelijking, want je geeft aan dat je 1 rapport met 7 sub-rapporten(!) hebt, en wat ik in de code laat zien is het openen van 2 aparte rapporten.

Kijk nog eens of je wel echt 7 subrapporten in 1 rapport wilt hebben, of dat je het geheel ook als losse rapporten zonder subs kan printen, dan kun je in ieder geval de bovenstaande methode gebruiken.

Als je nu 7 verschillende subrapporten in 1 rapport moet gebruiken, dan zou ik eerst gaan kijken of dat niet anders kan! ;) Ik wil je wel helpen met de subraporten, maar nu is mn tijd eerst op.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
Doe je netjes zwippie.

Maar goed, ik moet haast wel meerdere rapporten in 1 rapport gebruiken en zal je proberen uit te leggen waarom. De databse die ik aan het schrijven ben (voor stage) wordt door een soort advocatenkantoor gebruikt. Ze opereren daarbij landelijk en beschikken over meerdere vestigingen. Deze databse is specifiek voor de afgeronde dossiers, voordat ze worden gearchiveerd wordt een deel van de informatie in de database opgeslagen om daar na verloop van tijd informatie uit te halen.

Deze informatie gaat bijvoorbeeld over elke vestiging, tegenpartij, medewerker of provincie. Als ik provincie als voorbeeld neem dan heb ik op dit moment dus per provincie een blad met daarop alle informatie over die provincie (1 hoofd met 7 subrapporten). Dit moet eigenlijk wel zo blijven, alleen krijg ik de datum dus niet zo dat ik die zelf kan kiezen zodat hij dat meteen voor alle subrapporten ook doet. Ik kan wel gewoon voor elk rapport een jaar terugrekenen (dan zet ik die WHERE regel in elke querrie) maar met datum kiezen moet je dus 8 keer invullen.

Ik heb jouw bovenstaande code geprobeerd en als ik die invul dan vraagt hij naast de begindatum en einddatum ook om dsluiting in te vullen. En dit is dus eigenlijk niet de bedoeling omdfat dit juist de datum is die tussen beide moet liggen!

Hoop dat iemand dit snapt en zwippie in ieder geval bedankt voor de hulp!

Sup


  • Harrie21
  • Registratie: September 2004
  • Laatst online: 19-12-2024
??? :?

[ Voor 29% gewijzigd door Harrie21 op 08-12-2004 15:38 ]

Sup

Pagina: 1