rapport op basis van drie query's

Status
Niet open voor verdere reacties.

Koenie

Gebruiker
Lid geworden
14 mei 2004
Berichten
312
Hoi,

Ik kom er niet uit en heb even "snel" een klein voorbeeldje gemaakt omdat het orgineel vol zit met vertrouwelijke gegevens.

Wat wil ik;

In het bijgevoegde dbtje vinden jullie een aantal query's.
Op basis van deze query's zijn er rapporten per query gemaakt (A;B;C)
Per rapport worden er zaken opgeteld.
Ik wil nu een totaal rapport maken van A;B en C samen zodat er een totaal overzicht van de opgetelde zaken uitkomt.

Alles in een samenvoeg query lukt mij om de één of andere reden niet.

Is er iemand die mij uit de brand kan helpen????

alvast bedankt

Monique
 

Bijlagen

Samenvoegquery in SQL weergave:

Code:
SELECT DatePart("m",[Datum]) AS Maand, Format([Datum],"mmmm") AS MaandNaam, [tbl A].Deur, [tbl A].Raam, [tbl A].Licht, Count(*) AS Aantal
FROM [tbl datum] INNER JOIN [tbl A] ON [tbl datum].DatumID = [tbl A].DatumID
WHERE DatePart("m",[Datum])=[geef maand in]
GROUP BY DatePart("m",[Datum]), Format([Datum],"mmmm"), [tbl A].Deur, [tbl A].Raam, [tbl A].Licht
UNION
SELECT DatePart("m",[Datum]) AS Maand, Format([Datum],"mmmm") AS MaandNaam, [tbl A].Deur, [tbl A].Raam, [tbl A].Licht, Count(*) AS Aantal
FROM [tbl datum] INNER JOIN [tbl A] ON [tbl datum].DatumID = [tbl A].DatumID
WHERE DatePart("m",[Datum])=[geef maand in]
GROUP BY DatePart("m",[Datum]), Format([Datum],"mmmm"), [tbl A].Deur, [tbl A].Raam, [tbl A].Licht
UNION
SELECT DatePart("m",[Datum]) AS Maand, Format([Datum],"mmmm") AS MaandNaam, [tbl A].Deur, [tbl A].Raam, [tbl A].Licht, Count(*) AS Aantal
FROM [tbl datum] INNER JOIN [tbl A] ON [tbl datum].DatumID = [tbl A].DatumID
WHERE DatePart("m",[Datum])=[geef maand in]
GROUP BY DatePart("m",[Datum]), Format([Datum],"mmmm"), [tbl A].Deur, [tbl A].Raam, [tbl A].Licht

Query opslaan.
Rapport baseren op de query.

Tardis
 
Eerst maar even een heel onnozele vraag: waarom drie aparte tabellen? Als ik het zo bekijk, heb je drie keer dezelfde tabel, met een andere naam. Dat is geen goede basis voor een database; ik zou eerst alles in één db onder brengen, en er bijvoorbeeld een veld Categorie bij maken voor de A, B en C codes. Dat maakt het rapport ook een stuk makkelijker...
 
Hoi OctaFish,

Onnozele vragen bestaan niet.:P
Kijken of ik een antwoord kan geven op je vraag;

waarom het zo opgebouwd is kan ik je niet vertellen, omdat ik het dbtje overgenomen heb van een vertrokken collega.
Ik zou ook zo 123 niet weten hoe ik dit nu, zonder verlies van gegevens, zou moeten veranderen.
zoals aangegeven in mijn vraagstellling heb ik even een voorbeeldje gemaakt omdat het orgineel vol zit met vertrouwelijke info.

In het orgineel worden een aantal werkzaamheden per afdeling bijgehouden.
Deze handeling zijn per afdeling hetzelfde en er moet per maand een rapport naar elke afdeling afzonderlijk worden gestuurd.
In dit geval worden er dus 11 rapporten naar 11 afdelingen gestuurd.
Voor de overkoepelende afdeling moet er nu een verzamelrapport komen waarop alle afdelingen met het aantal verrichte handelingen per afdeling vermeld is.
Al tikkend denk ik ook dat de volgende stap wordt dat alle handelingen bij elkaar opgeteld moeten worden, maar dat is fase 3.

als jij een andere opbouw weet, en je zou die aan mij wereldkundig willen maken, dan houd ik mij aanbevolen.

Tardis,
Ik ga hier alvast even mee stoeien.

Beiden alvast bedankt.

Monique
 
Als je meerdere tabellen hebt met dezelfde gegevenstructuur zou ik die idd proberen samen te voegen.
In theorie is dat goed mogelijk.
Of dat praktisch haalbaar is hangt helemaal af van:

- de complexiteit van de gegevensstructuur
- kennis
- beschikbare capaciteit/tijd

Voeg anders even een je werkbestand bij.
Verwijder vertrouwelijke gegevens.
Voeg wel even testgegevens toe voor een paar afdelingen (bijv. 3 afdelingen met werkzaamheden).

Tardis
 
Het samenvoegen op basis van de drie tabellen zoals je die hebt bijgevoegd, is relatief simpel. Om te beginnen maak je een twee nieuwe tabellen; een tabel met Afdelingen, en een waarin je de losse tabellen gaat 'verzamelen'. Daar kun je de eerste tabel van de serie voor gebruiken, want die gaat er toch in, dus daar maak je een volledige kopie van. Vervolgens voeg je daar een veld aan toe. Omdat je het over Afdelingen hebt, zou ik zeggen: een numeriek veld AfdelingID. Dat veld moet uiteraard gevuld, en dat doe je met een Bijwerkquery. Je geeft het veld AfdelingID dan bijvoorbeeld de waarde 1. In de tabel Afdelingen voeg je uiteraard dan ook een record toe met de Numerieke waarde 1, en een veld met de afdelingsnaam.
Voor de overige tabellen gebruik je een Toevoegquery, waarin je steeds één tabel als gegevens tabel gebruikt, en waarbij je het veld AfdelingID steeds vult met een volgend afdelingsID. Omdat alle tabellen dezelfde structuur hebben, gaat dat vrij makkelijk. Wat ik zelf doe: als ik de toevoegquery heb gemaakt, en de eerste keer heb uitgevoerd, voeg ik de volgende tabel toe aan het query-raster. Vervolgens verander ik in de regel Tabel onder de veldnamen de tabel naar de tweede tabel. Als dat klaar is, verwijder ik de eerste tabel. Omdat alle veldnamen hetzelfde zijn, is alles gelijk goed gekoppeld aan de doeltabel. Als laatste stap verhoog je het nummer AfdelingID, en daarna voeg je de nieuwe records toe. Waarna het verhaal zich herhaalt: nieuwe tabel toevoegen, brontabel voor de tabel veranderen, afdelingID veranderen, vorige tabel weg en query uitvoeren. En zo door, tot je ze allemaal gehad hebt.
Houd wel bij welk nummer bij welke afdeling hoort, want dat moet uiteraard ook kloppen. Voorzichtigheidshalve zou ik dan ook eerst de tabel Afdelingen in orde maken zodat je weet welke nummers je moet gebruiken in de totaaltabel.
Ik zou zeggen: probeer het eens uit; als je voor alles nieuwe tabellen maakt, kun je weinig verkeerd doen... En voor de zekerheid maak je uiteraard eerst een backup van de db!
 
Tardis,

Ik ben nu een paar dagen roostervrij en kan dus niet bij het dbtje.
Zaterdag ben ik weer op het werk.

Zag gisteravond in de laatste versie van het dbtje dat er nu ineens gesproken wordt over bouwdelen ipv afdelingen, maar dat mag de pret niet drukken.

Ik reageer zaterdag weer als ik op het werk ben.

Monique
 
Het samenvoegen op basis van de drie tabellen zoals je die hebt bijgevoegd, is relatief simpel.

Klopt.
Echter is de praktijk vaak dat je te masken hebt met een relationele gegevenstructuur.
Dan wordt het samenvoegen van tabellen een ander verhaal.
Kortom, het is niet altijd zo simpel als jij het voorstelt ;)

Tardis
 
Hoi Tardis,

zoals afgesproken zou ik vandaag reageren.
Ik heb het dbtje helemaal leeg gehaald en teruggebracht naar 4 ipv 11 bouwdelen,maar dan nog krijg ik het niet kleiner als 175 kb.
Ik kan het dbtje dus niet uploaden.

Monique
 
Als je in de tips kijkt, dan kan je zien hoe je een db met Winrar kunt splitsen in brokken van 100kb. En die kun je wel uploaden.
 
Hoi,

Het is gelukt en hier is dus het dbtje.
De algemene zaken heb ik laten staan, de vertrouwelijke zaken heb ik verwijderd.
Nog even mijn vraag;
Van elk bouwdeel wordt per maand een rapport uitgeprint.
Dit rapport wordt naar elke leidinggevende gestuurd.
Voor de overkoepelende afdeling moet er nu een verzamelrapport komen.
Dit lukt mij dus wel per bouwdeel (zie query totalen bouwdeel D), maar niet één rapport met alle bouwdelen daarop vermeld.

Hoop dat jullie me verder kunnen helpen.
 

Bijlagen

Laatst bewerkt:
Ik heb om te beginnen een kopie gemaakt van de tabel [tblinvoergegevens bouwdeel A]. Aan deze tabel is een veld toegevoegd, [Bouwdeel]. Met een Bijwerkquery wordt daar vervolgens de letter [A] in gezet, om het eerste bouwdeel te benoemen. Deze stappen kun je ook in één keer doen met een Tabelmaak query die ook in de db zit (00 - tblBouwdelen maken). Deze tabelmaakquery heeft als nadeel, dat de Ja/Nee velden hun opmaak verliezen; je hebt dan geen selectievakjes meer in de gegevensweergave. Daarom dat ik de iets omslachtigere manier gebruik van het kopieëren van de eerste tabel, en die bijwerken.

De verrvolgqueries [02 - qBouwdelen - Bouwdeel C Toevoegen] t/m [04 - qBouwdelen - Bouwdeel O Toevoegen] kun je vervolgens gebruiken om de overige tabellen toe te voegen aan de nieuwe hoofdtabel.
In die toevoegqueries zit een check die controleert of je de records niet meer dan één keer toevoegt, want het toevoegen mag uiteraard maar één keer gebeuren.
Het toevoegen van andere tabellen, en dus ook extra toevoegqueries, is relatief eenvoudig. Om te beginnen open je één van de toevoegqueries in Ontwerpweergave, en sla je hem op onder een nieuwe naam. Daarna voeg je de nieuwe tabel toe aan het tabelraster. Trek je niks aan van de relatielijnen tussen de tabellen... Verander in één van de velden de tabelnaam naar de nieuw toegevoegde tabel. Druk daarna op <Ctrl>+<C> om deze naam te kopieëren, en klik daarna steeds op --> om naar het volgende veld te gaan, en op <Ctrl>+<V> om de tabelnaam te plakken. Als je alle tabelnamen hebt aangepast, kun je de oorspronkelijke tabel verwijderen. Als het goed is, heb je nog steeds dezelfde velden in het raster staan, omdat alle velden nu uit de nieuwe tabel worden gehaald. Zou je eerst de oude tabel hebben verwijderd, en daarna de nieuwe tabel hebben toegevoegd, dan zou je gezien hebben dat alle velden ook worden verwijderd zodra je de tabel weghaalt. En dat voegt dan ineens een hoop werk toe aan de nieuwe query, vandaar dat ik eerst de nieuwe tabel toevoeg, vervolgens de velden aanpas en daarna de oude tabel verwijder.
Je kunt de query vervolgens in de Gegevensweergave bekijken om te zien of en hoeveel records er gaan worden toegevoegd. Als je de query vervolgens uitvoert, en daarna opnieuw de Gegevensweergave bekijkt, zou de recordset leeg moeten blijven, omdat je immers alle records al één keer hebt toegevoegd.
Ik zou zeggen: bekijk het eens, en probeer het eens uit in (een kopie van) je eigen db...
Overigens heb ik in de overzicht queries een kleine aanpassing gemaakt: als je bij het invoerscherm van het maandnummer niks invult, krijg je nu alle records te zien. Uiteraard kun je nog steeds de records van een bepaalde maand bekijken. Doordat ik de plaatjes uit de formulieren heb gehaald, past het geheel ook makkelijk in één bestand ;)
 
Hoi,

Ben vannacht lekker aan het stoeien geweest en het is mij gelukt.
bij deze hartstikke bedankt voor de hulp
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan