Neuigkeiten:

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

Mobiles Hauptmenü

Suchen-Ersetzen in zwei nicht verbundenen Tabellen durch Makro?

Begonnen von Scholar, Dezember 06, 2013, 23:20:50

⏪ vorheriges - nächstes ⏩

Scholar

Hallo!

Ich möchte in Textfelder bestimmte Textfelder durch andere Textteile ersetzen, die in einer anderen Abfrage gespeichert sind. Die Tabelle und die Abfrage stehen in keinerlei Beziehung. Da es sich zudem um eine größere Reihe von Suchen-Ersetzen-Prozesse handelt und ich den Vorgang öfters wiederholen muss, würde ich gerne einen eine Prozedur mit Makro oder VBA schreiben, um diesen Prozess wiederholen zu können. Leider kenne ich mich mit den beiden nicht gut aus und wollte daher fragen, ob das prinzipiell möglich ist bzw. ob ihr bereits Tipps habt?

Ausformuliert sollte die Prozedur folgendermaßen aussehen:

Suche (Teil des Feldes) in Spalte1 (Text- oder Memofeld) der Tabelle1 nach dem Inhalt aus Spalte 1 des Datensatzes 1 der Abfrage1
Ersetze in Spalte1 der Tabelle1 den gefundenen Teil des Feldes durch den Inhalt der Spalte2 der Abfrage
Suche weiter in Spalte1 der Tabelle1 nach weiteren Treffern ... wenn keine weiteren Treffer, dann
Suche (Teil des Feldes) in Spalte1 (Text- oder Memofeld) der Tabelle1 nach dem Inhalt aus Spalte 1 des Datensatzes 2 der Abfrage1
...

Was meint Ihr, kann man so etwas umsetzen?
Schon mal vielen Dank für Eure Hilfe

DF6GL

Hallo,

am Besten machst Du mal ein konkretes Beispiel anhand von Tabellenfeldern und deren Inhalten, und was damit genau passieren soll...


Scholar

#2
Ich versuche es in möglichst wenigen Worten zusammenzufassen:

In einem wissenschaftlichen Projekt erarbeiten mehrere Mitarbeiter in Access-Datenbanken Datensätze, die stufenweise in eine XML-Datenbank importiert werden sollen. Das funktioniert prinzipiell auch alles.
In der XML-Datenbank werden aber auch bspw. Personen- und Ortsnamen ausgezeichnet, um danach spezifisch Suchen zu können. Da wir jetzt festgestellt haben, dass die Auszeichnungn in der XML-Datenbank sehr zeitwaufwendig ist (da jede Aufzeichnung individuell erledigt werden muss), wollen wir die Auszeichnung nun in Access vornehmen (hier kann man mit Suchen -Ersetzen viele Datensätze auf einmal überarbeiten. Die Personen- und Ortsnamen stehen dabei nicht in einem eigenen Feld, sondern sind in einem größerem Fließtext eingebunden. Das sieht bspw. so aus.

Der alte Fritz wird in in der preußischen Hauptstadt zum König gewählt
Der <pers_name identification="Friedrich II.">alte Fritz</pers_name> wird in der  <place_name identification="Berlin">preußischen Hauptstadt</place_name> zum König gewählt


Da wie gesagt der Import stufenweise erfolgt und die Personen- und Orstnamen natürlich mehrfach vorkommen,  möchte ich den Prozess automatisieren, um den Prozess zukünftig zu beschleunigen.

Dafür habe ich jetzt drei Tabellen:

TabelleErgeinisse
IDEreignisID2
1Der alte Fritz wird in der preußischen Hauptstadt zum König gewählta

TabellePersonendaten
IDQuellenbegriffCodeID2
1alte Fritz<pers_Name identification="Friedrich II.">alte Fritz</pers_Name>a

Wir Du siehst, habe ich mittlerweile eine "künstliche ID" erzeugt, wo immer in beiden Tabellen das gleichen Zeichen steht(a), so dass alle Datensätze aus Tabelle Ereignisse mit Tabelle Ortsdaten in Beziehung steht. Sehr viel weiter bin ich deswegen leider nicht gekommen (kann man auch weglassen, wenn es nicht hilft).

Tabelle BEZ_Ereignisse_Personen
IDEreignisQuellenbegriffCode
1
Der alte Fritz wird in in der preußischen Hauptstadt zum König gewählt
alte Fritz<pers_Name identification="Friedrich II.">alte Fritz</pers_Name>

Ich möchte jetzt ein Prozedur, die nach den ersten Quellenbegriff in Spalte Ereignis sucht und nur diesen Quellenbegriff durch den Code ersetzt, und wenn er die ganz Spalte durchsucht hat, soll er gleich mit dem zweiten Quellenbegriff fortsetzen etc.

Ich hoffe, ich habe mich verständlich ausgedrückt. Bei Rückfrage gerne nochmal nachfragen

Scholar

Hey,

hab das Problem selbst gelöst mittels einer Aktualisierungsfrage. Falls mal jemand ein ähnliches Problem haben sollte.

1) Die Haupttabelle mit der "Nachschlagetabelle" verknüpfen, indem man in beide Feld ergänzt, indem in jedem Feld der gleiche Inhalt steht. Dadurch ist jeder Datensatz mit jedem Datensatz der anderen Tabelle verknüpft

2) Abfrage generieren mit dem zu durchsuchende Feld, der zu suchende Begriff und der Begriff, der eingefügt werden soll

3) dann eine Aktualisierungsabfrage machen:
UPDATE Abfrage SET Abfrage.zuDurchsuchendesFeld = Replace(zuDurchsuchendesFeld,[zuSuchenderBegriff],[Einfügebegriff]);