Data berekenen in Access

Status
Niet open voor verdere reacties.

Basz123

Gebruiker
Lid geworden
24 jan 2011
Berichten
8
Beste iedereen,

Ik heb een probleempje. Of beter gezegd, een uitdaging.

Ik heb een database met 100.000 records in Access. Ik ontvang de data in een CSV bestand vanuit een ERP programma. Deze importeer ik via een macro in Access. Ik moet echter nog twee zaken wijzigen voordat de database klaar voor gebruik is.

1. Er moeten nieuwe gegevens berekend worden adhv formules. Dit is niet mogelijk in het ERP programma. Dit betekent dat ik nieuwe kolommen toe moet voegen, waarin ik nieuwe waardes bereken adhv de bestaande data.

2. Dit betekent ook gelijk dat ik de volgorde van kolommen moet wijzigen.

Wat is het gemakkelijkste wat ik kan doen? Ik heb een beperkte kennis van Acces. Ik kom tot de volgende optie;

Twee keer data selecteren in Access (record 1 t/m 50.000 en 50.001 t/m 100.000) en deze CTRL C en V'en naar Excel. Daar kan ik de data aanpassen, waarna ik het weer in een nieuwe tabel in Access giet. Het moet echter makkelijker kunnen dan dit, neem ik aan.

Voor de duidelijkheid, de formules die ik in Excel doorvoer zijn de volgende;

TEKST.SAMENVOEGEN
ALS
DELEN / VERMENIGVULDIGEN / OPTELLEN


Zouden jullie mij van feedback kunnen voorzien op dit punt? Ik zou het erg op prijs stellen!

Alvast bedankt.


Met vriendelijke groet,

Bas
 
Hallo Bas,
Eerlijk gezegd zie ik je probleem niet; je slaagt er al in om je gegevens te importeren, dus dat lijkt mij ok. Waarom zou je echter berekeningen willen opslaan? In Excel moet dat, omdat je anders geen uitkomsten hebt; in een database geldt echter als regel dat gegevens die berekend kunnen worden, niet worden opgeslagen in tabellen. Netter gezegd: op het moment dat je waarden kunt afleiden uit gegevens uit een tabel, dan bereken je dat gegeven in een query, maar je slaat het niet op in een tabel. Niet alleen scheelt dat een hoop gedoe, want je hoeft geen truuken te bedenken om alsnog berekeningen op te slaan; het scheelt ook data in je tabellen.
Je tweede puntje komt (denk ik) ook uit je Excel denktrant:
2. Dit betekent ook gelijk dat ik de volgorde van kolommen moet wijzigen.
Ook dat hoeft nooit in een database: je werkt niet met kolommen, en celverwijzingen, maar met Veldnamen en je verwijst in formules dus altijd naar een veld, ongeacht waar dat staat.
De formules die je zou willen maken,zijn relatief simpel te doen in Access, want het kent vergelijkbare commando's als Excel. Al heb je (gelukkig) een opdracht als TEKST.SAMENVOEGEN niet nodig (in Excel trouwens ook niet...).
 
Beste Octafish,

Bedankt voor je antwoord. Ik merk inderdaad dat ik teveel blijf hangen in de Excel denksfeer.

Maar het belangrijkste is wel dat alle data zichtbaar is in de tabel. M.a.w.; een van de velden die ik bereken is een ratio (%). Het is belangrijk dat deze ratio zichtbaar is bij elk record in de database.

M.a.w.; a.d.h.v. bestaande data bereken ik een nieuw veld in Access. Is dit veld dan ook direct zichtbaar als ik de tabel open? In het verlengde hiervan; een ander nieuw veld bereken ik a.d.h.v. de reeds berekende ratio. Is dit ook mogelijk binnen Access?

Alvast bedankt voor je antwoord.

Bas
 
In Access gebruik je tabellen om gegevens op te slaan. Zaken die je kunt berekenen / afleiden sla je niet op in een tabel.
Dat doe je in Excel ook niet, daar zet je een formule in een cel, je ziet dan het resultaat van de formule!

In access doe je dit soort dingen met queries, daar kun je de berekeningen doen.
In je rapporten laat je dan de resultaten van een query zien.

Een on line cursus waar dit best wel duidelijk uitgelegd wordt kun je hier vinden: http://www.gratiscursus.be/access_2003/
 
Je moet, zoals Bartuls al aangeeft, met queries berekeningen maken, of, dat kan ook, in je rapporten en formulieren. Het belangrijkste is, en dat gaf ik ook al aan, dat je in je tabellen alleen gegevens (data) opslaat. Op basis daarvan bereken je de overige gegevens, zoals percentages.
Ik mag je ook attenderen op de cursus die ik aan het maken ben, en waarvan je het eerste deel hier kunt vinden.
 
Heren,

Heel erg bedankt. Dit is allemaal erg nuttige info :) Ik begrijp dat ik de data en de berekeningen moet splitsen. Dit is ook logisch.

Echter, ik moet wel alle gegevens (platte data én berekende data) in 1 tabel zien te krijgen. Dus ik gebruik Access in principe ook niet als relationele database, maar meer als spreadsheet. Dit is omdat de gebruikers van de database de records filteren en deze exporteren naar Excel, waarbij ze hun eigen analyses doorvoeren. Dit laatste is erg belangrijk. Als je in de tabel filtert, en exporteert, dan krijg je als Excel output alleen hetgene dat je gefilterd hebt (en niet de hele database).

Voor het gemak van de gebruikers is het dus handiger dat alle gegevens in 1 tabel staan. Dit zijn in totaal +/- 110 velden (x 100.000 records).

Ik weet niet of dit ook kan in forms of reports? Toen ik zojuist probeerde een report en een form te maken kreeg ik de foutmelding dat ik teveel fields had. Maar ik kan wel gemakkelijk in de tabel filteren en exporteren.


Bas
 
En ook dat doe je op de manier die we aangeven: nogmaals: gegevens in de tabellen, berekeningen in queries, en analyses in Excel? Prima; je kunt een query perfect exporteren, al dan niet geautomatiseerd....
 
Natuurlijk :) 1 grote query met allemaal berekeningen. Geniaal programma dat MS Access :)

Nu moet ik me alleen gaan verdiepen in Access expressies/formules :)
 
De meeste functies zijn gelijk of vergelijkbaar met Excel, dus dat mag niet al teveel problemen opleveren.... Een groot verschil met Excel is wel dat je op recordniveau berekent; het is bijvoorbeeld zonder truukjes niet eenvoudig om een waarde op te halen uit een vorig record, wat in excel heel simpel is. Idem dito voor gegroepeerde percentages. Maar daarvoor kun je uiteraard weer hier terecht...
 
Ik ga me echt verdiepen in Access. Met de minuut krijg ik meer inzicht in de mogelijkheden van het programma. Misschien toch maar eens zo'n MS Access for dummies boek kopen ;)

M.b.t. de huidige database loop ik met de query wel tegen het volgende probleem aan.

Een functie die ik gebruik (in Excel) is de volgende; if(iserror((D2-C2)/D2);0;(D2-C2)/D2). In Access vertaal ik dit als volgt; IIF(IsError(([FACTINK]-[VASTVER])/[FACTINK]),0,([FACTINK]-[VASTVER])/[FACTINK])

Echter, dit lukt niet omdat ik een syntax error krijg.


Weten jullie misschien hoe dit opgelost kan worden?
 
Laat maar, het is me al gelukt :) Ik kwam er niet uit met de "IsError" functie, maar ik bedacht me dat de uitkomst altijd "Error" is als de noemer in de breuk 0 is. Je kan immers niet door 0 delen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan