Gegevens kopiëren van tabel A naar tabel B

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

RojP

Gebruiker
Lid geworden
6 feb 2016
Berichten
23
(Deze vraag is al eens in soortgelijke bewoordingen gesteld, maar de antwoorden voldoen m.i. niet in mijn situatie.)

Het betreft het afsluiten van een boekhoudperiode (maand).

tbl=tabel.

In tblBoekingen wordt het filter gezet op de af te sluiten periode.
Deze periode wordt opgeslagen in de variabele "VELD1" als het de huidige maand betreft en in "VELD2" de vorige (=de al afgesloten) periode.
Dit, omdat tblGrootboek o.a.de volgende velden kent: Datum, RekeningNr, H1, H2...H12, V1,V2...V12. H1=januari Huidig jaar(etc) en V1 staat voor januari Vorig jaar.
De afsluitperiode wordt bepaald door =(afgesloten MOD 12)+1. De invulling is dan: VELD1="H" + LTRIM(STR(afsluitperiode).
VELD2 wordt gebruikt indien de vorige, dus al afgesloten periode in het vorige jaar ligt (december dus). Dan wordt VELD2="V" + (etc.). Ligt de vorige periode in het huidige jaar (vanaf januari als afgesloten periode) dan krijgt VELD2 de waarde van "H"+ (etc.). Het verhaal over VELD2 is m.i. niet relevant voor mijn probleem, maar dient voor wat verduidelijking.)

Een rekening kan meerdere transacties bevatten (bijvoorbeeld: RekeningNr 25.3 met als naam "Kosten brandstof" vermeldt in februari 10 transacties). Daarom worden de rekeningen eerst getotaliseerd.(mrek=RekeningNr).
Deze rekeningtotalen moeten naar tblGrootboek weggeschreven worden. (Met behulp van: "indien rekeningnummer wijzigt, het totaal van die rekening wegschrijven naar tblGrootboek".) Bestaat een rekening nog niet in tblGrootboek, dan -na gecontroleerd te hebben in tblRekeningen of het een bestaande rekening betreft- een nieuw record aan tblGrootboek toevoegen.

Als alles naar behoren is verwerkt, dan is het de bedoeling om de transacties in tblBoekingen te verwijderen.

Het totaliseren van de rekeningen in tblBoekingen lukt nog wel, maar ik loop vast bij het overbrengen van die totalen naar tblGrootboek.

Heeft iemand een (of wellicht wel dé) oplossing?
 
Allereerst nog welkom bij HelpMij! Ik heb je vraag een paar keer gelezen, maar zelfs geen flauw idee over welk programma je het hebt.... En ik denk, gezien het aantal eerdere antwoorden (0 namelijk) dat ik niet de enige ben. Het riekt alsof je in Excel aan het werken bent, maar je gebruikt tabelnamen die op Access duiden. Maar als dat zo is (Access), waarom is je db dan zo slecht genormaliseerd? In dat geval zie ik de noodzaak van al die extra velden namelijk niet. Hoe dan ook: als het mogelijk is om een voorbeeldje met dummydata te posten, dan graag, want dan wordt het waarschijnlijk ook wat duidelijker. Weten we in ieder geval over welk programma we het hebben :).
 
Dank voor je welkomswoord.

Ik gebruik access 2007.
Wat bedoel je met een slecht genormaliseerde db?
Ik maak een voorbeeld en stuur dat vandaag of ergens in de komende dagen naar je op.

Nu alvast ter verduidelijking:
Er zijn 3 tabellen die direct te maken hebben met het onderwerp: het afsluiten van een (boekhoud)periode. Dat zijn tblRekeningen, tblBoekingen en tblGrootboek. De periode is een maand, die in tblBoekingen (verslaglegging van alle transacties) automatisch wordt aangegeven met het maandnummer. Dit maandnummer wordt gebruikt voor het corresponderende veld in tblGrootboek (vanuit deze tabel worden de financiële verslagen gegenereerd, zoals de resultatenrekening, balans en alles wat nog belangrijk geacht wordt). In het grootboek worden de gegevens van twee jaren opgeslagen en heten H1 t/m H12 en V1 t/m V12. H=Huidig en V=Vorig jaar. Welke periode wordt afgesloten, wordt bepaald d.m.v. een variabele n.l. VELD1 ("H" + periodenummer). Je vindt dit alles in de procedures van het voorbeeld.
 
Waarschijnlijk helpt een voorbeeld inderdaad om een beter beeld te vormen.
Wat bedoel je met een slecht genormaliseerde db?
Je hebt een tabel tblBoekingen. Daarin leg je ongetwijfeld op basis van een datum de verschillende mutaties vast. Op basis van die datum kun je alle overzichten maken die je wilt. Als ik dit lees:
Datum, RekeningNr, H1, H2...H12, V1,V2...V12.
Dan denk ik: niet-genormaliseerde tabel, want al die H1..H12 velden en V1..V12 velden heb je helemaal niet nodig als je de datum óók hebt. Is perfect af te leiden namelijk. En daar kun je dus ook perfect je overzichten op maken. Een kruistabel bijvoorbeeld.
 
Het duurde even, maar bij deze een voorbeeld. (Er staan ook commentaren n.a.v. foutmeldingen.) Opmerking over "al die velden" (zie jouw reactie van 6 feb): het gaat om 3 tabellen:
tblRekeningen, tblBoekingen en tblGrootboek. De genoemde velden (H1...H12 etc) zijn de velden van tblGrootboek, niet van tblBoekingen.

(Het uploaden wil niet lukken. Ik probeer het opnieuw en stuur het voorbeeld apart op)
 
Ik krijg de melding 'ongeldig bestand' (x.accdb, 1,6 mb) De extensie "accdb" komt niet voor in de lijst van toegestane bestanden.
Dit is reeds een gecomprimeerd bestand. Is er nog een andere mogelijkheid?
 
Ja, er een zip van maken. Of, werkt ook prima, de extensie veranderen naar xlsb. Dan zetten wij hem wel weer terug. Of een fileshare als wikisend.com. Dan hoef je je nergens druk om te maken.
 
Het bestand (wikisend) wordt niet geaccepteerd. Is groter dan 100 KB, volgens de mededeling. Ik zou het ook per e-mail kunnen sturen, maar ik zie niets wat op bijlage toevoegen lijkt. Of overzie ik een en ander?
 
Dit snap ik niet helemaal:
Het bestand (wikisend) wordt niet geaccepteerd. Is groter dan 100 KB, volgens de mededeling.
Wikisend.com is een website die bestanden tot 100MB accepteert, ongeacht of het een database is of niet. Maar ik vermoed, als ik het zo lees, dat je de db 'wikisend' hebt genoemd en vervolgens naar HelpMij probeert te uploaden. En dat gaat natuurlijk niet, want HelpMij kijkt niet naar de naam van het bestand. Overigens kun je de bijlage gewoon hernoemen naar xls(b); in een andere draad ging dat ook perfect.
 
Ik begrijp er niets van. Ook de extensie xlsb wordt niet gereageerd. Alle bestandsvormen mogen maar 100 kb bedragen, volgens de melding op het bijlageformulier.
Ik heb de db niet Wikisend genoemd.
 
Als wikisend.com niet werkt, kun je wetransfer.com nog proberen, dat is ook een site waarmee je bestanden kunt uitwisselen. Een alternatief dat ik zelf ook gebruik is om de database met WinRar te zippen. Daarmee kun je deelbestanden maken van 100kb, en die kun je in ieder geval wel uploaden.
Overigens wekte je wel degelijk de indruk dat je de db had hernoemd naar wikisend :). Taalkundig gezien had je het dan zo moeten opschrijven: "Het bestand wordt op Wikisend.com niet geaccepteerd." Zoals het er nu staat, is het maar op één manier te lezen.
Het bestand (wikisend) wordt niet geaccepteerd.
Maar misschien zitten er rare tekens in de bestandsnaam (noem hem eens test.xls bijvoorbeeld) of probeer hem eerst te zippen voordat je hem upload naar een fileshare.
 
Overigens wekte je wel degelijk de indruk dat je de db had hernoemd naar wikisend :). Taalkundig gezien had je het dan zo moeten opschrijven: "Het bestand wordt op Wikisend.com niet geaccepteerd." Zoals het er nu staat, is het maar op één manier te lezen.

Taalkundig gezien zijn er meer interpretaties mogelijk. Dat Wikisend.com het bestand niet zou hebben geaccepteerd, is één mogelijkheid maar m.i. niet voor de hand liggend. (Allicht, ik heb de tekst geschreven, zou je kunnen opperen.) Ook mogelijk: het bestand werd op jouw advies via Wikisend.com bewerkt, maar werd door Helpmij toch niet geaccepteerd. Hoe dan ook, de tweede mogelijkheid is van toepassing.
(Overigens meent Microsoft dat Wikisend.com een onveilige site is. Het kost nogal wat moeite om het bewerkte bestand opgeslagen te krijgen! Opvallend: Norton bestempelt Wikisend als veilig.)

Ik zal morgen de genoemde mogelijkheden proberen.
 
het bestand werd op jouw advies via Wikisend.com bewerkt, maar werd door Helpmij toch niet geaccepteerd. Hoe dan ook, de tweede mogelijkheid is van toepassing.
Ook deze variant snap ik dan niet helemaal; als je een bestand upload naar Wikisend, krijg je een linkje te zien die je moet kopiëren. Die link zet je vervolgens in het Helpmij bericht en daarmee halen wij dan het bestand op. HelpMij hoeft dus helemaal niks te accepteren. Dus misschien moet je het nog een keer posten :).
En ja, taal blijft een lastig ding :D.
 
Ik zal er vanavond naar kijken.
 
Fijn!

