zugriff über zusammengesetzten indes
Hallo zusammen,
ich habe einen Index (nicht Primärschlüssel) bei einer Tabelle eingerichtet. Mein Indes besteht aus Name, Vorname, Firma. (Primärschlüssel ist autokey)
Wie kann ich jetzt über diesen Schlüssel prüfen, ob es in der Tabelle bereits einen identischen Kontakt gibt? Ich gebe die entsprechenden Werte in einem Formular ein. Ich möchte dann je nachdem ob es eine Neuanlage oder eine Änderung gibt entsprechend einen anderes Zweig im Ablauf einschlagen.
Vielleicht kann mir jemand einen einfachen VBA-Code weiterhelfen?
Vielen Dank im Voraus
Rytschy
zugriff über zusammengesetzten indes
Hallo Rytschy,
ich habe einen Index (nicht Primärschlüssel) bei einer Tabelle eingerichtet. Mein Indes besteht aus Name, Vorname, Firma. (Primärschlüssel ist autokey)
da du nicht den Primärschlüssel verändern willst, bleibt m.E. folgende schlanke Lösung:
Wie kann ich jetzt über diesen Schlüssel prüfen, ob es in der Tabelle bereits einen identischen Kontakt gibt? Ich gebe die entsprechenden Werte in einem Formular ein. Ich möchte dann je nachdem ob es eine Neuanlage oder eine Änderung gibt entsprechend einen anderes Zweig im Ablauf einschlagen.
Wenn der Benutzer "das speichernde Ereignis" auslöst (also z.B. auf einen Bestätigungs-Button klickt), dann prüfst du im ersten Schritt mit einer der Domänenaggregat-Funktionen das Vorhandensein der eingegebenen Kombination aus Vorname, Nachname und Firma.
Nehmen wir mal an, die Felder heißen auch in der Tabelle so und die Feldnamen im Formular haben einfach das Wort "Feld" davor. Passen würde hier z.B. die DCount Funktion:
DCount("*", "Tabelle", "Name=[FeldName] AND Vorname=[FeldVorname] AND Firma=[FeldFirma]")
Ist das Ergebnis gleich 0, dann gibt es so einen Eintrag noch nicht. Nachfolgend würdest du also mit einer Neuanlage weitermachen.
Ist das Ergebnis (größer bzw.) gleich 1, dann existiert so ein Eintrag bereits und du kannst anschließend in einen Änderungsablauf verzweigen.
Wenn man das konsequent durchhält kommt schließlich jede Kombination in der Tabelle nur einmal vor. Trotzdem würde ich mir an deiner Stelle sicherheitshalber noch eine Reaktion für Mehrfach-Vorkommen überlegen - vielleicht aufgrund unsauberer Daten-Vorbestände...
Zum Beispiel könnte man den Benutzer fragen, welchen der x Treffer (trennbar anhand des "autokey") er aktualisieren möchte. Oder ob er gar noch einen weiteren Satz hinzufügen will...
Eine noch abzufangende Schwachstelle könnte fehlerhafte Groß-/Kleinschreibung darstellen, wodurch man einen [Meier,Josef,Firma1] parallel zu einem [mEier,Josef,Firma1] anlegen könnte. Ich habe nicht ausprobiert, ob man das in der Bedingung mit "Like" statt "=" abgreifen könnte...
Ich hoffe das hilft dir weiter. Eine ausführliche Erläuterung der DCount Funktion findest du natürlich in der Access-Hilfe.
Gruß, Henry
zugriff über zusammengesetzten indes - danke
Hallo Henry,
zunächst mal vielen Dank für die Hilfe. Ich werde Mal versuchen wie ich das mit der Groß/Kleinschreibung hinbekomme.
Vielen Dank
Rytschy
zugriff über zusammengesetzten indes - danke
Ich werde Mal versuchen wie ich das mit der Groß/Kleinschreibung hinbekomme.
Schau dir mal bezüglich Vor-/Nachname die SoundEx-Funktion an.
bis denn
Martin
zugriff über zusammengesetzten indes - danke
Ok, danke,
RSS Einträge
Kontakt