PDA

Vollständige Version anzeigen : Präfix aus Stringtext suchen und zu Nachname hinzufügen


daha1
10.05.2011, 12:32
Download Problembeschreibung mit korrekter Formatierung!
http://www.x-box.ch/download/ACCESS-2003-Problem.pdf

Hallo

Ich habe folgendes Problem welches ich bis jetzt nicht lösen konnte..

Ich habe einen Adressdatenbank, welche ich mit einem Abgleich-Aktualisierungsprogramm bearbeite.


Das generiert mir ein Feld A-Daten innerhalb der Tabelle "bedat".
In diesen A-Daten steht der korrekt geschrieben Name ink. Präfix. Leider steht das Präfix nicht immer an der gleichen Stelle.

Ich habe eine weitere Tabelle "NN_Praefixe" in welcher ich alle mir bekannten Präfixe deklariert habe.

Tabelle NN_Praefixe.NN_Praefix
von
von der
zu
de
d'
auf der
bin
da
auf den.......


Tabelle bedat:
TempTitel, Nachname, A-Daten

Feldinhalt A-Daten:
*Piotrowski**Anneli******und Fred von****
*Frömel**Axel******und Von Den Eicken, Christina****
*Seeberger**Clemens******und Yvonne****
*Rekowski**Erwin*von*********
*Esche**Frank*vor dem*********
*Block**Christian*von*****und Heide von****
*Pütten**Benedikt*von der******Schiffseigner***

Mögliche Feldinhalte Titel und Nachname

TempTitel Nachname korrekt wäre/ist: TempTitel Nachname
Piotroswksi nach Bearbeitung von Piotroswksi
von den von den Frömel von den Frömel
Dr.Ing. Seeberger Seeberger
v.d. Esche vor dem Esche
v. Block von Block
von Pluetten von der Plütten


Nun versuche ich mittels NN_Praefixe alle Nachname mit einen Präfix zum identifizieren indem ich mittels der Tabelle NN_Praefixe alle Nachnamen mit einem Präfix in der Spalte A-Daten suche.
Dann möchte ich das jeweilige Präfix dem Nachnamen vorweg zufügen.
Ziel ist es das ich am Schluss jeweils einen korrekt geschriebenen kompletten Nachnamen (Präfix & Nachname) habe.

Leider schaffe ich das nie im Access 2003.

Kann mir jemand helfen? ..oder hat dieses Problem schon jemand gelöst?

Vielen Dank für HILFEEEEE.

Dani
postit@vtxfree.ch

maikek
10.05.2011, 13:49
Hallo,
einige Präfixe lassen sich sicher aus dem Textstring auslesen (per Instr()-Funktion) und dann in ein Extra-Tabellenfeld schreiben,
aber :
v.d. Esche vor dem Esche
woher soll das Programm jetzt ohne weitere Info entscheiden, ob es hier nicht doch ein von der Irgendwas ist?
Und zu wem bei zwei Namen in A-Daten im Zweifelsfall das Präfix gehört ...
Und was jetzt Nachname und was Vorname ist ...
sorry, da sehe ich wenig Chancen, da wirst du doch per Hand entwirren/korrigieren müssen ...
maike

ebs17
10.05.2011, 18:46
Das [Abgleich-Aktualisierungsprogramm] generiert mir ein Feld A-Daten innerhalb der Tabelle "bedat".
*Frömel**Axel******und Von Den Eicken, Christina****
Das letztere ist ein Name?
Leider schaffe ich das nie im Access 2003.
Wo würdest Du es denn schaffen? (Man könnte ja die Ergebnisse in die Datenbank importieren.)

Wenn das etwas ironisch klingt, so ist das Absicht. Mit der vorliegenden Beschreibung der Aufgabenstellung kann man nicht viel anfangen. Vielleicht hättest Du hier etwas mehr Mühe aufwenden können statt hilflose E´s an das unnötige HILFE zu malen

ebs17
10.05.2011, 23:26
Nun versuche ich mittels NN_Praefixe alle Nachname mit einen Präfix zum identifizieren indem ich mittels der Tabelle NN_Praefixe alle Nachnamen mit einem Präfix in der Spalte A-Daten suche.
Mit einem solchen Kreuzprodukt könntest Du Dir relevante Datensätze anzeigen:
SELECT B.*, P.NN_Praefix
FROM bedat B, NN_Praefixe P
WHERE Instr(1, B.[A-Daten], P.NN_Praefix, 0) > 0
Ggf. müsste man den Präfix zu qualitativ besseren Treffern mit Leerzeichen "umhüllen". Das Feld A-Daten ist aber ein solches Konglomerat, dass sich vermutlich ein größeres Trefferbild ergeben wird als beabsichtigt.

daha1
11.05.2011, 10:42
Hast du den das PDF mit der besseren Formatierung runtergeladen! Ich konnte hier leider keine Tabellen generieren!

daha1
11.05.2011, 11:01
Bitte diese Antwort berücksichten, die andere ist Fehlerhaft und ich kann Sie nicht löschen!!!

Vielen Dank
Andere Antwort wurde gelöscht.



Leider erhalte ich mit dieser Abfrage irgendwelche Präfixe aus der Tabelle NN_Praefixe.

Ich kann mittels dieser Abfrage Abfragen ob ein identisches Präfix in der Präfixliste gefunden wird, doch kann ich mir leider das gefundene/identifizierte Präfix nicht in ein zusätzliches Feld innerhalb der Tabelle "bedat" schreiben!
Ich schaffe es lediglich mir in der Abfrage ein Flag zu setzen!


SELECT Bedat.nachname, Bedat.check, (SELECT Count(*) FROM NN_Praefixe WHERE bedat.A-Daten LIKE "* "& NN_Praefix &" *") Or (SELECT Count(*) FROM NN_Praefixe WHERE bedat.A-Daten LIKE "* "& NN_Praefix &" *") AS AnzTreffer, Bedat.A-Daten
FROM Bedat;


Beachte: Im Feld A-Daten stehen je nach dem zwei Namen. Mich interessiert immer nur der erste Namen. Zu diesem ersten Namen besitzen die Präfixe innerhalb von A-Daten folgendes Format: Bsp. mit von: " von*" oder "*von*" . Also vorne ein Leerzeichen oder Stern und hinten jeweils ein Stern.

Ich hoffe meine Hilfeerklärung ist nun ein wenig verständlicher!

Dani

daha1
11.05.2011, 12:45
Hallo,
einige Präfixe lassen sich sicher aus dem Textstring auslesen (per Instr()-Funktion) und dann in ein Extra-Tabellenfeld schreiben,
aber :
v.d. Esche vor dem Esche
woher soll das Programm jetzt ohne weitere Info entscheiden, ob es hier nicht doch ein von der Irgendwas ist?
Und zu wem bei zwei Namen in A-Daten im Zweifelsfall das Präfix gehört ...
Und was jetzt Nachname und was Vorname ist ...
sorry, da sehe ich wenig Chancen, da wirst du doch per Hand entwirren/korrigieren müssen ...
maike

v.d. wird erkannt weil es ja im A-Daten Feld komplett ausgeschrieben ist und "von dem" als Präfix in der Tabelle NN_Praefixe gelistet wird.

Atrus2711
11.05.2011, 13:32
Schon, aber "Anke v.d. Esche" kann heißen:

Anke vor der Esche
Anke von dem Esche
Anke vor die Esche
Anke van de Esche

usw. Eine Abkürzung kann halt für viele Ergebnisse stehen.

Gerade alte Namen sind geradezu grotesk in ihrer "Grammatik": vor der Esche ist heute grammatisch richtig, wenn es um den Baum Esche geht, aber wenn die Anke seit 400 Jahren vor dem Esche heißt, heißt sie so, trotz Grammatik.

Face it: garbage in, garbage out. Der einzige, der den Namen sicher weiß, ist die Person selbst.

Vereinfachungen für Adressen (letztlich nur eine Etikettensparmaßnahme) sind akzeptable Verkürzungen, solange nicht 4 v.d. Esches im selben Haus wohnen. Aber die nackten Daten dürfen halt nicht verstümmelt werden.

maikek
11.05.2011, 13:43
@Martin: Das war auch mein Gedanke ;) - im Feld A-Daten steht der Krempel aber wohl korrekt drin und soll dort deswegen extrahiert werden. War für mich oben im Beitrag nicht so recht ersichtlich.

@Dani: Ich sehe immer noch keine Möglichkeit, das Ganze mal eben mit einer Abfrage zu erledigen.
Der String aus A-Daten muss imho bearbeitet und danach auf passende Präfixe durchflöht werden - z.b. erst Trennsternchen auf jeweils eins reduzieren, das Zeug in ein Array packen, dann das erste Feld im Array als Nachnamen wegschreiben und das letzte Feld mit den Werten aus der Präfix-Tabelle abgleichen.

maike

daha1
12.05.2011, 08:51
Schon, aber "Anke v.d. Esche" kann heißen:

Anke vor der Esche
Anke von dem Esche
Anke vor die Esche
Anke van de Esche

usw. Eine Abkürzung kann halt für viele Ergebnisse stehen.

Gerade alte Namen sind geradezu grotesk in ihrer "Grammatik": vor der Esche ist heute grammatisch richtig, wenn es um den Baum Esche geht, aber wenn die Anke seit 400 Jahren vor dem Esche heißt, heißt sie so, trotz Grammatik.

Face it: garbage in, garbage out. Der einzige, der den Namen sicher weiß, ist die Person selbst.

Vereinfachungen für Adressen (letztlich nur eine Etikettensparmaßnahme) sind akzeptable Verkürzungen, solange nicht 4 v.d. Esches im selben Haus wohnen. Aber die nackten Daten dürfen halt nicht verstümmelt werden.

Hallo

das "v.d." ist in diesem Sinne nicht relevant, da ich ja explizit das Feld A-Daten abfrage.

daha1
12.05.2011, 09:05
Hallo

Nun ich kann die korrekten Präfixe ja identifizieren mittels meiner oben deklarierten Abfrage.

Was mir eben nicht gelingt ist folgendes:
Die Abfrage setzt bei einem gefunden Präfix eine Flag im Feld Check auf "-1". Das klappt wunderbar!

Meine Ueberlegung: Nun möchte ich eben das übereinstimmende Präfix aus der Tabelle NN_Praefixe auslesen und ein ein Feld in der Tabelle "bedat" schreiben.

Das kriege ich nicht hin... oder vielleicht habt ihr ne bessere Idee bzw. Lösung?

ebs17
12.05.2011, 09:11
Ich kann mittels dieser Abfrage Abfragen ob ein identisches Präfix in der Präfixliste gefunden wird, doch kann ich mir leider das gefundene/identifizierte Präfix nicht in ein zusätzliches Feld innerhalb der Tabelle "bedat" schreiben!
Ich schaffe es lediglich mir in der Abfrage ein Flag zu setzen!
Eine Auswahlabfrage ändert nicht den Inhalt von Tabellenfeldern. Eine Auswahlabfrage in eine Aktualisierungsabfrage zu ändern, dürfte nicht das große Problem sein.
Allerdings möchte ich meinen Vorrednern unbedingt beipflichten und bei der automatisierten Änderung von Namen allerhöchste Zurückhaltung anmahnen.

daha1
12.05.2011, 10:14
Ja ich gebe euch auch recht das man der Namensqualität rechnung tragen soll.

Aber wie kann ich die identifizierten Daten von NN_Prafixe.praefix in ein Feld (Bsp. bedat.P-OK) innerhalb der Tabelle bedat schreiben.

Atrus2711
12.05.2011, 10:23
Hi,


du kannst die bisherige Abfrage in eine Aktualisierungsabfrage umwandeln, die den alten Feldwert mit dem neuen Feldwert überschreibt.
evtl. fällt es leichter, die bisherige Abfrage zu belassen und sie in einer neuen Aktualisierungsabfrage mit den alten Daten zu verbinden.


Aktualisierungsabfragen erreichst du im Entwurf über die Buttons namens "Abfragetyp". Klicke da auf den kleinen Auswahlfpfeil (2003) bzw auf das Symbol (2007) für Aktualisierungsabfrage, wähle das zu ändernde Feld aus, und gib in der Zeile "Aktualsieren" die Formel für den neuen Wert an.

Herauskommen müsste etwas in der Art:
UPDATE Tabelle1 INNER JOIN Tabelle2
ON Tabelle1.Synchronisierungsfeld = Tabelle2.Synchronisierungsfeld
SET Tabelle1.ZuÄnderndesFeld = Tabelle2.LieferndesFeld

daha1
12.05.2011, 15:23
Danke.. ich habe nun versucht auch mittels der Aktualisierungsabfrage die in der Tabelle NN_Praefix identifizierten Präfixe in eine Spalte in der Tabelle bedat zu schreiben.

Ich kriegs nicht gebacken!

Wie genau soll ich das machen?

maikek
12.05.2011, 16:39
Poste doch mal die SQL, mit der du den Flag setzt und deinen Update-Versuch.
maike