bij niet-unieke waarde formulier sluiten

Status
Niet open voor verdere reacties.

Noordhoekie

Gebruiker
Lid geworden
17 jul 2009
Berichten
41
Ik heb een formulier gemaakt in Access met daarin een veld waar alleen unieke records zijn toegestaan. Ik heb hiervoor in de tabel aangegegeven (geen duplicaten).

Op het moment dat iemand een waarde ingeeft die al in gebruik is, wil ik dat het formulier wordt gesloten en dat men een bepaalde melding krijgt. Nog mooier zou zijn dat men dan in een nieuw formulier komt waarin men een zoekfunctie kan starten. Is zoiets mogelijk of zijn er wellicht andere manieren om dit te bereiken?

Alvast bedankt voor jullie hulp!

Inez
 
Daarvoor zou je denk ik een ongebonden (unbound) formulier moeten hebben, want normaal gesproken krijg je pas een waarschuwing als je het formulier probeert te sluiten, of naar een ander record gaat. Ik neem aan, dat het hier niet om een sleutelveld gaat? Of een sleutelveld dat (semi) geautomatiseerd door de gebruiker wordt opgehoogd?
Kun je eventueel een voorbeeldje neerzetten? Want er is vermoedelijk wel wat toegesneden code nodig om het goed werkend te krijgen. Het kan denk ik wel...

Overigens vind ik een formulier sluiten een heel drastische oplossing; ik zou er eerder voor zorgen dat de gebruiker geen verkeerde waarden in kan typen.
 
Laatst bewerkt:
Gebruik de Voor Bijwerken gebeurtenis van het formulier in kombinatie met de funktie DCount.

Grtz,

Tardis
 
Het sluiten van het formulier is inderdaad wel een drastische oplossing. Na een beetje speurwerk op het forum ben ik inmiddels op het spoor gezet hoe je een melding kunt laten zien als de waarde al voorkomt. Dit helpt al veel. Ik gebruik de volgende code:
Code:
Private Sub BSN_AfterUpdate()

     If fZoekOp(Me!BSN) Then
        
        MsgBox "Client bestaat al"
          
        End If
End Sub

Function fZoekOp(s As String) As Boolean
    Dim fld                      As Object
    With CurrentDb.OpenRecordset("Client_tbl")
        While Not .EOF And Not fZoekOp
            For Each fld In .Fields
                If fld.Value = s Then
                    fZoekOp = True
                    Exit For
                End If
            Next
            .MoveNext
        Wend
    End With
End Function
Maar op het moment dat je dan een melding krijgt (after-update), dan is het record al opgeslagen. Hoe kan ik er nu voor zorgen dat het huidige record niet wordt opgeslagen als het geen uniek veld betreft? Als het record namelijk niet uniek is, bestaat de client namelijk al en hoeft men geen nieuw record aan te maken. Het veld dat uniek moet zijn is overigens een sleutelveld.
 
Natuurlijk, met Undo......

Ik ga het op deze manier doen, dus niet het formulier sluiten, maar de melding geven dat de waarde al voorkomt en daarna het record verwijderen!

Bedankt voor het meedenken!

Inez :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan