Velden conditioneel invullen

Status
Niet open voor verdere reacties.

huizemeul

Gebruiker
Lid geworden
17 mrt 2013
Berichten
105
Ben bezig met een database in Access.

Heb kruistabelquery's en rapporten aangemaakt.
Bankrekening en Contant.
Beginnende met Catagorie, Relatienaam en maanden

Hoe voorkom ik dat:
Als er met de bank wordt betaald in Contant geen Catagorie en Relatienaam wordt weergeven.
Dit geldt natuurlijk ook als ik contant hebt betaald dit niet wordt vermeld in Bankrekening.
Deze velden moeten dan leeg blijven.

Heb als voorbeeld database Access meegestuurd.
Waarschijnlijk bij creteria een keuze opgeven.
Maar ik weet niet hoe?

Huizemeul
 

Bijlagen

Beste huizemeul,
ik heb de titel van uw vraag aangepast om beter overeen te komen met de vraag.

succes verder :thumb:
 
Als ik me niet vergis (heb je laatste db nog niet gezien) heb je verschillende velden voor de verschillende bedragen. Niet doen; gebruik één veld voor het bedrag, en één keuzelijst om het soort betaling aan te geven. Je tabel is anders niet genormaliseerd, en gaat je vroeg of laat (eigenlijk nu al) problemen opleveren.
 
Beste

De db zit bij de nieuwe aanvraag.

Kun je mij daarmee helpen.
Ik begrijp enigszins dat het problemen kan gaan opleveren.

Zou niet weten hoe. Graag je hulp nogmaals in deze.

Gr. Huizemeul
 
Ik begrijp enigszins dat het problemen kan gaan opleveren.
Zou niet weten hoe.
Je spreekt jezelf een beetje tegen nu :). In een database wil je gegevens opslaan, en daar bestaan logische regels voor. De meest elementaire vorm van normaliseren noemen we de eerste normaalvorm (1NF). Daarbij kijk je naar de volgende aspecten:

• Een tabel is de representatie van een 'ding' uit het systeem dat je maakt. Bijvoorbeeld een bestelling, een klant, een contactmoment, een product, etc.
• Elke rij in de tabel is een uniek exemplaar van dat 'ding'. Een rij vertegenwoordigt bijvoorbeeld 1 bestelling, 1 klant, 1 contactmoment, 1 product, etc.
• Elk veld bevat maar één waarde. Een adres bijvoorbeeld hoor je op te slaan in aparte velden voor de straatnaam, het huisnummer en de huisnummerextensie.
• Elke tabel heeft een primaire sleutel: een zo klein mogelijk aantal velden dat een rij (record) uniek identificeert.

Je tabellen voldoen redelijk aan de 1NF. De tweede normaalvorm (2NF) gaat hier op verder; nu gaan we redundante (herhalende) gegevens verwijderen.

• De database voldoet aan alle regels van de eerste normaalvorm.
• Zo min mogelijk gegevens worden dubbel opgeslagen in de database.
• De velden die geen primaire sleutel zijn, zijn afhankelijk van de primaire sleutel.

En hier gaat jou tabel dus de teil in, want de valutavelden voldoen niet aan de 2 nieuwe punten. Om te beginnen: ze vertegenwoordigen allemaal hetzelfde object: een bedrag dat betaald of ontvangen wordt. Alleen heb jij daar meerdere velden voor gemaakt, en dat is dus in strijd met de 2NF. En dat levert als onmogelijke constructie op dat één betaling in meerdere velden tegelijk kan worden opgeslagen; er is niemand die je daarbij tegenhoudt. Ik kom dat ook (zeker binnen het forum) tegen bij mensen die in één tabel zowel een datumveld, een jaar en een maand zetten. Met als resultaat dat je de datum 12-6-2015 kunt invoeren en tegelijk als jaar 2014 en als maand 11. Wat, op basis van de datum dus absoluut niet zou moeten mogen! Ja maar, hoor je dan, ik wil kunnen filteren op jaar en maand! Snap ik, maar regel dat in een query!

En dat is dus de reden waarom je het niet op die manier moet doen. Bovendien zit je met je berekeningen straks ook enorm te klootviolen omdat je die berekeningen op meerdere velden moet maken i.p.v. op één veld. Kortom: bezint eer ge zo door gaat, want het is de verkeerde weg :).
 
Beste

Heb de begin DB opnieuw gemaakt.

Gaarne nazien of dit is zoals het hoort.
Ik zou hem wel willen zoals het moet!!
Graag hoor ik of dit de goede basis is of dat er bog wat meer moet veranderen

Gr. Huizemeul
 

Bijlagen

Gaarne nazien of dit is zoals het hoort.
Ik zou hem wel willen zoals het moet!!
Ik mag mezelf graag als autoriteit naar voren schuiven, en zolang ik niet word tegengesproken ben ik dat natuurlijk ook, maar je moet het belang van regels niet groter maken dan het is. Regels zijn richtlijnen die helpen om je db beter te laten werken, meer niet. Als jij een naar jouw idee perfect werkend systeem hebt gemaakt dat spot met alle regels, dan is dat voor jou de oplossing. Regels of niet :).

Dat gezegd hebbende: je bent wat mij betreft op de goede weg, want dit is veel meer de manier waarop ik het ook zou doen. Het enige waar ik nog mee zit is het veld [Omschrijving] in de tabel [Relaties]. Daar zet je nu producten in, en ik vraag me af hoe je dat gaat oplossen als je ooit besluit om bij de Plusminus behalve een Taart ook nog een biefstukje te kopen... Een apart record maken is niet logisch, maar nu wel noodzakelijk. Feitelijk hebben we het dan ook weer over normaliseren. Je zou dus een aparte tabel moeten hebben waarin je producten koppelt aan relaties. Op die manier kun je bij de Plusminus een oneindig aantal producten kopen (vinden ze vast niet vervelend) en je zou ook nog eens kunnen besluiten om die taart bij de HA te kopen.
Kortom: een aparte tabel producten, en een aparte tabel Relatie_Product zou niet misstaan :).
 
Beste

Van mij mag je en ben je de autoriteit.:d
Ik ben beginneling dus alles is beter toch!

Heb wat aanpassingen gemaakt. De relatie is misschien? verkeerd.
Als je nu nieuwe records invult gebeurt er niets met tblProducten en tblRelaties_Producten.

Zou hem gewoon perfect willen hebben.
Blijft rptINVOER zoals hij is. (Heb veld Omschrijving veranderd in Producten.

Gr.Huizemeul
 

Bijlagen

Beste

Heb wat aanpassingen gemaakt in mijn db.
Weet niet of de vraagstelling in de goede categorie valt?

Nu wil ik graag met frmINVOER_Maand met invoervakken Mutatiesoort en Maand
een rapport openen/maken rptINVOER_Maand waarin de Mutatiesoort en de Maand worden weergeven.

Heb wat liggen rommelen met query's die nu werken maar dan krijg ik er 4 x 12.( Is wel erg veel)

Eigenlijk zou het moeten werken zoals Datumbereik?

Zou hier naar gekeken kunnen worden en helpen met de VBA.

Gr.Huizemeul
 

Bijlagen

Ik wil je niet gelijk ontmoedigen, maar ik mis nog een extra filtermogelijkheid... Filteren op maand is prima, maar zoals je weet komen de maanden nog wel eens terug; doorgaans bij elk volgend jaar :). Dus met de huidige filtering gaat hij de maanden alleen totaliseren op basis van die maanden. Dus als je data hebt van 3 jaar, dan loopt dat snel op. Ik zou er dus op zijn minst ook een jaartal selectie bij zetten, en de query daar op filteren.
 
Beste

Heb de qJanuari_betaalrekening en het frmINVOER_Maand aangepast met het jaar erbij.
Heb ik nu alle zoek mogelijkheden?

Hoe kun je dit in VBA zetten voor een goed rapport!

Gr. Huizemeul
 

Bijlagen

Beste

Heb ook het Rapport rptINVOER_Maand aangepast.

Heb ook in frmINVOER_Maand een VBA aangemaakt zover als ik het dacht.

Nu werkt het wel maar hij blijft alleen bankrekening geven.
De filter is bij mij niet goed denk ik.

Kun je er naar kijken

Gr. Huizemeul
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan