data uit verschillende tabellen verwijderen

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

jacw

Gebruiker
Lid geworden
23 sep 2006
Berichten
74
Goedemiddag,

Ik heb nog een vraag voor mijn facturatieapplicatiee in Access.

Ik ben nu voor het zesde jaar met dit programma bezig en heb diverse uitbreidingen gedaan.
Basis: Als ik een factuur maak, dan wordt via een aanmaak Query de gemaakte data in een tabel gezet en zo voort. Dit om bij prijswijzigingen en of veranderende omschrijvingen, geen oude facturen te veranderen.

Hierdoor moet ik bij een fout gemaakte factuur diverse tabbelen bijlangs om datta te wissen.

Nu is mijn vraag: kan dit ook automatische? en kan de database dan ook gecomprimeed en hersteld worden zodat de nummering van de facturen opeenvolgend blijft.

Het gaat om de volgende tabellen:
opgeslagen data tbv factuur
openstaande posten
factuurregels
facturen


Factuurid is het geen waaropgezocht moet worden en dus ook alleen die factuur met daarbij behoorende data dient te worden verwijderd plus dat comprimeren en herstelen van de database,

Wie kan mij helpen?

B.v.d.
JacW
 
Ik snap niet helemaal wat je aan het doen bent; al begrijp ik wél dat je geen variabele gegevens in een factuur wilt hebben omdat een gemaakte factuur niet meer gewijzigd mag worden. Normaal gesproken geldt dat in ieder geval voor de prijzen, maar bij jou blijkbaar ook voor de omschrijvingen van de artikelen. Kan ik mij nog wat bij voorstellen ook :). Dus op een bestelling kies je artikelen, en dan wil je de variabele gegevens daarvan niet meer kunnen veranderen. Dat is allemaal heel simpel te maken, en eerlijk gezegd snap ik niet wat die Aanmaakquery in het proces doet. Ik regel dat namelijk altijd vanuit de keuzelijsten. Dan heb ik dus in de besteltabel en facturentabel aparte velden voor die velden, die gevuld worden bij het kiezen van het artikel. Als dan de prijs in je artikelen tabel verandert, dan blijft die prijs gewoon staan in de factuur, omdat je die al als vaste waarde hebt gekozen bij het aanmaken van de bestelling/factuur. Je werkt dus altijd met de actuele gegevens die je in de tabellen vastlegt.

Bij het maken van een fout (verkeerde artikel gekozen bijvoorbeeld?) herstel je dat in het formulier, en heb je ook gelijk de prijzen weer actueel. En/of de omschrijving. Als ik jouw methodiek lees, zou ik eerder met een Bijwerkquery werken dan met een Aanmaak query. Maar goed, het is jouw proces :).

Het verwijderen van records kan je heel simpel maken, door in de relatie van de tabellen het vinkje te activeren bij Gerelateerde records trapsgewijs verwijderen. Als je dan een factuur verwijdert, dan haalt Access ook de bijbehorende Factuurregels weg. Hoef je allemaal niet zelf te doen. Maar wat niet kan, is met Database comprimeren en herstellen de factuurnummering herstellen. D.w.z: dat werkt alleen bij het laatste record. Dus als je net een factuur hebt ingevoerd, en een fout maakt, dan kun je dat record gelijk verwijderen en de db comprimeren en herstellen. Maar als je daarna alweer een nieuwe factuur hebt gemaakt, dan kan dat dus al niet meer.
Daarbij is het de vraag of het wel zo handig is om een Autonummerveld te gebruiken voor je factuurnummers, juist omdat de kans dat je gaten maakt zo groot is. Veel beter en handiger is het om zelf een functie te maken die de nummers genereert op basis van de laatste factuur in je tabel. Dan kun je ongestoord facturen aanmaken en weggooien, het eerstvolgende nieuwe nummer is dan altijd het Laatste factuurnummer + 1. En een ander voordeel: je hoeft de database niet elke keer bij elke fout te comprimeren en herstellen. En je kunt ook nog eens een foutief record met een lager nummer verwijderen en dat nummer opnieuw gebruiken.

Kortom: ook na zes jaar lijkt de database nog vatbaar voor enkele verbeterpuntjes :).
 
Een heel lang antwoord en ook duidelijk.
Echter als Leek op heg gebied van Access heb ik stap voor stap het programma opgebouwd en eigenlijk geen gebruik gemaakt van VBA.

Het probleem waar ik eerst tegenaan liep bij het maken van het programma was dat de ingevoerde data voor de eerste factuur ook in de twee derde etc terrecht kwam.
Volgend probleem was dat als ik een prijs of omschrijving in de tabel ging veranderen de prijzen in de oude factuur mee gingen en ik ook geen vergelijkbaar maand en kwartaal overizcht meer had.

Eigenlijk heb om de problemen heen gewerkt en zit dus nu opgescheept met dit programma.

Echter om opnieuw te beginnen en de oude data dus niet meer te kunnen gebruiken is eigenlijk geen optie.
de database even uploaden is eigenlijk geen optie ivm de privé gegegvens van mijn klanten.

De oplossing die jij aandraagt weet ik niet of dat wel werkt.
ik heb niet overal een relatie tussen zitten.

Mijn gedachte om dus een formulier aan te maken waarbij om een factuur nummer wordt gevraagd met daaronder een knop die een gebeurtenis procedure uitvoert, die desbetreffende regels verwijderd is dus niet mogelijk.

Ik maak 1 hooguit twee facturen per dag en kom er gelijk achter of een factuur goed is.

Met groet,

Jac
 
Normaal geef je de factuur slechts een nummer op het moment dat je die definitief maakt en verzendt. Ik heb 3 statussen in een factuur:
* aangemaakt: de factuur is nog aanpasbaar en kan verwijderd worden. Dan kan je nog gemakkelijk via hetzelfde factuurscherm eerst de factuurlijnen verwijderen uit de tabel InvoiceLines (staan in een subform op het formulier) en vervolgens de factuurhoofding uit de hoofdtabel Invoices. Dit is standaard en gaat zonder enige programmatie.
* berekend: de bedragen (totalen, BTW) worden in een after update procedure van het statusveld berekend maar kunnen nog aangepast en herrekend worden. De lijnen kunnen ook nog verwijderd worden, zowel uit het subformulier met de lijnen als (nadat alle lijnen verwijderd zijn) uit het hoofdformulier.
* geconfirmeerd: de factuur krijgt een nummer en wordt afgesloten en kan niet meer veranderd of verwijderd worden. Voor de nummering begin ik elk jaar terug van één te nummeren en het laatst gebruikte nummer wordt bijgehouden in een aparte tabel per jaar en per type (factuur/pro forma/credit nota). Maar er zijn nog andere nummeringssystemen mogelijk. Je kan het volgende nummer dan via een domein functie zoals dlookup ophalen.
Hiervoor kan je een paar kleine gebeurtenisprocedures maken :
* OnCurrent van het formulier: kijkt de status van de factuur na en maakt het formulier read-only als de factuur al genummerd is of laat alle bewerkingen toe als de factuur een lagere status heeft
* After update van het statusveld: als de nieuwe status geconfirmeerd is dan wordt het factuurnummer opgehaald en ingevuld en het formulier op read-only gezet.

In België mag je namelijk gemaakte en genummerde facturen achteraf niet meer aanpassen/ verwijderen. Bij fouten moet je een credit nota maken.
 
Echter als Leek op heg gebied van Access heb ik stap voor stap het programma opgebouwd en eigenlijk geen gebruik gemaakt van VBA.
Een goed werkende database maken zonder VBA is eigenlijk onmogelijk. Ik lees in je antwoord dat je systeem bepaald niet perfect is gemaakt, en ik zou daar toch tijd in steken: verbeteren begint nooit te vroeg, maar altijd te laat :). Je kunt uiteraard dieper in het moeras zakken als je dat prettig vindt, maar er komt een moment dat je er dan niet meer uitkomt. Effe goed slikken, en dan toch maar eens gaan sleutelen.
 
Echter als Leek op heg gebied van Access heb ik stap voor stap het programma opgebouwd en eigenlijk geen gebruik gemaakt van VBA.

Dat is nu net ook het mooie van Access: je kan heel snel een front-end applicatie bouwen zonder gebruik van VBA en je kan snel je database tabellen aanmaken in hetzelfde programma. Om een database (= data structuren) aan te maken heb je trouwens nooit VBA nodig, ongeacht de omgeving waar je deze aanmaakt. Als je met office 365 werkt, dan zie je ook dat de apps meer en meer low-code of no-code worden.
Natuurlijk, als je VBA in Access gebruikt, kan je de front end applicatie wel verder automatiseren en zelfs heel gesofisticeerde programma's gaan bouwen én dan heb je er ook een leuke hobby bij :-) .
Maar als je op een vlotte manier een gebruikers interface wil uitbouwen, met of zonder VBA, dan moet de data structuur (tabellen/relaties/views/indexen, ...) wel goed zitten en juist gestructureerd zijn

Wens je daar zelf niet te veel tijd in te steken dan zou ik het oude programma houden als archief voor de oude facturen en eens on line gaan kijken voor een nieuw, moderner programma. Er zijn daar een hoop goede en gratis, of zeer goedkope kant-en klare programma's te vinden waarmee je facturen kan maken. Tip: je boekhouder kan je zeker hierbij helpen.
 
Je zou na 16 jaar HelpMij moeten weten dat jij als TS dat echt zelf moet doen :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan