Bekijk de onderstaande video om te zien hoe je onze site als een web app op je startscherm installeert.
Opmerking: Deze functie is mogelijk niet beschikbaar in sommige browsers.
Ik wil het dus op een andere manier .is dat dan niet mogelijkAls je van die combinatie van velden een sleutelveld maakt, zit je goed. Je krijgt dan bij dubbel invoeren een (weliswaar standaard Access) melding dat je verkeerde data invoert. Die melding kun je dan wel weer vervangen op een formulier door een eigen melding.
Waarom ik het anders wil is omdat de relaties al zijn gemaakt met andere tabellen. Graag wil ik het op tabelniveau als het niet kan dan maar op formulierniveau.Het is wel mogelijk, maar de vraag is of je dat op tabelniveau wilt regelen, of op formulierniveau.
Function SetTableValidation(strTblName As String, strValidRule As String, strValidText As String) As Integer
Dim dbs As Database, tdf As TableDef
Set dbs = CurrentDb
Set tdf = dbs.TableDefs(strTblName)
tdf.ValidationRule = strValidRule
tdf.ValidationText = strValidText
End Function
Ik heb er niet zo heel veel ervaring mee, maar dit heb ik uit de Help gehaald; misschien is het bruikbaar?
In het volgende voorbeeld wordt met de functie SetTableValidation validatie op recordniveau ingesteld om ervoor te zorgen dat de waarde in het veld EndDate een latere datum is dan de waarde in het veld StartDate.
Dim strTblName As String, strValidRule As String
Dim strValidText As String
Dim intX As Integer
strTblName = "Employees"
strValidRule = "EndDate > StartDate"
strValidText = "Enter an EndDate that is later than the StartDate."
intX = SetTableValidation(strTblName, strValidRule, strValidText)
Code:Function SetTableValidation(strTblName As String, strValidRule As String, strValidText As String) As Integer Dim dbs As Database, tdf As TableDef Set dbs = CurrentDb Set tdf = dbs.TableDefs(strTblName) tdf.ValidationRule = strValidRule tdf.ValidationText = strValidText End Function
De functie kun je in elke module zetten, als je hem variabel wilt kunnen gebruiken. Om hem uit te testen kun je hem ook op een formulier gebruiken.
Het aangehaalde voorbeeld zou bijvoorbeeld bij de gebeurtenis <Bij laden> van een formulier kunnen worden aangeroepen; voordat een record wordt opgehaald, wordt dan eerst op de tabel het validatiecriterium ingesteld.
De functie kun je in elke module zetten, als je hem variabel wilt kunnen gebruiken. Om hem uit te testen kun je hem ook op een formulier gebruiken.
Het aangehaalde voorbeeld zou bijvoorbeeld bij de gebeurtenis <Bij laden> van een formulier kunnen worden aangeroepen; voordat een record wordt opgehaald, wordt dan eerst op de tabel het validatiecriterium ingesteld.
strSQL="SELECT Voornaam,Achternaam, Geboortedatum FROM Tabel "
strSQL=strSQL & "WHERE Voornaam = '" & Me.txtVoornaam & "' "
strSQL=strSQL & "AND Achternaam = '" & Me.txtAchternaam & "' "
strSQL=strSQL & "AND Geboortedatum = #" & cDate(Me.txtGeboortedatum) & "# "
With CurrentDB.OpenRecordset(strSQL)
If .RecordCount >0 Then
MsgBox "Dit record bestaat al"
Else
'Hier het commando waarmee je het record opslaat
End If
End With
Tis een beetje stil rond dit antwoord.... Blijkbaar weet men het niet!
Ik zou de oplossing op het formulier inbouwen, en niet op tabel validatie doen.
Je kunt dan bijvoorbeel alle velden laten invullen, en vervolgens via VBA een SQL string laten maken die uit de betreffende tabel de gegevens (probeert) op te halen.
Dus zoiets:
Code:strSQL="SELECT Voornaam,Achternaam, Geboortedatum FROM Tabel " strSQL=strSQL & "WHERE Voornaam = '" & Me.txtVoornaam & "' " strSQL=strSQL & "AND Achternaam = '" & Me.txtAchternaam & "' " strSQL=strSQL & "AND Geboortedatum = #" & cDate(Me.txtGeboortedatum) & "# " With CurrentDB.OpenRecordset(strSQL) If .RecordCount >0 Then MsgBox "Dit record bestaat al" Else 'Hier het commando waarmee je het record opslaat End If End With
Dit is een vrij grof voorbeeld, maar in grote lijnen zou dit moeten werken.
We gebruiken essentiële cookies om deze site te laten werken, en optionele cookies om de ervaring te verbeteren.