Uit mijn bericht van 14-2:
(Er staan ook commentaren n.a.v. foutmeldingen. Via een msgbox-boodschap worden die fouten aangegeven en staan op de daaropvolgende regel in de Access-groene commentaarkleur naast de regel.) Opmerking over "al die velden" (zie jouw reactie van 6 feb): het gaat om 3 tabellen:
tblRekeningen, tblBoekingen en tblGrootboek. De genoemde velden (H1...H12 etc) zijn de velden van tblGrootboek, niet van tblBoekingen.
 
Nee, het gewone leven, vrees ik :). Maar ik kijk er nog wel even naar.
 
Ik heb de db even bekeken, zoals beloofd, maar ik snap er nog niet zo veel van moet ik bekennen. De tabel [tblBoekingen] snap ik nog wel enigszins, al is het veld [Periode] natuurlijk overbodig (je hebt de datum al). De tabel [tblRekeningen] snap ik al wat minder; het lijkt alsof elk tupel uniek is, maar de datums zijn dan nogal beperkend. Daar zou m.i. dan al een koppeltabel bij horen. Maar die zie ik niet. De tabel [tblVaria] is naar mijn idee ook niet goed genormaliseerd; je hebt van elk veld één attribuut teveel. Voorbeeldje: als je een veld [fiAc] hebt, dan heb je de velden [fiBeginAc] en [fiEindAc] niet nodig. Zo ook met [fiBeginKap] en [fiEindKap]. ëen veld ([fKap]) volstaat. Wél moet je natuurlijk de boekingen er op registreren. Wellicht zelfs kun je alle velden vervangen door twee velden: één met het type (Kap, Ac etc) en één met de waarde. En uiteraard de datum.
En de tabel [tblGrootboek] snap ik dus helemaal niet, en ook niet hoe je die denkt te vullen. Op basis van de tabel [tblBoekingen] moet je volgens mij wel een draaitabel kunnen maken die het grootboek maakt, maar er zit een beetje te weinig data in om te zien wat je wilt zien. Iemand die boekhoudkundig is onderlegd snapt waarschijnlijk wél wat de bedoeling is, maar dat ben ik helaas dus niet :).
 
Nee, het gewone leven, vrees ik :).
Dat is toch schitterend! Het 'gewone leven' is er gelukkig nog!:thumb:

De gegevens van het grootboek worden gebruikt om financiële overzichten te maken, zoals balans, resultatenrekening etc. Hoe deze gegevens verkregen (kunnen) worden, is wellicht te verduidelijken met een voorbeeld van een algemeen model zonder al te veel specialistische notatie.
Tabel Rekeningen: rekeningnummer, rekeningnaam, rekeningsoort en alle verdere gegevens die nodig worden geacht.
Tabel Boekingen: datum, rekeningnummer, omschrijving, bedrag
Tabel Grootboek: jan/feb/maart/etc., datum, rekeningnummer (ik gebruik voor de maanden H1, H2, H3, etc. Voor het gemak gebruik ik hier jan, feb, etc)

Procedure periode afsluiten:
1. De af te sluiten maand wordt bepaald en opgeslagen in de variabele: veld1.
2. De vorige reeds afgesloten maand wordt opgeslagen in de variabele: veld2.
3. Stel dat de afsluitperiode feb is, dan betekent dit voor de hierboven genoemde variabelen: veld1=”feb” en veld2=”jan”.
4. Omdat de velden jan/feb/maart etc. van tblgrootboek eindsaldo’s bevatten, zullen in ons geval eerst de gegevens van “jan” moeten worden gekopieerd naar het veld “feb”. Dit gebeurt met een update-commando :” set datum=date(), veld1=veld2” (of met “replace datum with date(), veld1 with veld2). De datum wordt inderdaad ge-update, maar de variabelen veld1 en veld2 niet, terwijl controle toch de juiste maanden laat zien: “feb” en “jan”. Wat is er fout? N.B.: de maanden dec en jan (eindejaar/begin van het jaar) laat ik buiten beschouwing. De programmaregels voor deze fase voldoen en hebben dus de gewenste resultaten.
5. tblBoekingen bevat de gegevens van alle transacties. Voor het geval tblBoekingen nog gegevens van andere maanden zou hebben als die van de af te sluiten maand, wordt het filter gezet op de maand die afgesloten wordt: “feb”. Één rekening kan in een maand meerdere transacties bevatten. Daarom wordt eerst elke rekening in tblBoekingen getotaliseerd. Procedure “Do While. If mRek-RekeningNr Then”. Eerst naar de procedure gaan om indien nodig een nieuw record t.b.v. tblGrootboek aan te maken na controle of het rekeningnummer voorkomt in tblRekeningen. (Append Blanc, replace RekeningNr with mrek, etc.?) Vervolgens moeten de saldo’s van tblBoekingen opgeteld worden bij de rekeningen onder “feb” in tblGrootboek. (saldo=0, saldo=”feb”+bedrag?)
6. tblBoekingen moet worden leeggemaakt.
7. Save all like fi* to fivaria: alle nieuwe waarden opslaan.

Over normalisering wil ik graag (heel graag zelfs) met je brainstormen nadat het bovenstaande probleem (problemen) is opgelost.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan