FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 
smartsuitefaq.martinholz.de Foren-Übersicht

Text (Worte) aus Textfeld extrahieren

 
Neues Thema eröffnen   Neue Antwort erstellen    smartsuitefaq.martinholz.de Foren-Übersicht -> Approach
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Bernhard
Power-User


Anmeldungsdatum: 06.06.2005
Beiträge: 136

BeitragVerfasst am: Mo 12.10.2009 12:29    Titel: Text (Worte) aus Textfeld extrahieren Antworten mit Zitat

Wie kann ich eine Datei mit der vorgegebenen ungünstigen Struktur (Wortliste im Feld Inhalt):

Name Inhalt
"Eins" "grün, warm, 4711, gelb"
"Zwei" "warm, lila"

überführen in folgende Struktur (pro Datensatz nur ein einzelnes Wort im Feld Inhalt):

Name Inhalt
Eins grün
Eins warm
Eins 4711
Eins gelb
Zwei warm
Zwei lila

(Die Anführungszeichen oben sollen nur verdeutlichen, was zusammengehört)

Mein erster Denkansatz war, anhand einer Wortliste und einem Suchmakro die Wortvorkommen abzuarbeiten.
Manuell funktioniert die Suche nach einzelnen Worten mit dem Menüpunkt Bearbeiten - Suchen und Ersetzen
oder mit der Wildcard - Suche nach z.B. *4711*
Ich habe versucht, ein Suchmakro zu machen mit einem variablen Hilfsfeld "Teil":
Suche über Suchassistent: Inhalt- Enthält das/die Zeichen - @Teil
Das funktioniert nicht, selbst wenn ich in das Feld "Teil" den Suchbegriff mit Wildcards eingebe, z.B. *4711*.
Der Suchassistent scheint (zumindest bei der Variante "Enthält das/die Zeichen") keine Feldreferenzen zu mögen; die direkte Suche kennt nicht "Enthält das/die Zeichen".
Falscher Lösungsansatz ? Wer kann weiterhelfen ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bernhard
Power-User


Anmeldungsdatum: 06.06.2005
Beiträge: 136

BeitragVerfasst am: Sa 07.11.2009 19:39    Titel: Textfelder anhand einer Stichwortliste durchsuchen Antworten mit Zitat

Inzwischen ist mir selbst eine Lösung eingefallen:

Funktion:
Textfelder gleichzeitig nach mehreren Suchbegriffen (aus freidefinierbarer Liste) durchsuchen und Ergebnis (wahlweise zusätzlich Fehlanzeigen) in Datei ausgeben

Die fertige Beispielanwendung kann aus dem Downloadbereich heruntergeladen werden: http://smartsuitefaq.martinholz.de/download/TextExtrahieren.zip

Sie arbeitet mit folgenden Datendateien:

1.: Ausgangsformat.dbf:
Hier sind die Datensätze, die umgewandelt werden sollen.
Das wichtigste Datenfeld ist "Inhalt", z.B. mit "grün, warm, 4711, gelb".
Dazu noch ein Feld "Artikel" mit irgend einer Bezeichnung, um was es geht, z.B. mit "Eins", damit man sagen kann: "Eins enthält 4711" oder: "4711 ist in Eins enthalten".
Feld "Fund" (siehe unten)

2.: Zielformat.dbf:
Die Datensätze aus Ausgangsformat.dbf werden hierhin transformiert.
mit den Feldern "Artikel" (z.B. mit "Eins") und "Bestandteil" (z.B. mit "4711").

3.: Bestandteile.dbf
Liste der Elemente, deren Vorhandensein in Ausgangsformat.dbf geprüft werden soll.
Die einzelnen Elemente stehen im Feld "Bestandteil",
dazu kommt noch das Feld "ID"mit einer fortlaufenden Nummer, die für die Abarbeitung der Liste gebraucht wird.

4.: Zwischenlager.dbf:
Zur Überführung von Teilergebnissen nach Zielformat.dbf
Die Felder entsprechen denen in Zielformat.dbf.

Über die Datei TEXT_EXTRAHIEREN.APR werden die Dateien 1 bis 3 miteinander verbunden. Zu diesem Zweck erhalten sie noch je ein Verbindungsfeld "dummy". Sein Inhalt ist egal (hier: 1).

Zum Abarbeiten der Datensätze von Bestandteile.dbf werden die Feldinhalte jeweils eines Datensatzes in die variablen Felder "SuchID" und "Suchtext" geladen.

Kern der Lösung ist das berechnete Feld "Fund" in Ausgangsformat.dbf mit der Formel: Position(Ausgangsformat.Inhalt; Suchtext; 1):
Ist der Inhalt von "Suchtext" (z.B. "4711") in "Inhalt" (z.B. "grün, warm, 4711, gelb") enthalten, zeigt "Fund" die Position im Text - also eine positive Zahl.
Ist der Inhalt von "Suchtext" (z.B. "4711") in "Inhalt" (z.B. "warm, lila") nicht enthalten, zeigt "Fund" die Zahl Null.
Damit haben wir eine Funktion, die anzeigt, ob ein Stichwort in einer längeren Zeichenfolge enthalten ist.

Mit fünf Makros werden die Daten vom Ausgangs- ins Zielformat überführt:

Makro Schleifenstart:
initialisiert den Suchindex.

Makro Suchtext holen:
Lädt aus der Datei Bestandteile.dbf den nächsten Bestandteil ins Feld "Suchtext".

Makro Ende:
zeigt das Ergebnis, wenn Makro Suchtext holen alle Bestandteile abgearbeitet hat.

Makro Auswahl:
sucht in der Datei Ausgangsformat.dbf die Datensätze, die den Suchtext enthalten und exportiert das Ergebnis über die Datei Zwischenlager.dbf nach Zielformat.dbf.

Makro Bestandteil fehlt:
Lässt den nächsten Suchtext holen, wenn Makro Auswahl keinen Treffer hatte.
Bei Bedarf kann vorher eine Meldung ausgegeben werden ("nicht gefunden") oder
es kann ein künstlicher Treffer generiert werden mit einem Pseudo- Artikel, der die Nieten sammelt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    smartsuitefaq.martinholz.de Foren-Übersicht -> Approach Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Protected by Anti-Spam ACP