Hej, Den enklaste lösningen är att skapa ett unikt index med de fält som skall vara unika t.Ex. FörNamn EfterNamn ellett.ex bara person nummer.<br> Har gjort ett exempel och lagt upp det i filarean:Förhindra semantisk lagring (tror jag att det heter)
Jag har ett formulär där jag skriver in personuppgifter, dessa lagras givetvis i en databas.
Problemet ligger i att jag inte vet hur jag ska göra för kontrollera om de uppgifter som skrivs in i formuläret redan finns i databasen.
Om uppgifterna redan finns i databasen ska uppgifterna från formuläret inte sparas. I stället ska jag använda mig av primärnyckeln för den rad där uppgifterna finns i databasen(Men detta är ett senare problem).
Kan jag göra denna jämförelse med VB?
Mvh
AndersSv: Förhindra semantisk lagring (tror jag att det heter)
<br>
Lägg in kod i OnError eventet på formuläret för att fånga felkoden:
Exempel:
<code>
Debug.print lngDataErr
</code>
Komer inte ihåg vad den heter. Är en parameter till OnError eventet.<br>
<br>
Skriv sedan något sånt här med rätt kod oc variabel namn för felkod:
<code>
Dim rsTemp as Recordset
Dim
Select Case lngDataErr
Case 1 ' Skall vara den riktiga felkoden
Select Case MsgBox("Personen finns redan!" + vbCrLf + "Vill du navigera till posten?", vbInformation or vbYesNoCancel)
Case vbYes
Set rsTemp = Me.RecordsetClone
rsTemp.FindFirst "Fält1= '" & Me.Fält1 & "' And Fält2 = '" & Me.Fält2 & "'"
If rsTemp.NoMatch Then
Msgbox "Post ej funnen!" 'Kan bero på att det är ett filter på formuläret
Else
Me.Undo
Me.Bookmark = rsTemp.Bookmark
End If
lngResponse = acDataErrContinue
Case vbNo
lngResponse = acDataErrContinue
Case vbCancel
Me.Undo
lngResponse = acDataErrContinue
End select
End select
</code>
Har inte tillgånt till access på dena dator för att testa koden. Fin säkert massa stavfel. Men hoppas du förstår vad jag menar.Sv: Förhindra semantisk lagring (tror jag att det heter)
Programarkivet:För hindra dubletter i Access