vraag over DCount met criteria

Status
Niet open voor verdere reacties.

tartuffe2

Gebruiker
Lid geworden
30 nov 2016
Berichten
56
Hallo

Er zijn twee tabellen in het design scherm met een relatie tussen: tabel 'ritten' en 'klanten'.

Ik tel het aantal ritten met auto nr 1: DCount("[ritnr]";"ritten";"[ritten.autosnr] =1") => ok
Dan wil ik ze tellen alleen wanneer de klant in Breda woont: DCount("[ritnr]";"ritten";"[klanten.gemeente] =""Breda""") => niet ok

Mag ik eruit concluderen dat het veld in het criteria-gedeelte één moet zijn van de vermelde tabel (hier 'ritten') en niet van een andere tabel, al heeft die een relatie mee?
Bedankt
Tartuffe
 
Mag ik eruit concluderen dat het veld in het criteria-gedeelte één moet zijn van de vermelde tabel (hier 'ritten') en niet van een andere tabel, al heeft die een relatie mee?
Nee, je moet dat concluderen :). Df-uncties werken alleen binnen de tabel waarin je ze uitvoert. Queries of anderszins gelegde relaties hebben daar niets mee te maken. Je kunt het derhalve ook korter schrijven:
Code:
DCount("[ritnr]";"ritten";"[autosnr] =1")
Ik zou overigens het gebruik van D-functies vermijden, tenzij ze absoluut nodig zijn. In een query lijkt mij dat eigenlijk maar zelden. Laat ik het zo zeggen: ik gebruik ze nooit. En ik maak er toch heel wat :).
 
Beste Octafish

Stel dat ik de verhoudingen wil weten van mijn chauffeurs (in %) over alle gereden ritten.
Ik heb dan het aantal gereden km nodig per chauffeur en het totaal aantal km. Dan deel ik de twee om de verhoudingen te hebben.
Ik doe het zo:
verh.png
Jij zegt nooit D-functies te gebruiken. Kan ik dit oplossen zonder DSum?
Bedankt.
 
Akkoord, maar dan moet je naar excel, want in access zijn die verdwenen.
 
???? Welke versie van Access gebruik jij? Ik heb ze allemaal gebruikt vanaf Access 1.1, en ze zijn er nooit uitgeweest :). Het is gewoon een query type, dat dus (ook al jaren) Kruistabel heet.
 
Ah, ok. Dat is niet hetzelfde als de vroegere draaitabellen die nu niet meer in access zitten.
Maar hoe ga je de deling doen tussen het aantal km per chauffeur en het totaal aantal km om de verhoudingen per chauffeur te krijgen?
Het aantal km per chauffeur is gemakkelijk (met functie som en group by), maar het totaal aantal km, hoe dat krijgen zonder DSum, en dan hoe de deling uitvoeren in die kruistabel?
 
Het is maar een ideetje: maar waarom zou je je tabellen (of query's) niet exporteren naar Excel. En vervolgens Excel opmaken met een draaitabel zoals jij dat wenst?
Dit kan volledig automatisch. Via VBA een nieuw Excelbestand maken... query's overzetten, en meteen met dezelfde macro de opmaak van Excel goed zetten.
Heb je het niet meer nodig, dan gooi je dat Excel bestandje gewoon weg.
 
Ah, ok. Dat is niet hetzelfde als de vroegere draaitabellen die nu niet meer in access zitten.
Nogmaals: draaitabellen zitten nog steeds in Access :). Je bent vermoedelijk in de war met de formulieren. Die zijn er inderdaad uit. Wat Luc zegt is vermoedelijk niet nodig, omdat je, zoals ik al zei, prima in Access kruis/draaitabellen kan maken. Als je er niet uit komt, moet je toch even een voorbeeldje posten :).
 
Ik denk dat we mekaar niet goed begrijpen en door elkaar 'draaitabellen' en 'kruistabellen' gebruiken (ik gebruik access 2019).
Lees dit even: https://florijn.com/ms-access/draaitabellen-in-ms-access
Niet alleen de draaitabellen maar ook de grafieken zijn uit access verdwenen. De kruistabellen zijn er nog steeds, maar ik zou niet weten hoe je daarmee mijn probleem oplost.
Ik kan dit doen maar dan zit ik vast (zonder DSum te gebruiken). Hoe het totaal aantal km krijgen en hoe de deling maken?
verh.png
Als jij verder kan?
 
Nee, we praten niet langs elkaar heen. De Draaitabel optie was bedoeld om Draaitabelgrafieken te maken, een waardeloze optie in mijn ogen. Terecht dat Microsoft dat er uit gesloopt heeft. Voor échte draaitabellen kun je inderdaad beter exporteren naar Excel (hoewel exporteren natuurlijk niet nodig is; je kunt de data gewoon linken) en in Excel je analyserapporten etc. maken. Dat is daar veel beter in.
Wat betreft je vraag: je kunt in een kruistabel één kolomkop definiëren, één waardeveld gebruiken en verschillende kolomkoppen gebruiken. Ik gebruik vaak één kolomkop voor de totalen per rij. In jouw geval: [Aantal km]. Dan zie je dus de totale hoeveelheid km's die gereden zijn, én de km. per chauffeur. En daar kan je prima mee rekenen. Wil je het totaal er apart bij hebben in de brongegevens, maak dan een extra query die je als veld definiëert met de functie SUM die dus het totaal aantal km's berekent. Wil je die aantallen per dag, dan groepeer je op dag en koppel je de query aan de datum. Maar DSUM is niet handig, zoals D-functies zelden handig zijn omdat ze nogal sloom werken. Zeker op een grotere dataset.
 
Bedankt voor jouw uitleg, maar, het zal aan mij liggen, ik weet niet welke kolomkop ik moet nemen, want alleen een kolomkop en waarde volstaat niet.
Volgens dit:
verh.png
heb ik het aantal km per chauffeur (in rijen) (als ik een gewone query neem tenminste, want de kruistabel eist een kolomkop).
Als ik 'aantal km' neem als kolomkop heb ik alle mogelijke afstanden.

Dit wil ik bereiken (ik gebruik hier wel DSum):
verh2.png
 
Ik zie nog steeds geen bestandje.... Daarnaast moet je minstens één rijkop hebben.
 
Dat zippen moet sowieso, want je kunt geen accdb of mdb bestand uploaden. Je moet er dus iets mee doen, en zippen is doorgaans de slimste oplossing. Maar ik sta écht niet te popelen om eerst een half uur lang een tabel in elkaar te timmeren en data in te kloppen. Dat vind ik toch echt de taak van TS :).
 
Je bedoelt het access bestand zelf? Zie bijlage.
Ik heb het dus opgelost met DSum. Ik denk niet dat je dat kan oplossen met één kruistabel zonder DSum te gebruiken. Als dat toch kan stel ik voor om het te laten zien om het niet eindeloos te maken.
Bedankt.Bekijk bijlage vervoer.zip
 
Zonder DSum:
Code:
SELECT naam, Sum(Ritten.[aantal km]) AS perchauff, [perchauff]/(SELECT Sum([aantal km]) FROM Ritten) AS [%]
FROM Chauffeurs INNER JOIN Ritten ON Chauffeurs.nrchauff = Ritten.nrchauff 
GROUP by naam;

Overigens heb je te weinig gegevens voor een Kruistabel, want je hebt geen Kolomkop.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan