controle bij record wissel

Status
Niet open voor verdere reacties.

Sytse1

Gebruiker
Lid geworden
9 aug 2007
Berichten
584
Office versie
miDer
Volgens mij heb ik alle formulier opties geprobeerd om bij het verlaten van een record een controle op het te verlaten record uit te laten voeren.
Ik wil controleren of een paar velden zijn ingevuld en zo niet de gebruiker de keuze geven om terug te gaan naar het record om de velden alsnog in te vullen of het record te wissen.
Een code hiervoor
Code:
Dim Antwoord
If Me!Vestiging = 0 Or Me.Voornaam = Null Or Me.Achternaam = Null Then
Antwoord = MsgBox(" U heeft de Vestiging en/of Voornaam en/of Achternaam niet ingevuld. " _
& Chr(13) & " Kies Ja en dit record wordt verwijderd. ", 4, "Attentie")
If Antwoord = 6 Then
Me.Undo
ElseIf Antwoord = 7 Then                '7 = nee
SendKeys "{Esc}"                        'Annuleren en sluiten
End If
End If
Wat doe ik fout?
 
Je kan in de tabelontwerp aangeven of het een verplicht veld is.
 
Daarmee los je de controle op het formulier niet op. Wat ik zelf doe: ik gebruik een Integer variabele die voor alle verplichte velden verhoogd wordt met een getal. Op basis van dat (eind)getal weet ik dan exact wat er niet is ingevuld. Dan krijg je zoiets:
Code:
    If Me.Vestiging <> vbNullString Then chk = 1
    If Me.Voornaam <> vbNullString Then chk = chk + 2
    If Me.Achternaam <> vbNullString Then chk = chk + 4
    Select Case chk
        Case 1
            MsgBox "'Voornaam' en 'Achternaam' zijn niet ingevuld.": Exit Sub
        Case 2
            MsgBox "'Vestiging' en 'Achternaam' zijn niet ingevuld.": Exit Sub
        Case 4
            MsgBox "'Vestiging' en 'Voornaam' zijn niet ingevuld.": Exit Sub
        Case 3
            MsgBox "'Achternaam' is niet ingevuld.": Exit Sub
        Case 5
            MsgBox "'Voornaam' is niet ingevuld.": Exit Sub
        Case 6
            MsgBox "'Achternaam' is niet ingevuld.": Exit Sub
    End Select

De invulling kun je uiteraard met andere acties invullen.
 
OctaFish,

Zou zeggen probeer het eens uit, je kan niet naar een ander record als de verplichte velden niet zijn ingevuld.
 
En jij dacht dat ik dat niet wist? Ik laat zien hoe je kunt checken wát er niet is ingevuld.
 
Je kan de tag eigenschap gebruiken. Vul daar voor de verplichte velden bvb de code M van mandatory in. In de beforeupdate van het record laat je een code gebeuren die alle velden met de tag waarde "M" gaat controleren of die ingevuld zijn. Bij elk veld dat niet aan de voorwaarde voldoet bouw je een error string op (gebruik de tekst van de bijbehorende label om aan te geven over welk veld het gaat). Als alle velden gekontroleerd zijn en de lengte van de error string > 0 dan toon je de error boodschap en undo je de update en kan de gebruiker de aangeduide velden alsnog invullen. Geen gedoe met optellen van getallen. En als je code correct geschreven is en er een verplicht veld bijkomt moet je alleen in de tag eigenschap een 'M' typen zonder iets aan je code te veranderen.
 
Geen gedoe met optellen van getallen.
Er zijn meerdere manieren om te checken of alle verplichte velden gevuld zijn. De mijne kun je gebruiken als je wilt weten welke velden niet zijn ingevuld, als een manier ook om de juiste gelijk te activeren. Dat gaat met jouw methode niet. 't Is maar wat je wilt gebruiken. En als je dit 'een gedoe' vindt, moet je wellicht een ander vak zoeken :).
 
Als je de tag methode gebruikt krijgt de gebruiker ook éénmaal een message met alle vergeten in te vullen velden aangezien je ze tijdens de kontrole opbouwt. Het grote voordeel is dat, als er een verplicht veld bijkomt, je niets meer aan de code moet aanpassen. Ik vraag altijd aan mijn programmeurs dat hun code geschreven is zodat de gebruiker zoveel mogelijk zelf kan aanpassen zonder in de code te moeten ingrijpen.
 
Bedankt voor jullie bijdrage.
Verplicht via de tabel is niet mijn oplossing. Hiervoor zijn er een aantal nadelen. (mijn mening)
De beveiliging oplossing van Noella is voor mij niet van toepassing.
De wijze van Octafish is ook mijn oplossing maar ik heb volgens mij de form acties voor het wisselen van een record geprobeerd echter zonder resultaat. Ter aanvulling. Er wordt naar een ander record gegaan via een uitrol venster. Hier wordt de andere medewerker geselecteerd. De volgende controle cq record wijziging gebeurd als een nieuw record wordt verlaten en als laatste als vanuit het record het form wordt gesloten.
Bij welke actie kan ik de controle op de recordwisseling nu afdwingen?
 
Ik snap je werkwijze niet helemaal; met “Uitrolvenster” bedoel je waarschijnlijk een Keuzelijst met Invoervak, waar je dan een actie kiest? De logica hiervan ontgaat mij eerlijk gezegd dus. Doorgaans zijn knoppen in de voettekst/koptekst een stuk logischer en makkelijker.

Zo zou het m.i. moeten werken: je maakt (met een knop, of desnoods een keuzelijst (niet-afhankelijk) in een koptekst een nieuw record aan. Dat kan op een doorlopend formulier, of een enkelvoudig formulier, dat maakt voor het proces niet uit. In dat formulier heb je een aantal velden die je verplicht in moet vullen voordat je naar een volgend (of nieuw) record mag gaan.

Ik zou, om te voorkomen dat de verplichte velden niet ingevuld zijn, dus alle opties om het formulier te verlaten (of het record), uitschakelen op het formulier. Dus de knop <Nieuw record> is sowieso disabled tot alle verplichte velden zijn ingevuld. Formulier sluiten? Disablen. Blader knoppen? Disablen. Op die manier dwing je de gebruiker om alles op het formulier in te vullen.
Daarnaast kun je dus de truc die ik heb uitgelegd gebruiken om te controleren of aan alle voorwaarden is voldaan, en op basis waarvan je dus de formulier opties/knoppen weer aan zet. Want als alle verplichte velden zijn ingevuld, mogen ze opslaan en/of een nieuw record aanmaken.
 
Ocrafish, bedankt voor je uitleg en oplossing.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan