Rapport samengesteld uit 2 tabellen, tabel 2 geen gegevens, hoe toch rapport tabel 1

  • Onderwerp starter Onderwerp starter Johgs
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Johgs

Gebruiker
Lid geworden
19 mei 2011
Berichten
340
Ik genereer een rapport dat gegevens bevat uit 2 tabellen, de tabellen zijn gekoppeld via identiek Id.
Tabel 2 bevat echter niet in alle gevallen ook gegevens, gevolg is dat er geen Id is te vinden om te koppelen en het rapport leeg blijft.

Hoe kan ik toch een rapport krijgen dat wel de gegevens uit tabel 1 geeft en de velden voor tabel 2 leeg laat?

Tabel 2 is een aanvulling op tabel 1 en verder identiek. Omdat er nogal wat statistiek in zit, is tabel 2 gemaakt door tabel 1 te kopiëren, door ook alle andere rapporten/formulieren te kopiëren heb ik verder wat ik wil met minimaal werk. (gegevens tabel 1 en tabel, alhoewel gegevens over zelfde Id, worden los van elkaar beoordeeld.)
Tabel 1 uitbreiden met de gegevens van tabel 2 was veel meer werk geweest (veel formules met 10 veldnamen er in e.d.)
 
Dat riekt als een heel slecht genormaliseerde database; ik kan mij geen enkele situatie voorstellen waarin ik een gekoppelde identieke kopie van een tabel nodig zou hebben. En dan ook nog eens met formules? Die horen al helemaal niet in een tabel thuis, maar in queries.
Ik zou dis eerst eens met een goede borrel erbij naar het FO kijken.
 
De formules zitten in het rapport, niet in de tabel.
En tsja, soms bouw je iets dat een jaar gebruikt wordt en dan komen er nieuwe regels bij.
Tabel 1 bevat 10 metingen, voorheen was dat voldoende. Nu moeten er 10 aanvullende metingen worden gedaan als er maximaal 3 van de 10 metingen een te hoge waarde geven.
In het oorspronkelijke rapport waar het hier om gaat, moet nu behalve de 10 oorspronkelijke metingen ook de 10 nieuwe bevatten. Tot zover werkt alles prima (en gestructureerd ;-) ). Ook kan ik zowel op de tabel 1 metigen als ook op de tabel 2 metingen alle statistiek loslaten.
Helaas zijn er ook situaties (meer dan 3 te hoge waarden in tabel 1) waarbij direct een maatregel wordt genomen waarbij een rapport wordt gegenereerd met alleen de waarden van tabel 1 ingevuld (en tabel 2 lege velden moet aangeven, hiermee is tevens vastgelegd dat deze NIET zijn genomen).

Ik zou natuurlijk een nieuw rapport kunnen toevoegen dat alleen tabel 1 gebruikt, maar ik meen mij te herinneren dat er een mogelijkheid is lege velden (beter gezegd: niet bestaande waarden) van tabel 2 te negeren. Dan kan met 1 knop een rapport worden gegenereerd zonder kennis of tabel2 waarden heeft.
 
Laatst bewerkt:
Het mag dan in jouw ogen prima werken, gestructureerd is het zeker niet. Volgens mij kun je gewoon een tabel gebruiken waarin je per record één meting opslaat. Dan heb je niet alleen een genormaliseerde tabel, je probleem met eindige metingen is ook gelijk als sneeuw voor de zon (sneeuw: witte substantie die af en toe in de winter uit de lucht valt) verdwenen. En alle problemen met koppelingen.
 
De beide tabellen bevatten ook één meting per record (+ de nodige overige data).
In dit geval bevatten beide tabellen gelijkaardige metingen, maar het moet toch mogelijk zijn om in één rapport data uit meerdere tabellen op te nemen waarbij niet alle tabellen data aanleveren.
Vergelijk een rapport waarin NAW, aankoop en verkoop gegevens worden opgenomen.
Het kan dan prima zijn dat voor een bepaald NAW wel verkoop gegevens zijn terwijl er geen aankoop gegevens zijn. Het moet dan toch mogelijk zijn een rapport te genereren dat keurig de NAW en verkoopdata toont en de aankoopvelden gewoon leeg laat.

(Voordeel van 2 tabellen is dat de aanvullende metingen niet beperkt hoeven te blijven tot 10, ook aanvullende reeksen van 10 kunnen ingevoerd worden en toch gekoppeld blijven aan de basisreeks, maar aangezien dat volgens de "regels" niet hoeft, ga ik toch maar eens kijken hoeveel werk het is beide tabellen samen te voegen)
 
Wordt het niet eens tijd voor een voorbeeldje? Want ik lees alleen maar dat je jezelf ongelooflijk tegen spreekt. Normaal gesproken doe ik dat, maar nu doe je dat dus al zelf :)
De beide tabellen bevatten ook één meting per record (+ de nodige overige data).
En verder op:
(Voordeel van 2 tabellen is dat de aanvullende metingen niet beperkt hoeven te blijven tot 10, ook aanvullende reeksen van 10 kunnen ingevoerd worden en toch gekoppeld blijven aan de basisreeks,
Hier kan ik echt geen chocola meer van maken...
Overigens heb je natuurlijk volkomen gelijk dat er een (ook nog eens hele simpele) oplossing is. Kwestie van een Outer Join gebruiken i.p.v. een Inner join.
 
Dat heb je als je met meerdere programma's werkt. oracle gebruikt de term record weer anders, per regel met meerdere velden.
Maar de tabellen bevatten de 10 metingen en wat aanvullende gegevens omtrent de partij, op zich simpele tabelletjes.

Wat de chocola betreft, er worden 10 metingen gedaan, als daar aanleiding voor is nog eens 10, deze worden in de tabel2 opgeslagen, gekoppeld aan tabel 1 via een Id. Sommige gebruikers willen nog eens 10 metingen kwijt kunnen, dat kan nu in tabel 2, wat niet zou kunnen in tabel 1 als die ruimte biedt voor 20 metingen.

Die outer Join is inderdaad de oplossing, totaal niet aan gedacht omdat ik vanuit een bestaand rapport werkte en simpel een tabel toevoegde en niet vanuit de tabellen dacht. STOM!

Bedankt.
 
oracle gebruikt de term record weer anders, per regel met meerdere velden.
Dat heet in elke database een record :). Of een tupel. Maar één record is één set gegevens die bij elkaar één object vormen. Dus een record. In mijn ogen is elke meting daarin een eigen entiteit, dus een eigen record. En dan maakt het dus geen fluit uit of je 10 metingen doet (=10 records) of 300 (=300 records). Elke meting vindt dan op een ander tijdstip plaats, en met een eigen meetobject. Op basis van een één-op-veel koppeling met Objecten kun je dus onbeperkt metingen opslaan, en in rapportjes zetten. Metingen die bij elkaar horen kun je desnoods nog met een apart veld/code registreren zodat je daar ook op kan groeperen in je rapport.
 
Ah,
Ik moet met een Oracle dB werken voor urenverantwoording en die meldt na invoeren van bijv. 3 regels met start, eind, type werk enz. bij opslaan dat er 3 records zijn opgeslagen. Dus conform bovenstaande.
Ik beschouwde een record als de volledige set bij elkaar horende gegevens met hetzelfde Id, dus Id nr x heeft 10 metingen en wat overige gegevens zag ik als 1 record.
 
Nee, dat zag je inderdaad fout :). Elke 'rij' in een tabel is een record.
 
Dan begreep ik het toch goed maar drukte het verkeerd uit. ;-)

Thanks.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan