Access-Forum

Log in | Anmelden
 
zurück zur Hauptseite
linear

zugriff über zusammengesetzten indes

rytschy, Freitag, 18. Dezember 2009, 10:54

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

Henry @, Braunschweig, Montag, 21. Dezember 2009, 14:35 @ rytschy

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

rytschy, Dienstag, 22. Dezember 2009, 10:40 @ Henry

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

Avatar

zugriff über zusammengesetzten indes - danke

Martin Asal, Dienstag, 22. Dezember 2009, 16:24 @ rytschy

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

rytschy, Mittwoch, 23. Dezember 2009, 10:33 @ Martin Asal

Ok, danke,

RSS-Feed dieser Diskussion
RSS Einträge  RSS Threads | Kontakt