[VBA Access] Goede methode annuleerknop

Pagina: 1
Acties:

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 20:37
Beste mensen,

Mijn volgende probleem is niet een vraag naar een script maar meer een vraag naar een goede en snelle methode om een annuleerknop te maken in een formulier met een subformulier. Wat is het 'probleem': ik heb een formulier met een subformulier en hier wil ik een annuleerknop bij hebben. In de huidige situatie gaat het als volgt (record is in dit geval het record van het hoofdformulier en subrecord het gerelateerde record in het subformulier):

- Als er een nieuw record is en ik wil hier een nieuw subrecord aan toevoegen dan wordt het record opgeslagen en het subrecord opgeslagen met een status 'nieuw'. Als ik dit subrecord weer verwijderd wordt dan veranderd de status in 'verwijderd'.
Klik ik vervolgens op de annuleerknop dan worden alle subrecords verwijderd met de status 'nieuw' en 'verwijderd' en vervolgens alle records dmv undo.

- Als het een bestaand record is en ik wijzig de gegevens en ik voeg subrecords toe dan krijgen ze de status 'nieuw'. Als ik subrecords verwijder dan veranderd de status in 'verwijderd'.
Als ik vervolgens op de annuleerknop klik dan worden alleen de subrecords met status 'nieuw' verwijderd en worden de wijzigingen in het record door middel van undo teruggezet.

Nou is mijn vraag: is hier geen standaard methode voor te bedenken zodat ik de statussen niet meer hoef te gebruiken en dat ik geen 'moeilijke' functies hoef te schrijven om alles te controleren?

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

Op het eerste gezicht zou ik zeggen: transaction management op je database (maar ik weet/denk niet dat Access dat ondersteunt :+) Je opent een transactie, laat de user lekker z'n gang gaan, en je voert pas een commit uit als er op OK wordt geduwd. Wordt er gecanceld, dan stap je dmv een rollback volautomatisch terug naar de situatie die je had voordat het form/de forms geopend werd(en). Dit levert overigens wel problemen op als verschillende users op dezelfde data zitten te werken (zoek maar eens op concurrency, en op optimistic/pessimistic locking).

Kan Access dit niet aan, dan zou ik de te bewerken data kopieren, de user bewerkingen op de kopie laten uitvoeren, en pas als er op OK wordt geklikt de bewerkte gegevens naar Access schrijven. Eventueel kan je natuurlijk ook alle wijzigingsopdrachten van de user opslaan, maar dat lijkt me wat lastiger als je je controls rechtstreeks aan je data hebt gebind bound gebinded geboundedt gekoppeld.

Is dat wat je bedoelt?

[ Voor 24% gewijzigd door Rataplan op 28-11-2003 10:44 . Reden: volstrekt gemist dat taal en db in de topictitel staan :D ]


Journalism is printing what someone else does not want printed; everything else is public relations.


  • Boss
  • Registratie: September 1999
  • Laatst online: 06:28

Boss

+1 Overgewaardeerd

Als de gegevens op het subformulier via een 1-op-veel relatie aan het hoofdformulier hangen is het toch niet zo moeilijk? Dan stel je via referentiële integriteit in dat de gegevens trapsgewijs verwijderd moeten worden. (als je 't nog niet gevonden had: dat doe je in het relatiescherm van Access).

Als je dan het hoofdrecord verwijderd, worden alle subrecords automatisch ook verwijderd.

Extra velden maken in een tabel die alleen voor dit soort dingen worden gebruikt is volgens mij heel erg 'not done' bij database ontwerpen.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Carpenter
  • Registratie: December 2002
  • Laatst online: 20:37
Ik was idd wel op de hoogte van de referentiele integriteit maar niet dat je ook trapsgewijs kan bewerken en verwijderen. Ik zal kijken of ik er wat mee kan doen. Tnx anyway :*)