Procentuele toename berekenen in een kruistabel

Status
Niet open voor verdere reacties.

naprius

Gebruiker
Lid geworden
25 apr 2007
Berichten
147
Ik heb een query van waaruit een kruistabel wordt gemaakt die de leveranciers kruist met 2 jaren, zoals 2009 en 2010.
In de velden staat dan het bedrag dat we dat jaar gespendeerd hebben bij die Leverancier.
Nu wil ik graag nog een kolom waarbij de procentuele toe- of afname wordt berekend tussen die 2 (of in de toekomst zelfs meer) jaren. Ik heb alleen geen flauw idee hoe ik Access duidelijk kan maken dat hij die kolommen moet vergelijken, want in de kruistabelquery staat er namelijk maar 1 kolom, nl: Expr1: Format([Order Date];"yyyy")

Ik wil er eigenlijk een kolom naast zetten die het volgende doet: 2010-2009 / 2009 * 100 %

Is dit mogelijk?

Alvast bedankt!
 
Kun je een voorbeeldje maken in 2003 format? Dat scheelt ons een hoop inklopwerk...
 
Tragisch genoeg is het uploaden van bestanden in mijn bedrijf afgeschermd. Ik kan dus geen voorbeeldje geven :(

Ik kan wel eventueel wat SQL of iets dergelijks uit de query kopiëren als je daar iets aan hebt?
 
Laatst bewerkt:
Gelukkig had ik al een voorbeeldje klaargezet; kijk maar eens of dit in de buurt komt? Het gaat dan om de query <afname_Omzet>.
 

Bijlagen

Jeetje, ik kan hem niet openen.. We werken hier nog met Access 2000. Oftewel stenen tijdperk net zoals de rest van onze configuratie.

Wellicht kun je me in de goede richting duwen d.m.v. korte uitleg? anders moet ik wachten tot ik thuis ben (daar heb ik wel fatsoenlijke apparatuur :P)

Bedankt voor de moeite iig.
 
Wij werken met 2003, en ik zou niet anders willen.... Maar ik heb 'm een stukkie gedouwngreed...
 

Bijlagen

Ik probeer nu die queries na te maken die dit jaar weergeven en vorig jaar. Echter wordt mijn orderdatum weergegeven als dd-mm-yyyy. Nu heb ik in notatie dit aangepast zodat hij alleen yyyy weergeeft in de query, maar als ik dan bij criteria Year(Date() of Year(Date()-1 zet dan geeft hij plots niets meer weer.

Ik snap in ieder geval hoe ik het zou moeten imiteren naar mijn database toe, maar ik loop tegen kleine knelpuntjes aan zoals deze.
 
Als je datum een net datumveld is, dan is het vrij simpel, en helpt het niet als je met opmaak gaat klooien. Want dat verandert alleen het uiterlijk van de datum, en niet de echte waarde. Om op jaar te filteren, moet je met de functie Year([Datumveld]) het jaartal uit de datum trekken. Eigenlijk zoals dat in het criterium ook gebeurt.
 
goed, ik heb nu bij Veld: Year([Order Date]) ingevuld. Echter krijg ik dan de volgende foutmelding: The specified field '[Order Date]' could refer to more than one table in the FROM clause of your SQL statement.

Als ik dan een bepaalde tabel specificeer in het veld Tabel geeft access: Extra ) in query expression [Purch_Rcpt_Header].[Year([Order Date])]

Misschien moet ik bij mijn baas maar eens gaan bedelen voor een cursus Access :o
 
Als je hetzelfde veld in meerdere tabellen hebt staan in een query, moet je, zeker als je expressies gaat maken, aangeven in welke tabel naar een veld moet worden verwezen. Vandaar je eerste foutmelding. Kijk dus in alle formules of er nog een vewijzing staat naar een verkeerde tabel, of dat de haken [] ontbreken. Die zijn noodzakelijk als er spaties in de tabelnaam of veldnaam zitten. (Vandaar hier altijd de tip om in tabelnamen en veldnamen geen spaties te gebruiken...)
 
Dit is het stukje SQL van de query in kwestie..
Ik kan echter nergens iets verkeerds ontdekken.

Code:
SELECT [Purch_ Rcpt_ Header].[Pay-to Name], Year([Order Date]) AS Expr1, Sum([Purch_ Rcpt_ Line].[Item Charge Base Amount]) AS [SomVanItem Charge Base Amount]
FROM [Purch_ Rcpt_ Header] INNER JOIN [Purch_ Rcpt_ Line] ON [Purch_ Rcpt_ Header].No_ = [Purch_ Rcpt_ Line].[Document No_]
GROUP BY [Purch_ Rcpt_ Header].[Pay-to Name], Year([Order Date]), [Purch_ Rcpt_ Line].[VAT Base Amount]
HAVING (((Year([Order Date]))=Year(Date())-1))
ORDER BY [Purch_ Rcpt_ Header].[Pay-to Name];
 
Laatst bewerkt door een moderator:
Er zit in ieder geval dus een foutje in, omdat je voor de functie Year nog steeds niet aangeeft uit welke tabel de datum moet komen. Uit je eerdere post vermoed ik:
Year([Purch_Rcpt_Header].[[Order Date]) AS Jaar

Probeer deze variant eens...

Code:
SELECT [Purch_ Rcpt_ Header].[Pay-to Name], Year([Purch_Rcpt_Header].[[Order Date]) AS Expr1, Sum([Purch_ Rcpt_ Line].[Item Charge Base Amount]) AS [SomVanItem Charge Base Amount]
FROM [Purch_ Rcpt_ Header] INNER JOIN [Purch_ Rcpt_ Line] ON [Purch_ Rcpt_ Header].No_ = [Purch_ Rcpt_ Line].[Document No_]
WHERE (Year([Purch_Rcpt_Header].[[Order Date])=Year(Date())-1)
GROUP BY [Purch_ Rcpt_ Header].[Pay-to Name], Year([Purch_Rcpt_Header].[[Order Date]), [Purch_ Rcpt_ Line].[VAT Base Amount]
ORDER BY [Purch_ Rcpt_ Header].[Pay-to Name];
 
Haha, nu komt ie weer met iets nieuws.

Parameterwaarde opgeven
Purch_Rcpt_Header.Order Date


Het gaat me nu allemaal een klein beetje de pet te boven :p
 
Dan kent-ie het veld Purch_Rcpt_Header.Order Date niet.... Ofwel je hebt in de tabel Purch_Rcpt_Header geen veld Order Date, ofwel je hebt er geen haken omheen gezet: [Purch_Rcpt_Header].[Order Date].
 
Gek genoeg allebei wel het geval. Ik ga er nog eens wat mee stoeien. Ik heb in ieder geval een iets andere oplossing gevonden voor dit specifieke probleem. Ik heb gewoon 1 tabel verwijderd en een maar iets minder uitgebreid veld gebruikt uit de tabel die over is.

De Purch_Rcpt_Header had namelijk iets uitgebreidere beschrijvingen, daarom stond hij erbij.

Ik ga nu nog even knokken met die kruistabel en de procentuele toename. Ik zal morgen laten weten hoe dat opschiet.

Heel erg bedankt voor de hulp tot nu toe, ik heb weer aardig wat opgestoken :thumb:
 
Nu heb ik het voor mijn gevoel vrij goed geimiteerd (:p), maar nu krijg ik toch een foutmelding:

Code:
Syntax error  (missing operator) in query expression '[Qry Etienne Inkoopcijfers Huidig Jaar]![Buy-from Vendor No_]='

Dit is de expressie die ik heb gebruikt:

Code:
Groei: DLookUp("[Item Charge Base Amount]";"[Qry Etienne Inkoopcijfers Huidig Jaar]";" [Qry Etienne Inkoopcijfers Huidig Jaar]![Buy-from Vendor No_]=" & [Buy-from Vendor No_])/DLookUp("[Item Charge Base Amount]";"[Qry Etienne Inkoopcijfers Vorig Jaar]";" [Qry Etienne Inkoopcijfers Vorig Jaar]![Buy-from Vendor No_]=" & [Buy-from Vendor No_])
 
Twee mogelijkheden: ofwel er zit een fout in je DLookup, of je gebruikt een tekstveld als criteriumveld.

Het tweede geval kun je zo oplossen:
Code:
Groei: DLookUp("[Item Charge Base Amount]";"[Qry Etienne Inkoopcijfers Huidig Jaar]";"[Buy-from Vendor No_]='" & [Buy-from Vendor No_] & "'")/DLookUp("[Item Charge Base Amount]";"[Qry Etienne Inkoopcijfers Vorig Jaar]";" Buy-from Vendor No_]='" & [Buy-from Vendor No_] & "'")

Probeer, als je wel een numeriek veld gebruikt, deze versie eens:
Code:
Groei: DLookUp("[Item Charge Base Amount]";"[Qry Etienne Inkoopcijfers Huidig Jaar]";"[Buy-from Vendor No_]=" & [Buy-from Vendor No_])/DLookUp("[Item Charge Base Amount]";"[Qry Etienne Inkoopcijfers Vorig Jaar]";" Buy-from Vendor No_]=" & [Buy-from Vendor No_])
 
Die 2de code geeft hetzelfde als eerst. De eerste code lijkt verder te komen, maar toch komt er uiteindelijk dan de volgende melding:

De expressie die u als queryparameter hebt opgegeven, heeft de volgende fout veroorzaakt: Kan de naam Item Charge Base Amount niet vinden die u hebt opgegeven in de expressie.

Dat terwijl het toch echt wel een veld is in de tabel die ik tot nu toe gebruikt heb.
 
Je vraagt het veld op uit een query; misschien moet je e.e.a. eens rechtstreeks op de tabellen proberen. Ik zou in ieder geval de DLookup op de tabel doen, en niet op een query.
 
Code:
Groei: DLookUp("[Purch_Rcpt_Line]![Item Charge Base Amount]";"[Qry Etienne Inkoopcijfers Huidig Jaar]";"[Buy-from Vendor No_]='" & [Buy-from Vendor No_] & "'")/DLookUp("[Purch_Rcpt_Line]![Item Charge Base Amount]";"[Qry Etienne Inkoopcijfers Vorig Jaar]";" Buy-from Vendor No_]='" & [Buy-from Vendor No_] & "'")

Dit werkt ook niet echt. Als ik nu huidig jaar en vorig jaar ga vervangen door een tabel dan krijg ik toch niet de gegevens die ik wil?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan