Welkom op het forum van startpagina!

Dit forum staat op alleen-lezen. Je kan hier informatie zoeken en oude berichten terugvinden, maar geen nieuwe berichten plaatsen.

Naar overzicht van alle forums

Dubbele records vermijden

  • Jan Mertens

    Beste,

    voor mij stageopdracht moet ik een accessproject debuggen dat door een stagestudent van vorig jaar is ontworpen, een van de bugs is een heel vervelende en dient ao snel mogelijk opgelost te worden.

    De situatie:

    Accesstoepassing met een Accessbestand voor de gegevens en een Accessbestand met de toepassing. De toepassing is verdeeld over een aantal werkstations over het bedrijf. Als er nu meerdere personen tegelijk een record willen toevoegen, dan loopt het mis… de stagestudent van vorig jaar werkt namelijk niet met autonummering maar hij telt verhoogt telkens de laatst opgeslagen record met 1 en dit bij het laden van het invulformulier.

    Ziet iemand hiervoor een deftige oplossing waardoor ik met een minimum aan wijzigingen toch een goed draaiende toepassing kan afleveren.

    Ik had gedacht om de nieuwe recordnummer pas bij het opslaan toe te kennen, zo verkleint de kans dat er een andere record zordt overschreven gevoelig, maar de kans blijft naturlijk wel bestaan. Ook is er de optie om met autonummering te werken, maar dan moet ik wel veel wijzigen in de programmatructuur.

    Alvast bedankt

    Jan

  • Eric B

    Je geeft in feite zelf het antwoord een zelf verhogende nummering geeft vroeg of laat problemen in een omgeving met meerdere gebruikers hoe je het ook programmeert.

    Persoonlijk zou ik kiezen voor een autonummering. Heb je gekoppelde tabellen dan kan je eenvoudig door een update query te maken de nummering door voeren in de gekoppelde tabellen.

    Als je aan de slag gaat doe dat dan wel met een kopie van je tabel….en zet deze dan terug nadat alles correct functioneert.

  • Jan Mertens

    Beste,

    Ik heb al allerlei pogingen ondernomen om dit probleem op een of andere manier te omzeilen.

    Ik heb automummering proberen in te voeren, ik heb geprobeerd om de unieke nummer pas toe te kennen bij het opslaan van de gegevens… het grote probleem is eigelijk dat de vorige programmeur er een rommelboel van gemaakt heeft, geen documentatie, zelfs geen lijntje commentaar… De kleinste wijziging is groot genoeg om heel het systeem uit balans te brengen. Ik ben nu bezig om alles in kaart te brengen en alle verwijzingen naar andere tabellen, globale variabelen en procedures te documenteren.

    Groetjes

    Jan

  • Eric B

    Goed Plan….

  • RV2

    Jan,

    probleem ligt op het MOMENT WAAROP het nummer wordt uitgegeven en kombinatie met een verschijnsel dat recordlocking wordt genoemd.

    Autonummering is geen oplossing en geeft hetzelfde probleem, sterker nog, is absoluut af te raden simpelweg omdat Access bepaalt wanneer een autonummer wordt uitgegeven, niet de beheerder of een gebruiker.

    Je moet de oplossing zoeken in een kombinatie van oplossingen:

    - laat je volgnummer op een later moment genereren, bijvoorbeeld bij het verlaten van het huidige (nieuwe) record, door code onder een knop waarop gebruikers verplicht moeten klikken.

    - overweeg om je database te splitsen in een frontend en een backend

    - bestudeer het verschijnsel recordlocking

    Als het gaat om een administratief en / of een extern te kommuniceren volgnummer en / of een wettelijk verplicht volgnummer zoals een faktuurnummer, gebruik dan zeker nooit autonummering.

    Autonummering is alleen bedoeld om gegevens makkelijk te kunnen identificeren en te traceren en is absoluut ongeschikt om te gebruiken als volgnummer.

    Hoofdreden waarom autonummers ongeschikt zijn is dat er makkelijk gaten in de nummering kunnen vallen (denk aan per ongeluk invoeren, Access heeft ondertussen wel een autonummer aangemaakt en da's niet terug te draaien).

    Of denk aan een netwerkverbinding die uit de lucht gaat, wederom is het autonummer al uitgegeven…

    Kijk ook een op deze site, daar kun je een massa info vinden over dit soort onderwerpen:

    http://office.webforums.nl/forum/index.php

    RV2

  • Jan Mertens

    Beste RV2,

    Bedankt voor de uitleg…

    Ik heb het ondertussen zo goed als klaar gekregen, ik genereer pas een nieuwe recordnummer als er op de knop opslaan geklikt wordt. Met de DMax functie vraag ik dan de hoogste recordnummer en tel 1 verder.

    Er is nu enkel nog een probleem met een aatal subformulieren waarin de unieke nummer gebruikt wordt, de nummer is op voorhand nog niet bekend, dus kan die ook niet gebriukt worden. Ik ga nu proberen de gerbuiker te dwingen om een bepaald record eerst op te slaan vooraleer de bewuste tabbladen bereikt kunnen worden. Bestaat er een functie waarmee je kan controleren op welke tab je klikt?

    Alvast bedankt

    Jan

  • Jan Mertens

    Beste,

    De aanpassingen aan de programmacode zijn aangebracht en alles werkt nu zoals het moet.

    De nieuwe records worden in de gegevensdatabase weggeschreven, en de gerelateerde records op de subformulieren krijgen ook de juiste nummer toegewezen.

    Nu is er echter nog een heel vervelend bug in deze database, in de eerste record wordt de automatisch nummering verwijderd zodat er een null waarde in komt te staan. Natuurlijk is de referentie naar de gerelateerde records dan ook verdwenen.

    Heeft iemand hier misschien een verklaring voor?

    mvg

    Jan