Dokumentvorlage mit Feldern - Alternative zu Serienbrief

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Dokumentvorlage mit Feldern - Alternative zu Serienbrief

Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief

von DPunch » Sa, 09.01.2010 03:16

Stephan hat geschrieben:nenne ein paar Beispiele dafür - Was ist seiner Natur nach nicht automatisierbar?
Dinge, die sich nicht oder nur sehr selten wiederholen.
Das kann eine bestimmte Formulierung sein, dass kann eine nur diesem Brief anhaftende Telefonnummer sein, die sich von der "normalen" Telefonnummer unterscheidet, das kann ein anderes Datum sein, als das heutige, das kann ein Absatz sein, der ins Englische / Französische / Bulgarische / Kiswahili / wasauchimmer übersetzt werden muss, das kann eine ganz bestimmte Grafik an einer ganz bestimmten Stelle sein etcetcetc
weiß ich nicht was das inhaltlich meint
Manche Datenfelder müssen entfernt werden, weil irrelevant oder unerwünscht und ähnliches (und das Löschen nachdem die Daten übertragen wurden, kann richtige Fummelarbeit werden, da unter Umständen auch Tabellen bzw Tabellen in Tabellen etc eingefügt werden), manche Grafiken sollen nicht in das Dokument embedded werden bzw. überhaupt nicht drin sein etc
Das verstehe ich nicht, es ging hier um Makroprogrammieung und da muß man garnicht mit diesem Browser arbeiten, dann wärs ja auch irgendwie keine Programmierung, denn der Browser ist lediglich ein TEil der OOo-GUI
Nunja, ursprünglich gings um eine Alternative zum Serienbrief, wie und ob ich das Ganze mithilfe von Makros umsetze, ist dann erst ein Detail.
Du schlägst doch wohl aber nicht vor Serienbriefe per Makro zu programmieren indem Du über den DAtenbrowser rumfrickelst?
Nein, standardmässig tue ich das einfach über den MailMerge Servixe.
Aber um nach individuellen Änderungen in einem Dokument die Felder zu füllen ohne das Dokument zwischenspeichern zu müssen und ohne dass der Anwender noch per Hand die Datenquelle, den Datensatz etc auswählen muss, ist mir bisher nur diese Möglichkeit zu Augen gekommen.
Wenn Du mittels Makroprogrammierung auf Datensätze zugreifen willst tue das direkt und nicht auf dem Umweg über die GUI von OOo. z.B. das bekannte Base-Dokument von Pitoniak dürfte dafür einen Einstieg liefern:
Mit den Pitonyak-Sachen bin ich durchaus vertraut.
Nur leider ist eine echte Datenbank wie schon erwähnt nach momentaner Sachlage nicht gewünscht und eine als Datenbank angebundene Calc-Datei benötigt so oder so Ewigkeiten, bis sie ansprechbar ist (zumindest in dieser Größe).
Und benutze ich nicht die Seriendruckfelder aus einer registrierten Datenbank, ergibt sich wieder das Problem, wie ich die Daten sinnvoll übertragen kann.
Dann verstehe ich nicht warum Du Basic als Programmiersprache einsetzt, denn das ist ja nunmal ohnehin langsam
Das ist nicht meine Wahl (ganz im Gegenteil), sondern Vorgabe - das Firmensystem soll inklusive bisher vorhandener Makros von Windows / MS Office zu Linux / OOo migriert werden, und zwar nach Möglichkeit ohne dass im Betrieb zusätzlich Applikationen benötigt werden.
Keine Ahnung was das sagen soll. Keine dieser Dinge hast Du hier konkret vorgestellt, so das man schwerlich was dazu sagen kann.
Benutzerfelder:
Benannte Benutzerfelder ins Writer-Dokument einfügen.
Diese der Reihe nach ansprechen und mit den Eingaben im Calc-Sheets füllen.

Code: Alles auswählen

oTextFieldMasters = oDoc.TextFieldMasters
sTarget = "com.sun.star.text.FieldMaster.User.fHandelsname"
sFieldContent = oCell(fn_getColumn("Handelname"),nRow).String
oTextFieldMasters.getByName(sTarget).Content = fn_getPhrases(sFieldContent)
Serienbrief:
Seriendruckfelder ins Writer-Dokument einfügen.
Diese wiederum der Reihe nach ansprechen und mit den Eingaben füllen.

Code: Alles auswählen

If oDatabaseRow.Columns.hasByName(fieldName) Then
	sCurrentField = DatabaseRow.Columns.getByName(fieldName).String
	If Len(sCurrentField) > 0 AND Instr(sCurrentField,"@") > 0 Then sCurrentField = fn_getPhrases(sCurrentField)
	thisField.CurrentPresentation = sCurrentField
End If
Daten in Felder:
GUI-Funktion "Daten in Felder" auslösen.


Von oben nach unten ist bei diesen Varianten auf den getesteten Rechnern jeweils ein Geschwindigkeitszuwachs zu merken.
Leider funktioniert die unterste Variante aus oben genannten Gründen (bis jetzt) ohne manuelles Umstellen der Datenbankanbindungen(oder eher Tabellenanbindungen) aller Felder eben nur für die Tabelle, die zum Verknüpfen benutzt wurde, bzw. das auch nur manuell, da eben die Funktionalität zum Selektieren eines Datensatzes und Auslösen der "Daten in Felder" fehlt, bzw. ich noch keine funktionierende Version gesehen habe.

Wenn ich hier irgendwo auf dem Schlauch stehe, bin ich für jeden Schubser dankbar, aber bis jetzt hat sich mir für diese bestimmten Zwecke noch keine gute Idee ergeben, zumal die Dokumentvorlagen auch nach meiner Zeit im Betrieb von "Unwissenden" erweiterbar sein sollten (wie es z.B. mit dem einfachen Einfügen eines neuen Seriendruckfeldes der Fall wäre).

Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief

von Stephan » Fr, 08.01.2010 23:36

Teilweise muss das aus einer Vorlage erstellte Dokument noch um sehr spezielle Dinge erweitert werden, die von ihrer Natur her nicht automatisierbar sind
nenne ein paar Beispiele dafür - Was ist seiner Natur nach nicht automatisierbar?
bzw an manchen Stellen vor dem Eintragen der Daten aus der Datenquelle auch geändert werden.
weiß ich nicht was das inhaltlich meint
Daher muss ich hin und wieder mit dem Datenquellenbrowser hantieren, und da stosse ich immer wieder an Grenzen.
Das verstehe ich nicht, es ging hier um Makroprogrammieung und da muß man garnicht mit diesem Browser arbeiten, dann wärs ja auch irgendwie keine Programmierung, denn der Browser ist lediglich ein TEil der OOo-GUI
Das fängt schon beim einfachen Selektieren eines Datensatzes (nicht Zeiger drauf setzen, sondern wirklich selektieren) und dem Auslösen der "Daten in Felder" Funktion an.
Du schlägst doch wohl aber nicht vor Serienbriefe per Makro zu programmieren indem Du über den DAtenbrowser rumfrickelst?
Ich habe mich tagelang mit diesen Problemen beschäftigt, ohne eine Lösung zu finden.
Wenn Du mittels Makroprogrammierung auf Datensätze zugreifen willst tue das direkt und nicht auf dem Umweg über die GUI von OOo. z.B. das bekannte Base-Dokument von Pitoniak dürfte dafür einen Einstieg liefern:
http://www.pitonyak.org/database/
Wie auch oben schon gesagt: ich habe mich etwas zu final und eigentlich auch falsch ausgedrückt
ja
Wenn das Prokekt abgeschlossen ist, müssen unter Umständen täglich große Mengen dieser Dokumente erzeugt werden, da versucht man natürlich um jede Sekunde zu kämpfen
.

Dann verstehe ich nicht warum Du Basic als Programmiersprache einsetzt, denn das ist ja nunmal ohnehin langsam
Die Serienbrief-Variante ist z.B. schon deutlich schneller als die Variante mit Benutzerfeldern, am schnellsten ging es bis jetzt jedoch mit der integrierten Funktion "Daten in Felder".
Keine Ahnung was das sagen soll. Keine dieser Dinge hast Du hier konkret vorgestellt, so das man schwerlich was dazu sagen kann.



Gruß
Stephan

Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief

von DPunch » Fr, 08.01.2010 22:55

taraxacum hat geschrieben:
ein automatisierter Prozess sein soll (sprich per Makro) ist das wohl nicht umsetzbar.
Es ist sicher umsetzbar.
Zugegeben, meine Aussage ist zu final, als dass sie so stimmen könnte.
Ich könnte zwar jedem einzelnen Seriendruckfeld manuell eine andere Tabelle zuweisen, aber bei gut 300 Feldern ist das insofern nicht "umsetzbar", als dass es doch recht lange dauert.
Eine andere Möglichkeit habe ich weder irgendwo gesehen noch selber gefunden.
Stephan hat geschrieben:und was konkret? Mir ist pauschal nichts bekannt was fehlen würde.
Um Missverständnisse von Anfang an aus dem Weg zu räumen:

Der MailMerge Service an sich funktioniert soweit wunderbar, aber der lässt für meine Ziele leider nicht immer konsequent nutzen.
Teilweise muss das aus einer Vorlage erstellte Dokument noch um sehr spezielle Dinge erweitert werden, die von ihrer Natur her nicht automatisierbar sind, bzw an manchen Stellen vor dem Eintragen der Daten aus der Datenquelle auch geändert werden.

Daher muss ich hin und wieder mit dem Datenquellenbrowser hantieren, und da stosse ich immer wieder an Grenzen.
Das fängt schon beim einfachen Selektieren eines Datensatzes (nicht Zeiger drauf setzen, sondern wirklich selektieren) und dem Auslösen der "Daten in Felder" Funktion an.
Ich habe mich tagelang mit diesen Problemen beschäftigt, ohne eine Lösung zu finden. Genau diese Frage taucht übrigens unbeantwortet auch im englischen Forum auf.
WElche workarounds verwendest Du?
Nun, z.B. muss ich den auch hier im Forum schon geposteten Umweg über Feldnamen <-> Spaltennamen machen, um die Daten aufs Blatt zu kriegen.
(Davor habe ich das ganze mit Benutzerfeldern gemacht, die ich einfach mit den Zellinhalten gefüllt habe, aber das dauert noch länger als die jetzige Serienbrief-Lösung).
Sollte es machbar sein, die Datenquelle der Felder als Ganzes ändern zu können, wäre das schonmal ein guter erster Schritt.
Zudem hantiere ich im Moment mit einer MySQL-Zwischenlagerungstabelle, damit der Verbindungsaufbau beim Öffnen des Datenquellenbrowsers nicht so unerträglich lange dauert.
Dies ist aber ausdrücklich nicht erwünscht und soll, so irgendwie möglich, geändert werden.
Inwiefern? Mit z.B. Makros kannst Du wohl jegliche Anforderung umsetzen, ich wüßte nicht was da nicht möglich sein sollte.
Wie auch oben schon gesagt: ich habe mich etwas zu final und eigentlich auch falsch ausgedrückt, denn nicht die Machbarkeit an sich ist das Problem, sondern die Geschwindigkeit.
Wenn das Prokekt abgeschlossen ist, müssen unter Umständen täglich große Mengen dieser Dokumente erzeugt werden, da versucht man natürlich um jede Sekunde zu kämpfen.
Die Serienbrief-Variante ist z.B. schon deutlich schneller als die Variante mit Benutzerfeldern, am schnellsten ging es bis jetzt jedoch mit der integrierten Funktion "Daten in Felder".

Die DDE-Felder sehen auf den ersten Blick auf jeden Fall sehr interessant aus, das werde ich am Montag direkt mal testen.

Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief

von Stephan » Fr, 08.01.2010 21:44

c) Die Möglichkeiten für die Steuerung der Serienbrief-Erstellung per Makros lassen stark zu wünschen übrig
und was konkret? Mir ist pauschal nichts bekannt was fehlen würde.
Im Moment muss ich sehr viel mit Workarounds hantieren
WElche workarounds verwendest Du?
Ziel letztendlich
-> Eingaben werden in einem Calc-Sheet gemacht
-> diese Eingaben sollen in einer Dokumentvorlage landen
-> das so entstandene Dokument wird gespeichert und/oder gedruckt
das was Du hier beschreibst funktioniert mittels DDE-Verknüpfung:
füge in ein Writer-Dokument entsprechende Feldbefehle (DDE-Feld) mittels Einfügen-Feldbefehle-Variablen-DDE-Feld ein, die zu den gewünschten Calc-Zellen verknüpft sind und eine Eingabe in die Calczellen wird dann im Writerdokument wiedergegeben. Die DDE-Anweisung:

soffice D:\abc.ods Daten.D14

verknüpft zum Beispiel die Zelle D14 des Blattes "Daten" der Datei "abc.ods".
aber ich hab schon befürchtet, dass das nicht wirklich machbar ist
Inwiefern? Mit z.B. Makros kannst Du wohl jegliche Anforderung umsetzen, ich wüßte nicht was da nicht möglich sein sollte.
Die Serienbrieffunktion ist in OOo nach meinem Dafürhalten deutlich besser gelöst als in Word2003 (neuere kann ich nicht beurteilen) - angefangen damit, dass die Datenquelle nicht an das Dokument gebunden ist, weiter über die Funktion für jeden Datensatz eine Datei zu erzeugen, bis hin zum Filtern.
Ich bin nicht der Meinung das irgendetwas an der OOo-Serienbrieffunktion besser als in MS Word wäre.
Im Konkreten verstehe ich Deine Aussagen auch nicht, denn alles was Du hie aufführst (dass die Datenquelle nicht an das Dokument gebunden ist, weiter über die Funktion für jeden Datensatz eine Datei zu erzeugen, bis hin zum Filtern) geht meines wissens auch in MS Word.


Gruß
Stephan

Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief

von taraxacum » Fr, 08.01.2010 21:26

ein automatisierter Prozess sein soll (sprich per Makro) ist das wohl nicht umsetzbar.
Es ist sicher umsetzbar.

Prinzipiell wollte ich gerne komplett von der in OpenOffice leider sehr düftigen Serienbrief-Schiene weg, aber ich hab schon befürchtet, dass das nicht wirklich machbar ist.
Auch das sehe ich nicht so.
Die Serienbrieffunktion ist in OOo nach meinem Dafürhalten deutlich besser gelöst als in Word2003 (neuere kann ich nicht beurteilen) - angefangen damit, dass die Datenquelle nicht an das Dokument gebunden ist, weiter über die Funktion für jeden Datensatz eine Datei zu erzeugen, bis hin zum Filtern.

Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief

von DPunch » Fr, 08.01.2010 21:07

Aloha

Bearbeiten ... Datenquelle ist schonmal 'nen guter Tipp, da das ganze aber ein automatisierter Prozess sein soll (sprich per Makro) ist das wohl nicht umsetzbar.

Prinzipiell wollte ich gerne komplett von der in OpenOffice leider sehr düftigen Serienbrief-Schiene weg, aber ich hab schon befürchtet, dass das nicht wirklich machbar ist.

Re: Dokumentvorlage mit Feldern - Alternative zu Serienbrief

von taraxacum » Fr, 08.01.2010 00:00

Hallo,
Dein Vorgehen ist schon das einzig richtige, das sehe ich auch so.
zu a:
über 'Bearbeiten ... Datenquelle wechseln' lässt sich das schnell lösen.
zu b:
da hast du recht.

-------------
Die einzige Alternative die ich sehe, wäre eine Datenbankanwendung zu programmieren (z.B. Access)
vermutlich auch base, aber da habe ich keine Erfahrunng.
-------------
Mir fällt gerade noch etwas ein, das gehen könnte: die Funktion sverweis

Dokumentvorlage mit Feldern - Alternative zu Serienbrief

von DPunch » Mi, 06.01.2010 12:12

Aloha

Der Titel ist möglicherweise nicht wirklich konkret, aber in Kurzform ist mir einfach nichts besseres eingefallen.

Es geht um folgendes:

Ich habe eine Dokumentvorlage (bzw. mehrere, in verschiedenen Sprachen).
In dieser Vorlage befinden sich Felder (im Moment Seriendruck-Felder), die mit den Eingaben in einem Calc-Sheet gefüllt werden.
Die mit den Eingaben ergänzte Vorlage wird nur einmal benötigt und entsprechend gespeichert und/oder ausgedruckt.

Die Calc-Quelle besteht aus vielen vollkommen identisch aufgebauten Sheets (im Prinzip viele Datenbank-Tabellen, der Tabellenname wäre entsprechend der Name des Sheets), die einfach nur unterschiedliche Datensätze enthalten.

Prinzipiell ein Fall für den Serienbrief mit der Calc-Datei als registrierter Datenquelle.

Aber dabei ergeben sich einige Unannehmlichkeiten:
a) Erstelle ich die Seriendruck-Felder aus einer der vielen (vom Aufbau vollkommen identischen) Tabellen (respektive Sheets), können diese Felder aus anderen Tabellen nicht gefüllt werden.
(sprich: Erstelle ich drei Seriendruck-Felder aus Tabelle A basierend auf den Spalten X, Y und Z, so kann ich die Felder nur aus Tabelle A heraus füllen, nicht aber aus einer anderen x-beliebigen Tabelle mit den theoretisch gleichen Spalten)

b) Schon allein das Öffnen der Calc-Datenquelle über den Datenquellenbrowser dauert Ewigkeiten (gute 1-2 Minuten)

c) Die Möglichkeiten für die Steuerung der Serienbrief-Erstellung per Makros lassen stark zu wünschen übrig

Im Moment muss ich sehr viel mit Workarounds hantieren, um das gewünschte Ergebnis zu erzielen, aber da ich mich mit Office-Anwendungen noch nie wirklich beschäftigt habe (weder MS Office, noch OOo), würde mich brennend interessieren, ob es eine praktikable Alternative zu dem Weg über den Serienbrief gibt.

Ziel letztendlich
-> Eingaben werden in einem Calc-Sheet gemacht
-> diese Eingaben sollen in einer Dokumentvorlage landen
-> das so entstandene Dokument wird gespeichert und/oder gedruckt

Nach oben