Gemiddelde berekenen van records met identieke velden

Status
Niet open voor verdere reacties.

mathiasw

Nieuwe gebruiker
Lid geworden
29 apr 2014
Berichten
4
Dag allemaal,

Ik ben bezig met het maken van een preventieve onderhoudsplanning in MS Access maar ondervind hierbij een probleem;

In een query "qryGemiddelde standtijden" zou ik verschillende gemiddeldes van "Standtijd (dagen)" willen berekenen. Dit moet echter geen gemiddelde zijn van alle records, enkel van de records die voldoen aan de volgende voorwaarden: ze moeten dezelfde functieplaats ("Functieplaats" moet identiek zijn) hebben en het "Auto-nummer" dat werd toegekend door Access mag enkel kleiner of gelijk zijn aan de waarde van het "Auto-nummer" waarvoor de berekening plaatsvindt.

Aangezien dit de eerste keer is dat ik werk met MS Access ben ik niet vertrouwd met het programmeren in SQL of VBA.

Ik heb reeds geprobeerd om deze bewerking uit te voeren met de DAvg-functie maar ik weet niet goed hoe ik mijn voorwaarden (identieke functieplaats en auto-nummer kleiner of gelijk aan huidige) hier moet invoeren. Dit heb ik geprobeerd maar het geeft volgens mij enkel een soort van kringverwijzing waardoor de berekening niet goed gebeurt:

Expr1: DAvg([Functieplaats];[qryGemiddelde standtijden];(([Functieplaats]=[Functieplaats]) And ([Auto-nummer]<=[Auto-nummer])))


Zouden jullie mij kunnen helpen om een oplossing te vinden of me op het juiste spoor zetten?

Met vriendelijke groeten en bij voorbaat dank,


Mathiasw
 
In ieder geval is je syntax fout, want benoemde elementen in een Database functie (en dat is DAVG) staan tussen dubbele aanhalingstekens. Jij doet dat niet. Je kunt (garantie tot de deur) deze eens proberen:
Code:
Expr1: DAvg("[Functieplaats]";"[qryGemiddelde standtijden]";"[Functieplaats]=" & [Functieplaats] & " AND [Auto-nummer]<= " & [Auto-nummer])
 
Beste Octafish,

Allereerst wil ik u bedanken voor de snelle reactie. Ik had toch nog enkele vragen over de formule die u me hier geeft:

De eerste vraag die ik heb is wat de functie is van de &-tekens? Zorgen deze tekens er voor dat [Functieplaats] vergeleken wordt met [Functieplaats] van de huidige record en dit ook bij [Auto-nummer]?

De tweede vraag die ik heb gaat over het feit dat ik #Fout krijg in de velden waar normaalgezien de uitkomst van de bewerking zou moeten staan. Wanneer ik nu op één van deze velden klik opent er een venster met de melding "Gegevenstypen komen niet overeen in de criteriumexpressie.". Zou het kunnen dat de oorzaak hiervan is dat [Functieplaats] het gegevenstype korte tekst is en [Auto-nummer] een automatische nummering is?


Met vriendelijke groeten,

Mathias
 
Ik ga er (want ik heb je db niet) uiteraard van uit dat je tabellen en gegevenstypes kloppen. Zo niet, dan zou ik dat eerst oplossen. Een Numeriek veld moet je altijd matchen met een ander numeriek veld. Nooit met en tekstveld. Dan krijg je de foutmelding die je nu ook hebt. Waarom zou je dat ook doen, identieke velden maken die niet hetzelfde gegevenstype hebben? Makes no sense... Dat zou dus je probleem al op kunnen lossen.
Je eerste vraag (waarom &?) is simpel, met het & teken stel je strings samen, meer niet. Het vergelijkingsteken (=, <=) staan er immers al.
 
Laatst bewerkt:
Het veld [Functieplaats] heeft het gegevenstype kort tekst omdat de waarde hiervan bv. 001 kan zijn maar ook 003A. Dit is nu eenmaal de nummering van de pompen en dit kan niet veranderd worden.

Aangezien [Functieplaats] met de huidige [Functieplaats] vergeleken wordt blijft dit binnen hetzelfde gegevenstype. Ook bij de vergelijking tussen beide [Auto-nummer]'s werkt men binnen hetzelfde gegevenstype (in dit geval een Auto-nummering). Kan men dan deze 2 vergelijkingen niet combineren met de AND-functie of zie ik dit verkeerd?


Mvg,

Mathias
 
Een vergelijjking vindt (doorgaans) plaats tussen 2 velden, die dan van hetzelfde gegevenstype moeten zijn. Dus 2 tekstvelden of 2 numerieke velden. Dat lijkt dus bij jou in orde te zijn. Dan zit je alleen nog met het probleem dat je een tekstveld anders filtert als een numeriek veld. Kijk je naar je code, dan zie je dat je beide velden op dezelfde manier filtert, dus ofwel één van de twee vergelijkingen is fout, of allebei. In dit geval is één van de twee niet goed. De code zou er dus zo uit moeten zien:
Code:
Expr1: DAvg("[Functieplaats]";"[qryGemiddelde standtijden]";"[Functieplaats]='" & [Functieplaats] & "' AND [Auto-nummer]<= " & [Auto-nummer])
 
Met de door u gegeven oplossing werkt de berekening, van harte bedankt!!

Mathias
 
Mag je de vraag ook op <Opgelost> zetten!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan