Problemen met DSUM

Status
Niet open voor verdere reacties.

pratpitt

Gebruiker
Lid geworden
16 aug 2010
Berichten
19
Hallo,

ik ben bezig om de formule DSUM te begrijpen en te gebruiken in mijn query. Ik gebruik access voor het verwerken van mijn financiële mutaties (boekingen in de administratie) . Hier zitten echter veel plus en min bedragen in die samen een totaalbedrag van EUR 0 laten zien. Dit is dan ook de reden dat ik deze regels eruit wil filteren. Dit wil ik met DSUM proberen alleen ik krijg steeds een foutmelding. Ik bouw de formule als volgt op:

Correctie: DSum([Realisatie bedrag];[Onderhoud Juli 2019])

Mijn idee hierbij is dat de formule op een aantal criteria de realisatie gaat optellen in tabel [onderhoud Juli 2019] zodat ik op basis van bepaalde velden (de criteria) kan vaststellen dat de realisatie 0 is en ik hem dus niet wil zien. Ik heb in voorgenoemde formule nog geen criteria ingevuld omdat ik de formule al niet werkend krijg. Maar door niks in te vullen lijkt mij dat Access in dat geval alles opteld. Als ik de query draai krijg ik de melding dat ik parameters moet opgeven voor tabel [onderhoud juli 2019]. Het lijkt dus alsof de verwijzing naar de tabel niet goed gaat en hij deze niet herkent. Kan iemand mij daarbij helpen? Het veld [Realisatie bedrag] is in ieder geval afkomstig uit de tabel [Onderhoud juli 2019].

Dank alvast!
 
Moet die puntkomma ";" niet een komma "," zijn?
 
Dfuncties zijn tekstfuncties; ze retourneren in beginsel resultaten als tekst, en je moet de parameters ook als tekst invoeren. Dat doe jij nu niet. Probeer deze eens:
Code:
Correctie: DSum("[Realisatie bedrag]";"[Onderhoud Juli 2019]")
Niet onbelangrijke tip: vermijd spaties in objectnamen. Daar heb je meer last als profijt van.
 
Dfuncties zijn tekstfuncties; ze retourneren in beginsel resultaten als tekst, en je moet de parameters ook als tekst invoeren

Klinkklare nonsens.
D functies zijn aggregatie functies.
Ze retourneren in de regel een numerieke waarde, met uitzondering van DFirst, DLast en DLookup.

Argumenten (niet: parameters) moeten op een bepaalde manier worden ingevoerd.
Dat verschilt per functie.

Tardis
 
Klinkklare nonsens. D functies zijn aggregatie functies. Ze retourneren in de regel een numerieke waarde, met uitzondering van DFirst, DLast en DLookup.
Nuancering was al nooit jouw sterkste punt. Nota bene onderschrijf je (gedeeltelijk) mijn gelijk. Ga vooral zo door!

Argumenten (niet: parameters) moeten op een bepaalde manier worden ingevoerd.Dat verschilt per functie.
En dat is dus precies wat ik zei. Al heb je gelijk: het zijn argumenten, geen parameters. Niet dat dat voor het verhaal ook maar ene moer uitmaakt.... Maar je schopt graag, dus ik ga wel gebukt staan voor je :)
 
Los van de discussie, als je in een query een som wil maken: waarom gebruik je geen totalenquery? Een domein functie in een query gebruiken is nooit een goed idee: voor elke resultaatsregel moet de query engine een complete table scan uitvoeren. Mijn suggestie: maak een totalenquery met het totaal, groepeer waar nodig en koppel deze eventueel aan jou andere query.
 
Dank! de aanpassing in de formule werkt inderdaad! Ik krijg nu de totale som van realisatie te zien. Ik probeer echter nu criteria toe te voegen om hierop de som te berekenen. Als voorbeeld: ik heb nu kostenplaats code
als veld toegevoegd om per kostenplaats de realisatie op te tellen. Vervolgens wil ik ook meer criteria toevoegen.
met onderstaande formule geeft hij echter een foutmelding:

Correctie: DSum("[Realisatie bedrag]";"[Onderhoud Juli 2019]";" [Kostenplaats code]=" & [Kostenplaats code])

Kostenplaats is een tekstveld. Wat doe ik hier fout?

Ik wil liever geen totalequery draaien omdat ik dan continu twee querys moet draaien, het liefst wil ik in één query de correcties eruit filteren.
 
Correctie: DSum("[Realisatie bedrag]";"[Onderhoud Juli 2019]";" [Kostenplaats code]=" & [Kostenplaats code])
Kostenplaats is een tekstveld. Wat doe ik hier fout?
Je geeft het zelf al aan: je filtert op een tekstveld. Dan moet je dat ook als een tekstveld behandelen.
Code:
Correctie: DSum("[Realisatie bedrag]";"[Onderhoud Juli 2019]";" [Kostenplaats code]=""" & [Kostenplaats code] & """")
Overigens zie ik niet waarom het niet met één query zou kunnen :).
 
wow top, hij werkt helemaal! Dan heb ik nog één laatste vraag. In de query heb ik nu als criteria één veld ingevoerd: Beschrijving. Dit veld is een vrij tekstveld en bevat zowel letters, leestekens spaties als getallen. Op basis van deze beschrijving wil ik graag de positieve en negatieve getallen optellen. Ik krijg echter bij het uitvoeren van de query de volgende foutmelding bij een aantal beschrijvingen:

Syntaxisfout (operator ontbreekt) in query-expressie Beschrijving ='Kuijpers02 1705010/43097 aanpassing lbk's tb'

De rode tekst is een voorbeeld van zo'n beschrijvingsveld. Ik weet niet wat de foutmelding precies betekent en met google kom ik er ook niet helemaal uit.
Om deze foutmelding niet meer te krijgen, moet ik dan mijn formule aanpassen of het 'Beschrijving' veld bewerken?

Dank weer!
 
Dit veld is een vrij tekstveld en bevat zowel letters, leestekens spaties als getallen. Op basis van deze beschrijving wil ik graag de positieve en negatieve getallen optellen.
Wat bedoel je hier mee? Met tekstvelden kun je nooit rekenen, laat staan binnen één tekst de negatieve getallen aftrekken van de positieve. Daar zul je op zijn minst losse velden voor moeten gebruiken.
Beschrijving ='Kuijpers02 1705010/43097 aanpassing lbk's tb'
Dit is dus een heel slecht voorbeeld om mee te rekenen, nog afgezien van het feit dat in jouw voorbeeld geen positieve en negatieve getallen zitten :). Dus wat wil je nu eigenlijk?
 
Oftewel ipv op kostenplaats de realisatie op te tellen, wil ik dit doen obv het veld beschrijving.
 
Laat je complete code eens zien, want ik snap het nog niet helemaal. Ik vermoed dat je de formule wilt veranderen naar:
Code:
Correctie: DSum("[Realisatie bedrag]";"[Onderhoud Juli 2019]";" [Beschrijving ]=""" & [Beschrijving] & """")
Maar zeker weten doe ik dat niet. En de voorbeeldtekst die je gebruikt, lijkt mij volslagen nutteloos om op te sommeren.
 
De code is inderdaad diegene die jij stuurt. Echter, op enkele waarden van het veld "beschrijving" geeft de query een syntaxisfout, met als voorbeeld datgeen ik in het rood gestuurd had.
Ik werk met financiële mutaties uit het grootboek. Deze mutaties hebben een kostenplaats, grootboekrekening etc en ook een beschrijving. Indien een correctie op een regel in dit grootboek wordt gemaakt dan ontstaat er een extra regel met dezelfde waarden op kostenplaats grootboekrekening etc maar dan met een negatief bedrag. Als je beide regels zou optellen zou deze dus als som EUR 0 hebben. Deze correcties wil ik eruit filteren omdat deze voor mij onjuiste informatie laat zien. Soms werkt de sleutel kostenplaats/grootboekrekening niet omdat één hiervan bijv afwijkt. Dan zou ik graag het veld "beschrijving" willen gebruiken omdat deze wel hetzelfde is en de som dus EUR 0 wordt.

Volgens mij krijg ik deze syntaxisfout omdat de beschrijving in sommige gevallen aanhalingstekens bevat, wat zou de eenvoudigste manier zijn om deze weg te krijgen binnen dezelfde query?
 
Ik snap er eerlijk gezegd steeds minder van; als twee bedragen niet mee mogen tellen omdat ze samen 0 zijn, is er toch niks aan de hand? Eerlijk gezegd snap ik niet waarom je voor deze berekening überhaupt een DSUM gebruikt... Volgens mij kan het makkelijk met een normale query worden berekend. En tabellen met de naam [Onderhoud Juli 2019] zetten bij mij ook alle nekharen recht overeind :). Maar dat staat denk ik los van je probleem. Wellicht is het handiger als je een voorbeeldje met wat dummydata meepost. Dan kunnen we beter zien wat de bedoeling is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan