Seite 1 von 1

[makro] Writerformular: Daten in .txt oder csv speichern

Verfasst: Mi, 30.03.2011 14:21
von opiWahn
Hallo,

kann ich, und wenn ja wie, die Daten aus 4 Textboxen von einem Writerformular in einer Textdatei (oder CSV) speichern um sie später in einem anderen Formular (auch Writer) wieder einzulesen? Welche Filter muss ich bei Txt/CSV verwenden?
Das ganze soll ähnlich dem Datenexport in FDF bei PDF funktionieren. Form A wird mit Daten als odt gespeichert, gleichzeitig bestimmte Textfelder als Txt/CSV.
Form B holt sich (importiert) dann die Daten aus der Txt/CSV.
Über Beispiele, Links u.ä. wo so etwas schon realisiert wurde freut sich

opiWahn

Re: [makro] Writerformular: Daten in .txt oder csv speichern

Verfasst: Mi, 30.03.2011 18:24
von F3K Total
Hallo OpiWahn,
Was genau möchtest Du erreichen?
Der Weg, den Du beschreibst, hört sich "strange" an, es gibt bestimmt einen einfacheren Weg.
G R

Re: [makro] Writerformular: Daten in .txt oder csv speichern

Verfasst: Mi, 30.03.2011 18:38
von komma4
opiWahn hat geschrieben:Form B holt sich (importiert) dann die Daten aus der Txt/CSV.
Das geht dann über WRITE brw. READ, siehe F1 Online Hilfe, OpenOffice.org Basic

Re: [makro] Writerformular: Daten in .txt oder csv speichern

Verfasst: Mi, 30.03.2011 20:41
von opiWahn
Hallo F3K Total,
F3K Total hat geschrieben: Was genau möchtest Du erreichen?
Der Weg, den Du beschreibst, hört sich "strange" an, es gibt bestimmt einen einfacheren Weg.
Nun, die Idee kam mir heute früh auf dem Weg zur Arbeit, als ich in Krumbein's "Markos in OpenOffice.org 3" versucht habe mich wieder etwas schlauer zu machen :)
Nach wie vor habe ich das Problem, daß ich an das Hauptformular, welches u.a. durch DB-Daten gespeist wird, beliebig viele "externe" Blankoformulare anfügen muß.
Zum Zeitpunkt des Anfügens gibt es aber keine Verbindung mehr zur DB, d.h. die notwendigen Daten müssen aus dem Hauptformular gezogen werden.
Das Anfügen hab ich erst mal so gelöst:

Code: Alles auswählen

Sub addPruefForm_TT
document   = thisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

oVC = thisComponent.getCurrentController.getViewCursor
oVC.jumpToLastPage(true)
oVC.jumpToEndofPage(true)

dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Kind"
args1(0).Value = 3
args1(1).Name = "TemplateName"
args1(1).Value = ""
args1(2).Name = "PageNumber"
args1(2).Value = 0

dispatcher.executeDispatch(document, ".uno:InsertBreak", "", 0, args1())

dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Name"
args3(0).Value = "file:///C:/xyz/xFormulare/Pruefform_TT.odt"
args3(1).Name = "Filter"
args3(1).Value = "writer8"

dispatcher.executeDispatch(document, ".uno:InsertDoc", "", 0, args3())
End sub
Das ist wahrscheinlich nicht gerade der Königsweg, aber ich hatte keinen besseren Ansatz - und vom König bin ich eh noch weit entfernt.
Page wäre treffender :)

Was letztlich passieren soll, soll hier veranschaulicht sein:
beispiel.png
Als Ausweg erdachte ich mir, daß zusätzlich zum Speichern des ausgefüllten Hauptformulares unter gleichem Namen eine Txt- oder CSV-Datei abgespeichert wird, die die Werte von o_name, o_strasse und o_ort enthält. Jedes Formular, das ich dann anfüge soll dann diese Daten z.B. aus der Txt-Datei ziehen.

Vermutlich gibt es auch andere, praktikablere Ansätze, aber da bin ich noch nicht wirklich fündig geworden.
Darüber hinaus strotz diese "Projekt" vor Baustellen in Ermangelung von Programmiererfahrung wie man an meinen Threads aus den letzten Tagen ersehen kann.
Verweise wie
komma4 hat geschrieben: Das geht dann über WRITE brw. READ, siehe F1 Online Hilfe, OpenOffice.org Basic

sind ja durchaus pädagogisch und langfristig das einzige was hilft, aber halt eben nur langfristig, wenn man sowieso beim Lernen und experimentieren ist und dazu kein Zeitdruck kommt.
Das soll jetzt nicht heißen, daß ich jemanden suche, der mir die Arbeit macht. Nachvollziehbare und damit anpassbare Beispiele reichen mir völlig aus.

Grüße
opiWahn

Re: [makro] Writerformular: Daten in .txt oder csv speichern

Verfasst: Mi, 30.03.2011 21:03
von F3K Total
Hallo OpiWahn,
was hälst Du von folgender Idee:
Sagen wir mal Du hast in Deinem Hauptformular die Kundendaten bereits gefüllt.
Dann würde ich es auf folgende Art und Weise versuchen:

1.) Prüfprotokoll (leer) mit "+Form A" anhängen.
2.) Kundendaten aus Hauptformular auslesen und in Prüfprotokoll hineinschreiben.
3.) Datei speichern

Dazu mußt du nur dein Makro "addPruefForm_TT" um die oben genannte Funktion erweitern.
Nix mit zwischen csv oder so.

Gruß R

Re: [makro] Writerformular: Daten in .txt oder csv speichern

Verfasst: Mi, 30.03.2011 21:05
von komma4
opiWahn hat geschrieben:Verweise wie
komma4 hat geschrieben: Das geht dann über WRITE brw. READ, siehe F1 Online Hilfe, OpenOffice.org Basic

sind ja durchaus pädagogisch und langfristig das einzige was hilft, aber halt eben nur langfristig, wenn man sowieso beim Lernen und experimentieren ist und dazu kein Zeitdruck kommt.
Das soll jetzt nicht heißen, daß ich jemanden suche, der mir die Arbeit macht. Nachvollziehbare und damit anpassbare Beispiele reichen mir völlig aus.
Hättest Du Dir mal die "Mühe" gemacht die Hilfe aufzurufen hättest Du ein nachvollziehbares und anpassbares Beispiel dort gefunden.

Re: [makro] Writerformular: Daten in .txt oder csv speichern

Verfasst: Mi, 30.03.2011 22:47
von opiWahn
Hi F3K Total,
F3K Total hat geschrieben: was hälst Du von folgender Idee:
Sagen wir mal Du hast in Deinem Hauptformular die Kundendaten bereits gefüllt.
Dann würde ich es auf folgende Art und Weise versuchen:

1.) Prüfprotokoll (leer) mit "+Form A" anhängen.
2.) Kundendaten aus Hauptformular auslesen und in Prüfprotokoll hineinschreiben.
3.) Datei speichern
Sorry, aber genau das geht nicht. Die "Zentrale" füllt nur das Hauptformular mit den notwendigen Daten aus einer sich ständig ändernden DB und schickt es per Mail an den Techniker.
Dieser füllt die Hauptform entsprechend seinem Aufwand u.ä. weiter aus und hängt an das Hauptformular unterschiedliche Prüfprotokolle in unterschiedlicher Menge. Welche und wieviele genau benötigt werden entscheidet sich erst vor Ort. Nach getahner Arbeit unterschreibt der Kunde digital auf dem Hauptformular und das ganze Paket wird zurück geschickt.
Das ganze soll und wird den Arbeitsprozess dahingeht beschleunigen, daß die Unterlagen deulich schneller zur Weiterverarbeitung (z.B. Faktorierung) wieder zur Verfügung stehen und nicht erst zum Ende der Arbeitswoche eine Papierflut reintrudelt wie derzeit noch.

Grüße
opiWahn

P.S. ich persönlich hätte am allerliebsten von Anfang an mit interaktiven PDF bzw. dem PDF-Office incl. entsprechender Module von OVIS gearbeitet. Das kostet zwar ein wenig, ist aber dafür auch in vielerlei Hinsicht ausbaufähig und zukunftssicher, sieht man man davon ab, daß Adobe das FDF-Format abschaffen wird.

@komma4: hast ja recht :(

Re: [makro] Writerformular: Daten in .txt oder csv speichern

Verfasst: Mi, 30.03.2011 23:27
von DPunch
Aloha
opiWahn hat geschrieben:Sorry, aber genau das geht nicht. Die "Zentrale" füllt nur das Hauptformular mit den notwendigen Daten aus einer sich ständig ändernden DB und schickt es per Mail an den Techniker.
Dieser füllt die Hauptform entsprechend seinem Aufwand u.ä. weiter aus und hängt an das Hauptformular unterschiedliche Prüfprotokolle in unterschiedlicher Menge. Welche und wieviele genau benötigt werden entscheidet sich erst vor Ort.
Wenn Du die Daten nicht aus der DB holen kannst und ausserdem anscheinend sicher bist, dass Du die Daten auch nicht aus dem Hauptformular holen kannst, woher zur Hölle sollen die Daten denn dann kommen? Wie hast Du Dir das denn gedacht? :shock:

Was spricht dagegen, zum Beispiel in den vor Ort lagernden Formularen die gleichen Namen für die Textfelder zu vergeben, die man im Hauptformular verwendet und dann nach dem Anfügen entsprechend die Inhalte zu übertragen?

Re: [makro] Writerformular: Daten in .txt oder csv speichern

Verfasst: Do, 31.03.2011 00:06
von opiWahn
Hi DPunch,
DPunch hat geschrieben:... nach dem Anfügen entsprechend die Inhalte zu übertragen
Genau da ist der springende Punkt.
Ich habe bereits, wie du schon angeregt hast, in allen betreffenden Textfelder die gleichen Name vergeben. o_name, o_strasse, ... sind in der Hauptform wie in der anzufügenden Form gleich.
Die Felder untereinander zu Referenzieren (Einfügen/Feldbefehl/Andere/Querverweise/Referenz setzen z.B. auf o_name im Hauptform und dann Referenz einfügen an der Stelle o_name in der Unterform) hat nicht funktioniert.
Was ich mir bisher angelesen habe wäre, einen Cursor auf das erste Feld zu setzten, den Inhalt quasi zu kopieren und dann diesen anschließend an der anderen gewünschten Stelle in der Folgeseite zu pasten. Soviel zur Theorie. Nur wohin schreib ich den Code dazu: ins Hauptformular oder ins jeweilige Unterformular? Das zu dynamisieren stell ich mir im Hauptformular ziemlich schwierig vor, weil die Anzahl der Seiten ja auch dynamisch mitwachsen.

Grüße
opiWahn