Datenbankfelder in Text

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Datenbankfelder in Text

Beitrag von moritz »

Hallo,
ich habe Serienbrieffelder in einem Brief. Für die dauerhafte Speicherung möchte ich den 1. Datensatz im Brief speichern. Ich möchte aus dem Serienbrief einen ganz normalen Text ohne Felder machen und anstelle der Felder den Text aus dem 1. Datensatz speichern. In Word und VBA geht das ganz einfach, in dem der Brief in eine Datei gedruckt wird. Das neue Dokument hat keine Verbindung mehr zur Datenquelle, die Felder sind Text. In OO bleiben die Felder erhalten. Wie kann man das mit einem Makro ändern?
Moritz
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Ergänzung

Beitrag von moritz »

Ich möchte meine Frage noch etwas näher erläutern. Mein Ziel ist es, alle Felder, also auch Datenbankfelder eines Dokumentes in Text umzuwandeln. Da die Felder unterschiedliche Formatierungen haben, ist Ausschneiden des Dokuments und Inhalte einfügen nicht möglich. Wie kann man über StarBasic von einem Feld zum nächsten gehen, dieses ausschneiden und als Inhalt wieder einfügen? Eine andere Variante (aber umständlicher) wäre das Suchen von Formatierungen, zB. so:
SearchDesc.searchString=“NummerStyle“
SearchDesc.searchStyles = True
Found = oDocument.findfirst (SearchDesc)
sNummer = Found.String
Wie kann ich aber Found ausschneiden und als Daten einfügen? Hat jemand einen Tip dazu?
Moritz
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

SearchDesc.searchString=“NummerStyle“
SearchDesc.searchStyles = True
Found = oDocument.findfirst (SearchDesc)
sNummer = Found.String
Wie kann ich aber Found ausschneiden und als Daten einfügen? Hat jemand einen Tip dazu?
Ich verstehe jetzt den Code noch nicht, aber falls das hier geht:
sNummer = Found.String
dann geht doch zum "Ausschneiden" in jedem Fall:
Found.String = ""
und zum Einfügen:
Found.String = "Irgendetwas"

Da aber sNummer genau den zurückzuschreibenden Inhalt darstellen soll bist Du dann ja wieder am Anfang...

Also würde ich Dich zunächst mal fragen, funktioniert den dieser Code und wie sieht der komplett aus?
Meiner Meinung nach mußt Du einen TextCursor per Code erstellen und durch das Dokument interieren die Ausdrücke lesen und nur den inhalt zurückschreiben. Das ist aber zunächst davon abhängig wo sich die Ausdrücke befinden also z.B. Textfelder, Kopfzeile, Fließtext usw.
Du findest zu dieser Problematik eigentlich gute Informationen im "StarOffice-Programmierhandbuch", der Link steht hier im Programmierforum ganz oben unter 'Tips zur Starbasic-Programmierung'.

Gruß
Stephan
moritz
*****
Beiträge: 216
Registriert: Mi, 20.10.2004 20:54

Danke

Beitrag von moritz »

Na Hallo, danke. Ich habe nicht geglaubt, daß das Ganze so einfach ist:
sNummer = Found.String
Found.String = sNummer
Damit wird der Text des Feldes gelesen und anschließend das Feld mit diesem Text überschrieben. Und das wars, was ich wollte. Danke für Deinen Tip.
Zum übrigen Code: Es ist das alte Thema Serienbrief bzw. Fax. Ich schreibe alle Briefe / Faxe als Serienbrief mit Vorlage und Serienbrieffeldern. Die Felder haben bestimmte Druckformate, damit danach gesucht werden kann. Die Vorlage ist an eine MySQL oder Firebase- Datenbank gebunden. In OpenOffice gibt es dann dazu eine Tabelle "Abfrage". Über ein Makro wird eine SQL- Abfrage gestartet. Das Ergebnis steht dann in der Tabelle, diese wird automatisch angezeigt (analog F4). Der richtige Name (viele Namen gibt es in der Datenbank mehrfach) wird dann ausgewählt und der Text wird im Brief/ Fax angezeigt. Anschließend wird der Brief gedruckt oder das Fax versandt. Anschließend werden alle Felder in Text umgewandelt und die Datei unter dem Datum und dem Empfängernamen automatisch gespeichert. Mit Winword habe ich das ganze vor knapp 10 Jahren zusammengeschrieben und nun soll das Ganze auch unter OO funktionieren. Bin nun wieder einen Schritt weiter.
Danke
Antworten