Forecast in Access

Status
Niet open voor verdere reacties.

Touram

Gebruiker
Lid geworden
25 mei 2009
Berichten
6
Beste,

Momenteel ben ik bezig met het opzetten van een access database (sales/forecast) voor mijn afdeling en ik heb via Office 2007 enkele templates bekeken en daarbij wat ideeën opgedaan.

Wat ik nu probeer voor elkaar te krijgen is het volgende; in een formulier die men kan invullen, wil ik graag de volgende velden hebben:

Wat is het = Aanbieding/Order/Gesloten
Rating = Koud (25%) - Warm (50%) - Heet (75%)
Kostprijs = kostprijs
Bedrag = Totaal bedrag

Nu komt het waar ik moeite mee heb:

Forecast = Bedrag x Rating (25% - 50% - 75%)
Marge = Bedrag - Kostprijs
Percantage = hoeveel marge


Hoe doe je dit? Moet dit berekent worden in de tabellen? Kan dit ingeschreven worden in de formulier velden? Of moet je hier verder voor gaan (query etc.)

Dit zou namelijk een excel lijst voor ons uitwissen waardoor we alles in een file kunnen invullen ipv twee (excell & access).

Alvast bedankt.
 
Gegevens opslaan in een tabel doe je als de gegevens niet afhankelijk zijn van elkaar. Dus:

Wat is het = Aanbieding/Order/Gesloten
Rating = Koud (25%) - Warm (50%) - Heet (75%)
Kostprijs = kostprijs
Bedrag = Totaal bedrag

inderdaad opslaan in de tabel.

De waarden

Forecast = Bedrag x Rating (25% - 50% - 75%)
Marge = Bedrag - Kostprijs
Percantage = hoeveel marge

zijn berekeningen die zijn gebaseerd op de gegevens uit de tabel. Die zou je dus kunnen laten uitrekenen in een query. Deze query gebruik je vervolgens als basis voor je formulier, zodat je alles netjes op je scherm ziet.

De query kun je vervolgens ook gebruiken om naar Excel te exporteren, mocht je dat alsnog willen voor wat uitgebreidere analystische berekeningen bijvoorbeeld.

Als je de berekende velden wilt opslaan in een tabel kan dit uiteraard ook: je zorgt er dan uiteraard voor dat de velden bestaan in de tabel, en dat je de berekeningen op het formulier uitvoert, i.p.v. in een query. Het formulier baseer je dan uiteraard op de tabel.

Michel
 
Bedankt voor het snelle antwoord maar toch weer een vraag, is er ergens een link te vinden of site waar ik meer over dit soort berekening kan lezen? Op dit moment kan ik zelf nog niks vinden en via de HELP van access wordt ik ook niet veel wijzer (alleen dat het kan :o)

Heb namelijk voor elkaar gekregen om een query te maken om zeg maar veld 1 maal veld 2 te doe (Bedrag x Rating) maar hoe krijg ik nu het veld van Forecast in me tabel?
 
Laatst bewerkt:
Op zich zou de berekening voor de Forecast niet anders hoeven te zijn als je hebt aangegeven; er vanuit gaande dat je de Rating als percentage opslaat, komt er altijd een goede waarde uit. Het maakt misschien wel uit wat je wilt zien als er geen forecast is ingevuld, of als je tekst gebruikt als forecast waarde. In dat geval zul je met een Switch functie de waardes "Koud","Warm" en "Heet" moeten vertalen naar een getal.

Ik begrijp uit je vraag, dat je de Forecast niet dynamisch wilt berekenen, maar vast wilt opslaan in een tabel?

In dat geval zou ik het formulier baseren op de tabel, en de berekening op het formulier laten plaatsvinden. Dan heb je dus ook geen query nodig, al is die uiteraard wel handig voor de export of een check.

In beginsel hoef je niet heel veel te doen; op je formulier zet je eerst alle velden uit je tabel, inclusief dus de velden met de berekeningen.
Het veld met de Forecast bereken je vervolgens met een actie op de keuzelijst Rating.

Ik heb een klein voorbeeldje voor je gemaakt, waarbij drie acties het werk doen:

1. Bij Laden van het formulier wordt de forecast uitgerekend
2. Bij wijzigigen van de Rating
3. Bij wijzigen van het bedrag.

Dat zou je in de juiste richting moeten helpen...

Michel
 

Bijlagen

Laatst bewerkt:
Helemaal top en ga me hier eens in verdiepen want volgens mij gaat dit verder dan mijn kennis, vooral die [Event Procedure]. Want die tabel en form met die nummers snap ik nml even niet dus daar moet ik zeker nog achter aan gaan.

:thumb:
 
Die andere tabel (en formulier ook...) kun je weggooien, want dat was een ander vraagje. Slaat dus niet op jouw geval ;)

Wat er feitelijk gebeurt op het formulier Forecast:

Als je een formulier opent, zal Access de gegevens tonen die op dat moment bestaan in de tabel of de query die je als basis gebruikt. Zit er een berekening in de query, dan krijg je de uitkomst daarvan te zien. In jouw geval zie je de gegevens uit een tabel, dus je ziet alleen vaste gegevens.

Op zich is dat uiteraard prima, tot je iets gaat wijzigen in één van de velden die zijn gekoppeld aan het berekende veld. In het voorbeeld: de velden Rating en Bedrag zijn alletwee van invloed op de Forecast. Als je dus één van de twee velden verandert, dan wil je:
a. dat de waarde op het formulier wordt aangepast
b. dat de waarde wordt opgeslagen in de tabel.

Een formulier doet zoiets niet uit zichzelf, in tegenstelling tot een query, waar je dat wel ziet veranderen. Daarom hebben elementen op een formulier eigenschappen, waarmee je acties of berekeningen kunt laten uitvoeren. Het voorbeeld laat dat dus zien: als je een andere rating kiest, of een ander bedrag invult, dan wordt een nieuwe Forecast berekend.

Dat gebeurt door de actie <Na Bijwerken> van zowel Rating als Bedrag.
Achter de actie zit een Gebeurtenisprocedure, die je kunt bekijken door op de knop met drie puntjes te klikken.

De feitelijke code is vrij simpel:

Code:
Private Sub Rating_AfterUpdate()

    Me.Forecast = Me.Bedrag * Me.Rating

End Sub

Oftelwel: als het veld Rating verandert, vul het veld Forecast dan met de berekening Bedrag * Rating.

Deze formule zit ook op het veld Bedrag, want daar moet uiteraard dezelfde berekening worden uitgevoerd, en voor de volledigheid op de eigenschap <Bij Laden> van het formulier, al is dat eigenlijk niet nodig. Ik zet die berekening er meestal wel bij, zodat ik altijd de juiste waarden krijg bij openen van het formulier. In een tabel kun je namelijk altijd handmatig gegevens wijzigen, en dan klopt de uitkomst van je formule uiteraard niet meer.

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan