Dubbele invoer vermijden voor record

Status
Niet open voor verdere reacties.

hraoul

Nieuwe gebruiker
Lid geworden
17 aug 2017
Berichten
3
Ik heb een tabel Planten met daarin het veld Nederlandse Naam. Hierop is een invoerformulier gemaakt
Ik wil vermijden dat ik een tweede maal eenzelfde plant invoer die al in de tabel voor komt bij de invoer in het invoerformulier in het desbetreffend veld door een waarschuwing zodat ik niet verder invul. Ik heb reeds het volgende maar het werkt niet. Kan mij iemand de fout aangeven :
Private Sub Nederlandse_Naam_AfterUpdate()
If fZoekOp(Me!Nederlanse_Naam) Then
MsgBox "die waarde komt al voor"
End If
End Sub

Function fZoekOp(s As String) As Boolean
Dim fld As Object
With CurrentDb.OpenRecordset("Planten")
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
End Function
 
Totaal onnodig toch?
Beetje voorbarige uitspraak vind ik dat. Tuurlijk, je kunt een unieke index op een veld zetten zodat je geen dubbele waarde kunt invoeren, maar die check wordt pas gedaan als je het formulier sluit of naar een volgend record gaat. En dat is niet altijd handig. Het is, zeker bij grote formulieren, dus wel eens handig om de check gelijk bij het veld te doen. Maar niet op deze nogal ingewikkelde manier, zou ik zeggen.Ik prefereer deze methode:
Code:
Private Sub Nederlandse_Naam_AfterUpdate()
Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT [Nederlanse_Naam] FROM [Planten] WHERE [Nederlanse_Naam] = """ & Me.Nederlanse_Naam & """")
    With rs
        If .RecordCount > 0 Then
            MsgBox "'" & Me.Nederlanse_Naam & "' komt al voor", vbOKOnly, "Dubbele naamcheck"
            Me.Nederlanse_Naam = Null
        End If
    End With
End Sub
 
Acces : dubbele invoer in formulier vermijden

Bedankt voor je tip. Je inleidende opmerking is juist. Ik heb het veld ingesteld alsWanneer ik deze invoer krijg ik bij het verlaten van het veld Nederlandse Naam volgend bericht:
De expressie Na bijwerken die u hebt opgegeven als instelling voor de gebeurteniseigenschap, heeft de volgende fout veroorzaakt: Verwacht: Text of Binary.


* Er is een fout opgetreden bij het evalueren van een functie, gebeurtenis of macro.


Mijn veld noemt Nederlandse Naam, moet dit dan weergegeven worden als Nederlandse_Naam? Ik ben een leek voor VBA!
 
In een veldnaam mogen in beginsel geen spaties zitten als je VBA gebruikt. Access zal daarom zelf al de spatie vervangen door een _ als je IntelliSense gebruikt. Spaties mogen wél als de veldnaam tussen [] staat. Dan moet je juist weer de 'originele' veldnaam gebruiken, dus met spatie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan