expressie met criteria??

  • Onderwerp starter Onderwerp starter scw
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

scw

Gebruiker
Lid geworden
5 jun 2009
Berichten
530
Goedemiddag,

Ik heb een onafhankelijk hoofdmenu, op dit hoofdmenu staat een subformulier (afhankelijk). In dit subformulier heb ik in de gegevensweergave een kolom "Totaalbedrag" en een kolom "Jaar". Het subformulier is gebaseerd op een tabel. ((Dit zou eventueel ook een query kunnen worden)). Nu wil ik een veld creeëren, op het subformulier (voettekst) welke =SUM([Totaalbedrag]) doet, maar dan in combinatie met de Year(Now()) functie. Dus dat de gegevensbron van dit nieuwe veld een combinatie van deze twee is. Is dit mogelijk en hoe zet je hem dan neer??

Nu kun je je afvragen waarom niet gewoon in een query? Klopt, maar ik heb niet genoeg ruimte meer op m'n hoofdformulier om er nog een subform op te plaatsen (groot subform met vele knoppen ernaast) (ook al is die visible = false). Het zou daarom veel netter zijn als de eerste optie mogelijk is: een expressie met criteria??

Ik ben benieuwd,
scw :thumb:
 
Lijkt mij dat het zo moet kunnen: =SUM([Totaalbedrag]) & " (" & Year(Now()) & ")"
 
Excuses, het ligt aan m'n uitleg:

Ik bedoelde eigenlijk dat er alleen de [Totaalbedrag](en) van [Jaar] worden opgeteld. Dus het criteria is [Jaar], kun je dat instellen in een expressie?


Dus

2008 30
2008 40
2009 30
2009 30

Expressie: Sum[Totaalbedrag] over 2009 zoiets:

Uitkomst in tekstvak: 60

Sorry uitleggen is nu eenmaal niet m'n sterkste kant :o
 
Je wilt dus in één tekstvak een Totaalbedrag per jaar, uitgesplitst over een aantal jaar? En die gegevens moeten uit de records van een subformulier worden gehaald? Of wil je voor elk jaar een eigen tekstvak?
 
Klopt, in één tekstvak het totaalbedrag per jaar.

Mijn doel is om zeg maar twee onzichtbare tekstvakken te maken met

a) het totaalbedrag van het huidige jaar = Sum(Totaalbedrag) over 2010
b) het totaalbedrag van het huidige jaar -1 = Sum(Totaalbedrag) over 2009

Vervolgens zou ik hiermee het percentage berekenen, dus wat is het totaalbedrag nu t.o.v. vorig jaar in een zichtbaar tekstvak.

De velden [Totaalbedrag] en [Jaar] staan in het subformulier, en in dat subformulier zou ik dan in de voettekst die velden kunnen plaatsen. Uiteindelijk zal ik dan het berekende percentage veld overnemen naar het hoofdformulier in één tekstvak.

Mocht m'n uitleg nog niet zo duidelijk zijn, vraag gerust verder.. :)
 
Ik zou dat met VBA doen, achter de <Bij Aanwijzen> gebeurtenis, zodat bij elk volgend record je gegevens worden opgehaald. Hierbij maak je dus in VBA een query die de gegevens sommeert per jaar, waarna je die inleest in variabelen, vervolgens de percentageberekening er op los laat, en alles netjes samenvoegt tot één tekststring, die vervolgens op het tekstvak wordt gezet.
Vraag is natuurlijk: kom je daar uit :D
 
Pfff :eek: .... de vraag stellen is hem beantwoorden. Dit gaat zwaar boven m'n pet. Desalniettemin, begrijp ik wel hoe je het bedoeld. Maar nee, hier zal ik niet uitkomen...
 
Dan mag je het formuliertje even uploaden, want ik moet dan wel weten/zien hoe het subformulier er uit ziet... Ik neem aan dat ik de records/tabellen kan gebruiken van de andere post?
 
Per ommegaande retour...
 
Ah ik heb de code een beetje kunnen ontcijferen (leer ik weer veel van! :thumb:), maar mag ik hem nog éénmaal terugsturen, want m'n langgekoesterde doel is hiermee nog niet helemaal bereikt... ik heb geprobeerd een beetje aan te passen en ook heb ik wat comments in de code gezet. Hopelijk is dit mogelijk. Dus dat die altijd het huidige jaar pakt en huidige jaar-1. Dus met 2008 hoeft niks gedaan te worden in dit geval.

Superbedankt alvast,
:thumb:scw
 

Bijlagen

2 eenvoudige queries en je hebt wat je wilt hebben.

qryJaarOmzetten

SELECT [Jaar]-1 AS vorigJaar, tblOmzetten.Jaar, Sum(tblOmzetten.Weekomzet) AS jaaromzet
FROM tblOmzetten
GROUP BY [Jaar]-1, tblOmzetten.Jaar;

qryJaarOmzettenVorigJaar

SELECT qryJaarOmzetten_1.Jaar, qryJaarOmzetten.jaaromzet AS vorigJaarOmzet, qryJaarOmzetten_1.jaaromzet AS ditJaarOmzet, [ditjaaromzet]/[vorigjaaromzet] AS percentage
FROM qryJaarOmzetten INNER JOIN qryJaarOmzetten AS qryJaarOmzetten_1 ON qryJaarOmzetten.Jaar = qryJaarOmzetten_1.vorigJaar;
 

Bijlagen

  • JaarOmzet.JPG
    JaarOmzet.JPG
    23,2 KB · Weergaven: 29
Men vraagt....
 
Hallo,

@ Harry46 bedankt voor je reactie. Klopt ook, maar nu is het natuurlijk veel mooier opgelost met VBA.

@ Octafish. De tweede record van Harry z'n voorbeeld is precies het resultaat wat ik voor ogen heb; nu pakt doet die nog steeds:
Code:
iJaarPerc = iJaarTotaal / iTotaal
en voor beide jaren, maar het hoeft maar alleen voor 2010. :rolleyes:

Is het ook mogelijk te verwijzen in de caption, zoiets als dit, maar ik doe nog iets fout:

Code:
Me.txtLabel.Caption = "omzet " & .Fields(0) & " & t.o.v." & iJaarTotaal - 1 & ""
Dus 'Omzet 2010 t.o.v. 2009' ???

Geweldig! :D
 
Als we het toch mooi gaan doen, dan waarom niet in één query?

qryJaarOmzettenTotaal
Code:
SELECT Jaar, First([Jaar]-1) AS vorigJaar, DSum("Weekomzet","tblOmzetten","[Jaar]=" & [Jaar]-1) AS OmzetVorigJaar, Sum(Weekomzet) AS JaarOmzet, [Jaaromzet]/[OmzetVorigJaar] AS Perc
FROM tblOmzetten
WHERE (Jaar>=Year(Date())-1)
GROUP BY Jaar
ORDER BY Jaar;
 
:shocked: Oefff gooien we het helemaal over een andere boeg! :eek:

@ Octafish: zou het nog mogelijk zijn in VBA svp, vind ik zelf toch de mooiste oplossing, we zijn er zo dichtbij! Bovendien zou ik niet weten hoe ik de query dan weer zou moeten koppelen aan het tekstvak (unbound form) en de caption.

Het zou geweldig zijn, als ik dat VBA resultaat kan gebruiken!! :)
 
Daar was ik ondertussen al mee bezig; vond het wel aardig om alvast de query te posten om het wachten wat te verkorten ;)
 
In de eerste plaats excuses voor m'n ongeduldigheid dan :D Máár G-E-W-E-L-D-I-G!! Deze had ik werkelijk anderhalf jaar geleden al op m'n 'wens'lijstje staan! Fijn om dat zo te kunnen afstrepen. :D:D Ik druk nu overtuigd op de 'deze vraag is opgelost button'. :cool:

Mag ik nog twee laatste vraagjes stellen :rolleyes:

1) Als ik de tblOmzetten helemaal leeg haal, blanco, dan start m'n hoofdmenu niet meer op. Nu zal dit natuurlijk niet meer voorkomen in principe, maar valt hier nog iets voor neer te zetten?

2) Nu pakt die volgens mij het meest recente jaar in de tabel (?toch?) en dan ook dat jaar -1. Kan ik hier ook nog de YearNow() functie gebruiken in plaats hiervan?? Of is dat niet mogelijk?


Nogmaals mijn dank is groot,

scw
 
Een vraag (of meer, in jou geval) stellen als je de post net zelf op Opgelost hebt gezet is natuurlijk niet heel erg slim ;) Maar omdat ik een eerdere vraag nog niet had opgelost (kan het jaartal interactief in het label) hierbij een nieuwe versie waar in ieder geval dat probleem is getackeld...
Wat je extra vragen betreft: Ik zou aan het voorkomen van de lege tabel niet zo'n aandacht schenken, want zoals je zelf al aangaf, dat gaat niet gebeuren. En ik steek mijn tijd liever in concrete problemen, dan in hypothetische.... Bovendien is het wel fijn als er iets onverwachts gebeurt in afwijkende situaties; dan word je er gelijk op geattendeerd dat er iets moet gebeuren.
Het tweede probleem snap ik niet helemaal... Ik vermoed dat je Year(Date()) als begin en einddatum wilt kunnen gebruiken? Ik heb op het formulier nu een keuzelijst gezet, waarmee je zelf de hele reeks die je wilt zien kunt selecteren. Is dat genoeg?
 
:thumb: Ach, de vraag was wel opgelost door jou alleen zat ik n.a.v. dit nog met wat kleine vraagjes ;)

Je hebt ook gelijk voor wat betreft het geval dat er geen records voorkomen. Er verschijnt dan een

Run time error '3021' No current record

Dat heb ik nu ondervangen door een simpele If Err = 3021 Then MsgBox :) Ook weer voor elkaar.

Nogmaals bedankt voor alle moeite! :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan