Access query met voorwaarde uit ander bestand.

Status
Niet open voor verdere reacties.

Frits1969

Gebruiker
Lid geworden
29 nov 2009
Berichten
64
Hallo allemaal,

Ik probeer een query te maken waarbij ik 2 tabellen heb.
1e tabel daar toon ik het een en ander uit, en de tweede tabel zorgt er voor dat er een soort filter gebruikt wordt.
Ik heb namelijk in de tabel dagboek een bedrijfsnummer (dat komt in bijna iedere tabel terug), 2 codes, een veld dat aangeeft dat het om inkomsten of uitgaven gaat en bedrag.
In de tweede tabel heb ik naast het bedrijfsnummer ook een code (Die dus 6x in de andere tabel terug te vinden is) en een veld dat aangeeft of dat die code wel of niet gebruikt moet worden in een grafiek.

Ik dacht dit op deze manier op te lossen. Van de 1432 records die hij voor dit bedrijf geeft, moeten er 46 uit vallen. Maar ik hou er 1284 over. Ik begrijp dat niemand iets over de aantallen kan zeggen, maar misschien dat er iemand wel kan meedenken.

Code:
SELECT Dagboek.Datum, Dagboek.DebetRekA, Dagboek.CreditRekA, Sum(IIf(Dagboek.inkomsten=True,Dagboek.Bedrag*((Dagboek.BTWA/100)+1),0)) AS Inkomsten, Sum(IIf(Dagboek.inkomsten=True,0,Dagboek.Bedrag*((Dagboek.BTWA/100)+1))) AS Uitgaven
FROM (Dagboek INNER JOIN Rekeningen ON (Dagboek.DebetRekA = Rekeningen.code) AND (Dagboek.Bedrijfsnummer = Rekeningen.Bedrijfsnummer)) INNER JOIN Rekeningen AS Rekeningen_1 ON (Dagboek.CreditRekA = Rekeningen_1.code) AND (Dagboek.Bedrijfsnummer = Rekeningen_1.Bedrijfsnummer)
WHERE (((Dagboek.Bedrijfsnummer)=1) AND ((Dagboek.datum)>=#1/1/2010# And (Dagboek.datum)<=#12/31/2017#) AND ((Dagboek.inkomsten)=True Or (Dagboek.inkomsten)=False) AND ((Rekeningen.in_Grafiek)=True) AND ((Rekeningen_1.in_Grafiek)=True))
GROUP BY Dagboek.Datum, Dagboek.DebetRekA, Dagboek.CreditRekA;

Omdat de code die uitgefilterd moet worden, nu niet in de 2e kolom voor komt kan ik beginnen met de code voor alleen de eerste code kolom te gaan.
Dan ziet mijn SQL code er zo uit:

Code:
SELECT Dagboek.Datum, Dagboek.DebetRekA, Dagboek.CreditRekA, Sum(IIf(Dagboek.inkomsten=True,Dagboek.Bedrag*((Dagboek.BTWA/100)+1),0)) AS Inkomsten, Sum(IIf(Dagboek.inkomsten=True,0,Dagboek.Bedrag*((Dagboek.BTWA/100)+1))) AS Uitgaven
FROM Dagboek INNER JOIN Rekeningen ON (Dagboek.DebetRekA = Rekeningen.code) AND (Dagboek.Bedrijfsnummer = Rekeningen.Bedrijfsnummer)
WHERE (((Dagboek.Bedrijfsnummer)=1) AND ((Dagboek.datum)>=#1/1/2010# And (Dagboek.datum)<=#12/31/2017#) AND ((Dagboek.inkomsten)=True Or (Dagboek.inkomsten)=False) AND ((Rekeningen.in_Grafiek)=True))
GROUP BY Dagboek.Datum, Dagboek.DebetRekA, Dagboek.CreditRekA;

Ook hier hou ik 1284 records over. Ik snap het niet meer. Maar als er iemand een tip heeft.... Hou ik me aanbevolen.

Alvast fijne feestdagen
Frits van Leeuwen
 
Bij nader onderzoek, denk ik dat dit te maken heeft met het groeperen. Ik denk dus dat mijn code toch wel correct is, maar dat het verschil optreed door dat er gegroepeerd wordt.
Het kan natuurlijk zijn dat er iets anders niet klopt, dat hoor ik dan graag.
 
Als,je denkt dat je probleem wordt veroorzaakt door het groeperen, dan moet je dat natuurlijk niet gebruiken. Of op zijn minst uitproberen. Waarom deze vraag in het VBA forum staat en niet in het Access forum is mij nog niet geheel duidelijk en zal me nog wel tot oud en nieuw bezig houden :)
 
sorry, de reden van VBA forum is dat ik binnen VBA-Access bezig ben. Maar het werkt.
Het was inderdaad het groeperen. Inmiddels ben ik dus een stap verder en heb ik weer andere hoofdbrekers. ;-) Maar daar zal ik je niet mee lastigvallen.
Fijne jaarwisseling.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan