query

Status
Niet open voor verdere reacties.

ManuelBeauson

Gebruiker
Lid geworden
11 dec 2014
Berichten
146
Wil een query maken op basis van de ontvangen huurgelden , heb tabel waarin de gebouwen staan vermeld , een tabel met de entiteiten van de gebouwen , een tabel met huurders en een tabel met betalingen.

Entiteit heeft id veld dat in relatie staat met het gebouw , huurder heeft een id veld dat in relatie staat met de tabel gebouwen als de tabel entiteiten als de tabel betalingen.

Toch lukt het me niet om op basis hiervan een query te makenSchermopname (26).jpg
 
Laatst bewerkt:
Je hebt een bijna onontwarbare knoop aan relaties gelegd. De vraag is natuurlijk: zijn die relaties wel nodig op deze manier? In de tabel [Betalingen] heb je een één-op-veel relatie gelegd met de tabellen [Huurder] en [Gebouwen] Implicerend dat één huurder meerdere gebouwen kan huren, en dat één gebouw meerdere huurders tegelijk kan hebben. Maar waarom zit de tabel [Entiteit] met dezelfde constructie daar tussen? Die relatie snap ik dus niet.
 
De relatie tussen betalingen en huurder is een normale relatie denk ik, je wilt toch de betalingen per huurder kunnen zien en opvolgen. De relatie gebouwen - betalingen is omwille dat ik een rapport wil maken op basis van een gebouw en de ontvangen betalingen, alleen lukt me deze nog niet. De relatie tussen gebouwen en entiteiten lijkt me ook een logische , een entiteit hangt toch aan een gebouw vast , elke gebouw heeft zijn entiteiten. De relatie tussen entiteit en huurder is misschien wel overbodig omdat ik via de relatie tussen huurder en gebouwen al kan zien wie waar huurt.

Maar hiermee is mijn probleem nog niet opgelost, hoe kan ik een rapport maken op basis van ontvangen betalingen voor gebouw X
 
De relatie tussen betalingen en huurder is een normale relatie denk ik
Klopt; een huurder doet meerdere betalingen. Dus een één-op-veel betaling tussen [tblHuurder] en [tblBetalingen] is correct.

De relatie gebouwen - betalingen is omwille dat ik een rapport wil maken op basis van een gebouw en de ontvangen betalingen
En hier ga je de fout in. Jouw constructie staat maar één huurder per gebouw toe (veld HuurderID in tabel [tblGebouwen]). Dus elk gebouw heeft maar één huurder. Ergo: als je het gebouw weet, weet je de huurder, en als je de huurder weet kun je ook de betalingen zien per gebouw. In [tblBetalingen] is het GebouwID dus totaal overbodig. En al helemaal als je hem ook nog koppelt. Database relaties zijn nu juist bedoeld om afgeleide informatie op te kunnen vragen!
Entiteiten zijn een afhankelijkheid van gebouwen, niet van huurders. Dus [tblEntiteiten] hoef je (sterker nog: mag je) alleen koppelen aan [tblGebouwen].
Overigens lijkt mij de huurprijs een eigenschap van een gebouw, en niet van een huurder. Dat veld zou je dus in [tblGebouwen] moeten zetten. En uiteraard ook in [tblBetalingen], want huurprijzen fluctueren, dus de betaling moet altijd conform de actuele prijs zijn.
 
Heb de relatie aangepast , nu krijg ik één record te zien in de query. In mijn vorige opzet had ik geen records , ik ben er al op voorruit gegaan :D

Schermopname (27).jpg
 
oke, het is gelukt. Gebouw -entiteit - bedrag betaling en datum betaling , nu zou ik deze query willen gebruiken op basis van datum , voorbeeld : ik wil zien welke betalingen in de maand januari zijn binnen gekomen voor gebouw x
 
Nu kun je gaan filteren, bijvoorbeeld op Maand. Ik kan me voorstellen dat je standaard een overzicht wilt kunnen uitdraaien op basis van de vorige maand. Stap 1 is een extra veld maken op basis van één van je datumvelden. Dat veld ziet er dan zo uit: Month([Datum Betaling]). En dat veld filter je dan op de formule Month(Date())-1.
 
zet ik dan in mijn veld datum betaling bij Criteria Month([Datum Betaling]) en bij sorteervolgorde Month(Date())-1.
 
Je rapport is neem ik aan gebaseerd op een query, en dat is altijd de beste optie.
 
hier ben ik nog niet mee , heb een extra veld aangemaakt in mijn rapport maar het besturingselement krijg ik niet correct , als ik Month(date(()-1 ingeef krijg ik een foutcode.
Dien ik bij date echt een datum in te geven, voorbeeld 01/01/2015. Had graag een rapport gemaakt op basis van vorige maand, kwartaal , half jaar en op jaar basis
 
Een rapport filteren doe je op een specifiek veld. Wil je dat op maand doen, dan moet je in de query een veld opnemen dat is gebaseerd op het datumveld. Dat veld krijgt dan de formule =Month([Factuurdatum]). Voor kwartaal kun je de formule Kwartaal: Format([Factuurdatum];'q';2). Voor jaar heb je de functie Year. Alleen voor half jaar is geen functie, dus die moet je met DateAdd oplossen. Iets als: Half Jaar: DateAdd("m";-6;[Factuurdatum])
 
Het wil maar niet lukken. Ik heb een extra veld aangemaakt in mijn tabel betalingen met de naam vervaldag . Maar hier dien ik in te geven 5de van de maand, betaling dient te gebeuren voor de 5de van de maand, maar hoe ga ik hiermee te werk. Ik dien dan al 05/01/2015 - 05/02/2015 en zo verder in te vullen wil ik kunnen filteren op deze datum.
Maar ik heb zo het gevoel dat dit niet de correct manier is.

Wanneer ik in mijn rapport een subformulier wil toevoegen, want zo denk ik dat er moet gewerkt worden. Een subformulier die dan de lijst weergeeft in de brief welke betalingen niet zijn gebeurt, of denk ik hier verkeerd
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan