Elite Veteran
Beiträge: 876
Ort: Wien | marusek1 - 31.01.12
Die Tabelle besteht aus Spalten: ID(Autowert), Datum, AP1, AP2,AP3, .....AP30. Datum ist indiziert. Spalten AP... werden über Kombifelder mit 30 verschiedenen Namen(Herkunft: Abfrage) befüllt. Hintergrund: es soll kein Name in diesem Datensatz 2mal vorkommen. Danke für die Antwort.
Bist du sicher, dass dein Datenmodell ok ist? Wenn 30 Textfelder eine Abhängigkeit aufweisen, klingt das verdächtig danach, als solltest du eher eine eigene Tabelle mit Fremdschlüssel zur o.a. ID anlegen, in der diese 30 Werte zu Datensätzen werden.
Wenn du hingegen so weitermachen willst/musst, wäre eine Möglichkeit eine VBA-Funktion in der Art:
Function fctCheckForDups() As Boolean
Dim strCtlVal As String
Dim i As Long, j As Long
If IsNull(Screen.ActiveControl.Value) Then Exit Function
strCtlVal = Screen.ActiveControl.Value
For i = 1 To 30
If Me("AP" & i).Value = strCtlVal Then
j = j + 1
End If
Next i
If j > 1 Then
fctCheckForDups = True
MsgBox "Das geht ja gar nicht!", vbCritical, "Doppelte Eingabe"
End If
End Function
Diese Funktion kopierst du ins Formularmodul, hängst noch eine Fehlerbehandlung rein und rufst sie in einem passenden Ereignis auf. z.B. kannst du alle Kombis auf einmal markieren und in die Eigenschaft "Nach Aktualisierung" den Funktionsnamen eintragen, also:
=fctCheckForDups()
Wenn du die Eingabe verhindern/abbrechen willst, kannst du eher das Ereignis "Vor Aktualisierung" der Kombis nützen und nach der MsgBox noch ein
DoCmd.CancelEvent
reinschreiben.
----- Servus
Karl
*********
Access-Entwickler-Konferenz: https://www.donkarl.com/?aek
Access DevCon Vienna: https://www.donkarl.com/devcon
Access Forever: https://www.accessforever.org
Access News: https://www.youtube.com/playlist?list=PLVCeBbJIMDvdJ8ghMbEakJ6_EQyvy... |