Kas periodiek tellen

Status
Niet open voor verdere reacties.

korteweide

Gebruiker
Lid geworden
1 jul 2013
Berichten
13
Ik wil ons kasboek in Acces zetten, zodat ik het later kan koppelen aan een adressen database.

Daarvoor heb ik een tabel Kasboek gemaakt met de volgende velden:
Bonnummer ( = autonummering)
Datum
Naam (adres, postcode, woonplaats, registatienummer)
Omschrijving
Bedrag ontvangen
Bedrag uitgegeven
Saldo

Hiervan heb ik een formulier gemaakt. Per transactie kan een bon (rapport) geprint worden met via de macro's Ontvangst/Uitgave afdrukken. Dat gaat goed.

Nu moet de kas periodiek geteld worden. Ik wil selecteren via bonnummer, omdat na het tellen van de kas nog mutaties op dezelfde datum plaats kunnen vinden.

Daarvoor heb ik een tabel Kas geteld gemaakt met de volgende velden:
Kas geteld-id
Datum
Maand
Jaar
Eerste nummer
Laatste nummer
Saldo

Hiervan wil ik een formulier maken, waarbij de nieuwe record zoveel mogelijk automatisch gevuld wordt. De datum krijgt dan als standaardwaarde Date (). Maand en jaar kunnen via een invoervak opgezocht worden in de betreffende tabellen Maanden en Jaren. Dan het probleem: hoe kan ik de velden 'Eerste nummer'. 'Laatste nummer' en Saldo vullen?

Het 'Eerste nummer' is het nummer van het veld 'laatste nummer' van de laatste record uit de tabel Kas geteld + 1
Het ''laatste nummer' is het laatste bonnummer uit de tabel 'Kasboek'
Het 'Saldo' is het saldo van de laatste kasthelling uit de tabel Kas geteld.

Aan de hand van deze gegevens kan dan een rapport gemaakt worden, waarbij de geselecteerde mutaties uit het kasboek in een subformulier gezet worden.

Ik heb al geprobeerd met query's, maar ik kom er niet uit. Misschien kan het allemaal veel makkelijker dan ik het nu bedenk.

VBA is voor mij te moeilijk. Zou het zonder VBA ook kunnen? Ik gebruik Office 2007.

Wie kan mij een (paar) stapje(s) verder helpen?
 
Ik lees zóveel fouten in je opzet, dat ik eigenlijk niet weet waar ik moet beginnen... Laten we met iets kleins starten dan maar...
Ik wil ons kasboek in Acces zetten, zodat ik het later kan koppelen aan een adressen database.
Waarom niet gelijk gekoppeld? Nu heb je deze velden nodig: Naam (adres, postcode, woonplaats, registatienummer). Dat zou niet hoeven als je koppelt, dan sla je namelijk alleen het Registratienummer op en heb je, op basis van de koppeling met je klanten, alle overige gegevens tot je beschikking.

Dan nu het grotere werk :). Ook weer met wat kleins beginnen!
Maand en jaar kunnen via een invoervak opgezocht worden in de betreffende tabellen Maanden en Jaren.
Twee tabellen die je totaal niet nodig hebt. Een jaartal en een maand zijn per definitie altijd afhankelijk van het datumveld. En dus herleidbaar uit dat datumveld. Je zult zelden aparte velden nodig hebben voor een datum, een jaar en een maand. Zelfs met 2 datumvelden was je beter af geweest (begindatum-einddatum). In jouw tabel kun je de volgende gegevens zonder mankeren opslaan:
Datum = 12-6-2016
Maand = November
Jaar = 2015

Dat moet je niet willen. Het verschijnsel heeft ook een officiële naam: redundantie. En dat houdt dan in dat je nooit dubbele data opslaat. Jouw tweede tabel is daar de overtreffende trap in; zie volgende punt. Daarnaast is er nog een hele belangrijke regel: gegevens die je kunt afleiden uit een ander gegeven sla je ook niet op in hetzelfde record. En dat bewijst dus mijn voorbeeldje al heel mooi.

Het echte probleem ligt hier:
Nu moet de kas periodiek geteld worden. Ik wil selecteren via bonnummer, omdat na het tellen van de kas nog mutaties op dezelfde datum plaats kunnen vinden.
Daarvoor heb ik een tabel Kas geteld gemaakt met de volgende velden:
Kas geteld-id
Datum
Maand
Jaar
Eerste nummer
Laatste nummer
Saldo
En daar ga je m.i. dus volledig de mist in. Een goed opgezette database doe je nooit met de vraag: wat wil ik er in stoppen, maar altijd op basis van de vraag: wat wil ik er uit halen. Je kasgegevens sla je op in de tabel [Kasboek]. Meer heb je op dit moment ook helemaal niet nodig! Zodra je rapportages wilt maken, doe je dat altijd op basis van de beschikbare gegevens in deze tabel. Rapportages zijn dynamisch, en vraag je op middels een query. En daar heb je dus helemaal geen aparte tabel voor nodig. Op het moment dat je een nieuwe rapportage maakt, kies je op je selectieformulier een begin- en een einddatum (als voorbeeld; je kunt ook kiezen voor vaste periodes, maanden, kwartalen, jaren etc.) en daarna filtert het rapport op basis van de door jou aangegeven criteria de juiste data. Dit filteren is dynamisch, en je ziet dus altijd een actueel overzicht van de tabel.
Jouw idee is dus alleen daarom al een slecht idee, omdat de tweede tabel in beginsel niks te maken heeft met de eerste tabel omdat de tabel zijn eigen data heeft.

Kortom: even terug naar de tekentafel, en eerst de structuur van de database in orde maken. Vermoedelijk heb je dan wat formulieren voor niks gemaakt, maar dat is dan een wijze les voor de toekomst :). Die les luidt dan: maak eerst de structuur van de database in orde, (tabellen, queries) en als alles naar wens is, ga dan de formulieren en rapporten maken. Niet andersom...
 
hallo Korteweide,
in bijlage misschien iets voor jou ?!?!
een (lichtjes aangepaste) versie van een kasboek, momenteel gebruikt door een klein bedrijfje.

in jouw ontwerp staan wel 2 velden voor een bedrag: in of uit.
hier vervangen door 1 veld (positief of negatief).

veronderstel dat de periodieke telling van het kasboek dient om eventuele fouten terug te vinden?!?!
hiervoor kan je dan de knop (rapportje) gebruiken "nazicht saldo kasboek".

om eventuele fouten te corrigeren, heb ik als "betrokken medewerker" maar een medewerker toegevoegd "Boekhouding"
(kunstgreepje ???) - zie voorbeeld in het formulier "Kasboek".

uiteraard moet de tabel "medewerkers", zoals aangestipt door Octafish, wel vervangen worden door een koppeling naar je "adressen medewerkers".

bekijk het maar eens en indien niet geschikt, gooi het weg.
indien mogelijke basis, des te beter :)

mvg,
Duke of Earl
 

Bijlagen

bedankt voor jullie uitgebreide reacties. Zie je wel, dat ik het veel te ingewikkeld maakte :(. Ik zal de tabel 'Kas geteld' er in ieder geval uitgooien en eerst de tabel met de adresgegevens maken en koppelen.
DukeOfEarl: ik ben blij met je voorbeeld. Dat maakt het voor mij een stuk duidelijker. Ik ga er mee aan de slag!
 
hallo Korteweide,
heb je oorspronkelijke tekst nog eens doorgenomen en (ben nu een beetje beschaamd :o), misschien heb ik het woord KASBOEK verkeerd
geïnterpreteerd.
ging uit van een systeem om alle cash-betalingen te noteren (vb. bij aflevering van een pakje tegen betaling, iemand van het bedrijf die
even een kleine aankoop moet doen ...).
mogelijks (of waarschijnlijk ??) noteer je meer dan dat (alle inkomsten/uitgaven via rekeningen, cash ...) en dan is mijn voorbeeldje
waarschijnlijk niet zo relevant.
indien zo ... excuses.
mvg,
Duke of Earl
 
Ik ben nu een heel eind op weg. Ik heb nu een formulier gemaakt, waarin het laatste nummer van de vorige kastelling gevraagd wordt. Deze waarde wordt handmatig ingevuld. Deze waarde moet in de query terecht komen, die de selectie voor het te printen overzicht (rapport) van de kastelling maakt.
Bij het bonnummer heb ik de volgende formule gezet: >[Formuliernaam]![Besturingselementnaam]. In mijn geval: >[Forms]![Bonnummer laatste kastelling]![Laatste bonnummer laatste kastelling]. Maar dan levert de query geen resultaten op. Als ik bv. >3 intyp krijg ik wel keurig de bonnummers vanaf 4 en hoger. Wat doe ik fout?
 
Begin eens met een voorbeeldje te posten, dat kijkt een stuk makkelijker. Het laatste nummer van een specifieke telling hoef je uiteraard niet zelf in te vullen; dat nummer is bekend dus dat kun je gewoon ophalen uit de tabel. Verder zie ik uiterst onhandige formuliernamen en tekstvelden; veel te lang en met spaties. Niet dat dát een onderdeel van je probleem is, maar ik raad je aan om in je naamgeving een zeker systeem in te bouwen. Formulieren bijvoorbeeld altijd een voorvoegsel als 'f' of 'frm' meegeven, een tekstvak 'txt' en een keuzelijst 'cbo' of 'lst'. En probeer dus spaties te vermijden.
 
Hierbij dan een voorbeeld. Het is de bedoeling dat de Kas telle Query zijn waarde ophaalt uit het formulier Bonnummer laatste kastelling. Maar dan krijg ik dus geen gegevens in de query.

Alvast bedankt.
 

Bijlagen

Ik snap je bedoeling nog niet helemaal; wat wil je precies zien in de query? De reden dat het nogal onduidelijk is, ligt in het feit dat je wel érg weinig data in de tabel kasboek hebt zitten: 2 datums namelijk (25-5-2016 en 21-7-2016) met in totaal (niet schrikken...) 3 records. Daar kun je natuurlijk geen goed rapport op baseren. Heb je niet wat meer om mee te spelen?
 
Sorry, ik ging even een paar stappen te snel.

Ik heb nu eerst een ander probleem: Ik heb een rapport (rapKasboek) gemaakt. Daarin staan de inkomsten en uitgaven en het eindsaldo. Maar de dame van de boekhouding wil eventuele kasverschillen kunnen opsporen. Daarom is óf een beginsaldo nodig, óf een saldo per record (rapKasboek2(. Hoe kan ik dat het beste aanpakken?

Het is de bedoeling dat een overzicht van de mutaties per maand naar de boekhouding gaat. Kan dat op deze manier of ben ik dan op de verkeerde weg?

Alvast bedankt.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan