[MsAccess] kruistabel met lege maanden

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • AdB
  • Registratie: Oktober 2003
  • Laatst online: 24-04 13:06
Ik heb gezocht, weinig gevonden, maar er moeten meer mensen tegen onderstaand probleem zijn aangelopen.

Ik heb een rapport gemaakt op een draaitabel / kruistabel in Access.
In de kolommen wil ik de maanden tonen, in de rijen de werknemers (in dit geval artsen), waardes zijn aantallen poli's. Oftewel: op basis van de afspraakdatum bepaal je de maand en toon je bijvoorbeeld het aantal poli's per maand.
zie voorbeeld
jan feb mrt apr
arts A
arts B

Op dit moment is juli nog niet geweest, die kolom ontbreekt dus nog in de gegevens en in de draaitabel. Als ik de maand juli dus opneem in het Access rapport crasht het e.e.a. begrijpelijk, omdat de kolom met maand 7 ontbreekt in de kruistabel query.
Ik kan geen extra gegevens toevoegen om fictief af te dwingen dat maand 7, 8, 9, etc. voorkomt. Ik haal de gegevens op dmv ODBC. Ik kan hooguit de gegevens van 1 jaar geleden tonen, maar dat vind ik niet kloppen (nogal verwarrend om juli 2007 te tonen in een rapport dat over 2008 gaat).

Hoe kan ik zonder ingewikkeld VBA toch de kruistabel de aantallen laten rapporteren voor maanden die nog niet geweest zijn? Deze aantallen moeten in dit geval 0 zijn.
Doordat deze maanden nu dan wel gevuld zijn, crasht mijn rapport niet.

Iemand simpele ideeen?

AdB


Acties:
  • 0 Henk 'm!

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 01-04 17:01
in een tijdelijketabel de gegevens van 1 jaar noteren (bijv 2008) en dan voor de maanden die nog moeten komen 0-en toevoegen.

Houdoe


Acties:
  • 0 Henk 'm!

  • JJvG
  • Registratie: Juli 2003
  • Laatst online: 25-04 09:26
Ik heb redelijk wat met Access gewerkt, maar niet zo heel veel met kruistabellen. Volgens mij zijn er twee opties die je beter zelf in detail uit kunt zoek (omdat ik je database niet in detail ken):
- Probeer in plaats van een INNER JOIN (standaard) een LEFT of RIGHT (OUTER) JOIN. Dat wil zeggen: van 1 tabel zijn alle waarden verplicht (de maanden) en van de andere tabel alleen de waarde tonen, indien van toepassing (de data(=datums) bij de artsen).
- Misschien dat je op kan geven in de query dat lege kolommen of Null waarden ook getoond mogen/moeten worden. Dit zul je even uit moeten zoeken.

Succes.

Acties:
  • 0 Henk 'm!

  • AdB
  • Registratie: Oktober 2003
  • Laatst online: 24-04 13:06
Hoi JJvG. Dank voor de tips, maar die werken niet. Het probleem is dat ik in een query vooraf de maanden bepaal van de verschillende activiteiten. In de kruistabel worden simpelweg de aantallen per maand getoond. Omdat juli / aug bijvoorbeeld nog geen activiteiten zijn geweest, ontbreekt de kolom met de maand juli, etc.. Access gaat nogal lastig om met kolommen die er niet zijn (dynamische rapporten ofzo). In het rapport dien je te definieren dat uit query x kolomnaam 7 (juli) opgehaald dient te worden. Deze is niet zozeer leeg, deze kolom bestaat simpelweg niet.
Left / right join werkt simpelweg niet omdat de kolommen niet bestaan en je onherroepelijk een foutmelding krijgt. Is het niet in je rapport dan is het wel in een query met de leftjoin. Ook IIF() statements werken m.i. niet bij kolommen die simpelweg niet bestaan. Access dwingt volgens mij simpelweg af dat de kolom wel bestaat.

Witte: dank. Ik had hier ook al aan zitten denken. Op dit moment maak ik een tijdelijke tabel aan waar ik fictieve (toekomstige) data voor de ontbrekende maanden via een macrootje aan toevoeg.
Dit werkt prima. Ik wilde de gebruikers niet belasten met de waarschuwings meldingen van access: weet u zeker dat u de tabel wilt verwijderen, weet u zeker dat u X records wilt toevoegen, etc.
Als iemand weet hoe je deze waarschuwing kunt onderdrukken, graag tips!. Ook dat kan ik trouwens doen met een macrootje

AdB


Acties:
  • 0 Henk 'm!

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 01-04 17:01
AdB schreef op dinsdag 17 juni 2008 @ 10:22:
Witte: dank. Ik had hier ook al aan zitten denken. Op dit moment maak ik een tijdelijke tabel aan waar ik fictieve (toekomstige) data voor de ontbrekende maanden via een macrootje aan toevoeg.
Dit werkt prima. Ik wilde de gebruikers niet belasten met de waarschuwings meldingen van access: weet u zeker dat u de tabel wilt verwijderen, weet u zeker dat u X records wilt toevoegen, etc.
Als iemand weet hoe je deze waarschuwing kunt onderdrukken, graag tips!
Extra -> Opties -> Bewerken / Zoeken en dan bij 'Bevestigen' de drie vinkjes uitzetten.
Verder kan je bij Extra -> Macro -> Beveiliging deze op 'Laag' zetten. Alleen voert je Access dan wel ongevraagd iedere macro uit.

Overigens kun je beter de dingen die je met een macro doet in VBA doen. Je hebt dan meer controle en is bovendien sneller.

[ Voor 7% gewijzigd door Witte op 17-06-2008 12:26 ]

Houdoe


Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 09:54
Hier liep ik onlangs ook tegen aan. Ik heb het alsvolgt opgelost:
- de reguliere kruistabel (ik noem 'm even crosstab_1) gemaakt waardoor er wat maanden ontbraken
- een tabel (ik noem 'm even tbl_months) met alle maanden gemaakt (jan, feb, mar, apr, mei, jun, jul, aug, sep, okt, nov, dec)
- een nieuwe query gemaakt met daarin tbl_months en crosstab_1 (een inner join); om de maandnamen weer te geven gebruik je het veld uit tbl_months, voor de rest allemaal uit crosstab_1.

Acties:
  • 0 Henk 'm!

  • Loenhoet
  • Registratie: Augustus 2005
  • Laatst online: 25-05-2023
AdB schreef op dinsdag 17 juni 2008 @ 10:22:
...

Ik wilde de gebruikers niet belasten met de waarschuwings meldingen van access: weet u zeker dat u de tabel wilt verwijderen, weet u zeker dat u X records wilt toevoegen, etc.
Als iemand weet hoe je deze waarschuwing kunt onderdrukken, graag tips!. Ook dat kan ik trouwens doen met een macrootje
Ik had dit opgelost met de volgende code. Ik ga er hier even vanuit dat je de queries op deze manier aanroept.

SQL:
1
2
3
DoCmd.SetWarnings (False)
DoCmd.RunSQL ("SELECT * FROM TABLE WHERE ID = 1")
DoCmd.SetWarnings (True)
Pagina: 1