Dubbele invoer kunnen vermijden in form. Klanten

Status
Niet open voor verdere reacties.

gebo51

Gebruiker
Lid geworden
30 mei 2007
Berichten
100
Beste forumleden,

Ik vraag me af of het mogelijk is om dubbele invoer van 'klantgegevens' in een formulier te vermijden.
De situatie:

Ik heb een formulier 'Klanten'' die is verbonden met de tabel 'Klanten'
Gebruikers van de database gebruiken de standaard zoekfunctie (zoeken op naam v/d klant of op het adres/postcode) om in het formulier te bekijken of een 'klant' reeds aanwezig is. Toch komt het vaak voor dat een gebruiker onnauwkeurig zoekt en de 'klantNAWgegevens' (opnieuw) invoert.

Is het mogelijk dat- na de invoer van de klant - het systeem checkt of bijv. de postcode en het huisnummer overeenkomen met de reeds aanwezige gegevens, de betreffende record wordt getoond, je een melding ontvangt en de invoer wordt gecanceld?
(ik hoop dat ik niet te veeeeel vraag)

Alvast dank:thumb:

Mvg.
 
Laatst bewerkt:
Dat kan met behulp van een stukje VBA code waarin je de funktie DCount gebruikt.
Code zet je in de Voor Bijwerken gebeurtenis van je formulier.

Hoe?
Onderwerp is ongetwijfeld al vaker besproken, zoek even in het forum.

Waarom gebruik je geen keuzelijst met invoervak?
Kun je mbv een stukje code zo opstellen dat na het typen van iedere letter gefilterd wordt.

Groet,

Tardis
 
Beste Tardis,

Dank voor je reactie.

Ik ben inmiddels tot de volgende code gekomen:

Code:
Private Sub Postcode_AfterUpdate() 
On Error GoTo Klanten_adres_postcode_valideren_Err 

Dim stDocName As String 
Dim stLinkCriteria As String 

'check op adres in combi met postcode.Indien aanwezig in tabel klanten wordt de betreffende 
'record uitgefilterd. 

stDocName = "klanten" 

If (Eval("DLookUp(""[postcode]"",""[Klanten]"",""[postcode] = Form.[postcode] "") Is Not Null")) Then 
If (Eval("DLookUp(""[adres]"",""[Klanten]"",""[adres] = Form.[adres] "") Is Not Null")) Then 

msgbox "Het adres in combinatie met de postcode komt reeds voor in 'klanten'" _ 
& vbCrLf & "Controleer of de gegevens van uw 'nieuwe klant' overeenkomen" _ 
& vbCrLf & "met de klant die NU wordt uitgefilterd", vbCritical, "Bedrijf" 

'Sluit het formulier 'klanten' en opent het formulier opnieuw met de uitgefilterde record. 

[COLOR="Red"]DoCmd.Close 
DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, , acWindowNormal [/COLOR]

If msgbox("Het adres en de postcode van deze klant komen overeen met uw ingevoerde nieuwe gegevens" _ 
& vbCrLf & vbCrLf & "Wilt u toch een nieuwe klant(record) aanmaken?" _ 
, vbYesNo Or vbExclamation Or vbDefaultButton2, 
"Bedrijf") = vbYes Then 
msgbox "Een lege record wordt geopend; U dient de gegevens opnieuw in te voeren", vbExclamation, "Bedrijf" 

DoCmd.ShowAllRecords 
DoCmd.RunCommand acCmdRecordsGoToNew 

Else 

DoCmd.ShowAllRecords 
End If 
End If 
End If 

Klanten_adres_postcode_valideren_Exit: 
Exit Sub 

Klanten_adres_postcode_valideren_Err: 
msgbox Error$ 
Resume Klanten_adres_postcode_valideren_Exit 

End Sub

Het werkt nu naar behoren.
Ik zoek nu nog een oplossing voor onderstaand stukje code:


Code:
'Sluit het formulier 'klanten' en opent het formulier opnieuw met de uitgefilterde record. 

DoCmd.Close 
DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, , acWindowNormal
Is het ook mogelijk dat het formulier klanten niet wordt gesloten en dat de betreffende record direct wordt uitgefilterd?



Bedankt alvast:thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan