Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Dialog bei doppelter Eingabe

Begonnen von gromax, Januar 18, 2015, 18:21:22

⏪ vorheriges - nächstes ⏩

gromax

Liebe Access-Profis,

ich erstelle eine Ausfallverwaltung für den Personalbereich in der Schulverwaltung. In einer Tabelle (tbl_LEHRKRAEFTE] werden die Beschäftigten mit [LEH_Nachname], [LEH_Vorname] und [LEH_GebTag] erfasst.
Wie kann ich denn einen Dialog einrichten, der bei Gleichheit aller drei Eingaben rückmeldet, dass dieser Beschäftigte bereits angelegt wurde und – falls dies jemals Wirklichkeit sein sollte - ob er mit diesen Daten erneut angelegt werden soll.
Aktuell besteht in meiner DB die Möglichkeit, dass unsere Mitarbeiter dieselbe Lehrkraft wiederholt und mehrfach anlegen!

Vorab vielen Dank für Tipps und Hilfen
gromax

database

Hallo,

sollte mit einem zusammengesetzten eindeutigen Index zu machen sein.
Die Fehlermeldung, die bei Eingabe auf Formularebene ausgelöst wird sollte sich per VBA abfangen und entsprechend deiner Vorstellungen verarbeiten lassen.

DF6GL

Hallo,

es ist recht unwahrscheinlich, dass zwei oder mehrere Personen mit derselben Datenkombination in dieser Umgebung vorkommen, so dass sich hier ein zusammengesetzter eindeutiger Index (in der Tabelle) anbietet. Ein im Fall der Fälle auftretender Fehler kann im Form_Ereignis "Bei Fehler" behandelt werden. Diese Lösung bietet aber nicht die Entscheidung darüber, ob der "doppelte" Name nicht doch gespeichert werden soll/darf.

Soll/darf diese Entscheidung getroffen werden müssen, so wäre eine Prüfung auf Datengleichheit in Form-Ereignis "Vor Aktualisierung" angebracht:

Sub Form_BeforeUpdate (Cancel as Integer)

If Dcount("*","tbl_Lehrkraefte","LEH_Nachname ='" & Me!LEH_Nachname & "' And LEH_Vorname ='" & Me!LEH_Vorname & "' And LEH_GebTag = " & Format (Me!LEH_GebTag,"\#yyyy-mm-dd\#")  > 0 Then
  If Msgbox  ("Person existiert schon, trotzdem speichern?", vbquestion + vbYesNo) = vbNo then
    Cancel=true
    Me.Undo
    Me.Undo
End If

End Sub



Insgesamt schützen aber beide Methoden nicht von versehentlichen Tippfehlern, bzw. unterschiedlichen Schreibweisen bei den Namen.

database

Hi,

Bei Lösung über eindeutigen Index ist es NICHT möglich die Kombination nochmals anzulegen.

gromax

Hallo Peter, hallo DF6GL,

die Lösung mit dem mehrfachen Index funktioniert bei 3facher Gleichheit der Eingaben nicht; der VBA-Code ist dagegen klasse! Super Hilfe!

Vielen Dank euch beiden!
gromax

MzKlMu

#5
Hallo,
Zitatdie Lösung mit dem mehrfachen Index funktioniert bei 3facher Gleichheit der Eingaben nicht;
das funktioniert mit absoluter Sicherheit und lässt sich auch nicht austricksen, so sicher wie das Amen in der Kirche.  ;D
Du hast einen Fehler gemacht, mit dem Anlegen des 3-fach Index.

Im Anhang ein Beispiel. Lege mal den Meier Kurt mit dem gleichen Datum noch mal an, bzw. versuche es.
Gruß Klaus

gromax

Hallo Klaus,

nicht dass wir aneinander vorbei reden; wenn ich meine, es funktioniert nicht, dann meine ich nur, dass das doppelte Anlegen eines Datensatzes bei 3facher Gleichheit funktionieren muss - für den Fall aller Fälle -, wenn denn wirklich bei gleichem Vornamen, Nachnamen und Geburtstag zwei Kollegen angelegt werden sollten. Wenn es also einen Kurt Maier (1.1.1970) und noch einen Kurt Maier II (1.1.1970) geben sollte.
Ansonsten funktioniert das doppelte Anlegen bei mehrfachem Index natürlich nicht! Da hast Du absolut recht!!

Mach's gut und danke für Deine Rückmeldung
gromax

database

#7
Hallo,

Zitatdas funktioniert mit absoluter Sicherheit und lässt sich auch nicht austricksen.
Du hast einen Fehler gemacht, mit dem Anlegen des 3-fach Index.

gromax, gromax, Indizes sind nicht nur zum Beschleunigen von Abfragen da, mit Hilfe derer ist es möglich genau das zu verhindern, was du angesprochen hast.
Richtigerweise sollte das Eingeben von Duplikaten auf Tabellenebene verhindert werden.
Der Grund dafür ist, daß das Duplikat-Problem trotz allem VBA in einem Formular entsteht, wenn solche Duplikate dann über Aktionsabfragen oder andere Formulare 'eingeschummelt' werden (können).
Wenn die Notwendigkeit besteht solche 'scheinbaren' Gleichheiten zuzulassen müssen weitere bestimmte Felder, die eine Identifizierung einer Person gewährleisten, in den Index aufgenommen werden (ein gutes Bsp. ist immer wieder eine Soz.Vers.Nummer!) um nicht Gefahr zu laufen 2 'gleiche' Personen nicht mehr voneinander unterscheiden zu können

gromax

Hallo database,

danke für die Mahnung und das Einfordern einer letztlich logischen Datenpflege; ich habe den 3-fach Index eingepflegt und so bleibt das auch!

Viele Grüße
gromax