Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: gromax am Januar 18, 2015, 18:21:22

Titel: Dialog bei doppelter Eingabe
Beitrag von: gromax am Januar 18, 2015, 18:21:22
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
Titel: Re: Dialog bei doppelter Eingabe
Beitrag von: database am Januar 18, 2015, 19:15:56
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.
Titel: Re: Dialog bei doppelter Eingabe
Beitrag von: DF6GL am Januar 18, 2015, 19:21:38
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.
Titel: Re: Dialog bei doppelter Eingabe
Beitrag von: database am Januar 18, 2015, 19:24:15
Hi,

Bei Lösung über eindeutigen Index ist es NICHT möglich die Kombination nochmals anzulegen.
Titel: Re: Dialog bei doppelter Eingabe
Beitrag von: gromax am Januar 18, 2015, 19:47:35
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
Titel: Re: Dialog bei doppelter Eingabe
Beitrag von: MzKlMu am Januar 18, 2015, 19:52:07
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.
Titel: Re: Dialog bei doppelter Eingabe
Beitrag von: gromax am Januar 18, 2015, 20:23:20
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
Titel: Re: Dialog bei doppelter Eingabe
Beitrag von: database am Januar 18, 2015, 20:24:47
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
Titel: Re: Dialog bei doppelter Eingabe
Beitrag von: gromax am Februar 15, 2015, 17:08:38
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