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).
[quote="Stephan"]nenne ein paar Beispiele dafür - Was ist seiner Natur nach nicht automatisierbar?[/quote]
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
[quote]weiß ich nicht was das inhaltlich meint[/quote]
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
[quote]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[/quote]
Nunja, ursprünglich gings um eine Alternative zum Serienbrief, wie und ob ich das Ganze mithilfe von Makros umsetze, ist dann erst ein Detail.
[quote]Du schlägst doch wohl aber nicht vor Serienbriefe per Makro zu programmieren indem Du über den DAtenbrowser rumfrickelst?[/quote]
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.
[quote]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:[/quote]
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.
[quote]Dann verstehe ich nicht warum Du Basic als Programmiersprache einsetzt, denn das ist ja nunmal ohnehin langsam[/quote]
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.
[quote]Keine Ahnung was das sagen soll. Keine dieser Dinge hast Du hier konkret vorgestellt, so das man schwerlich was dazu sagen kann.[/quote]
Benutzerfelder:
Benannte Benutzerfelder ins Writer-Dokument einfügen.
Diese der Reihe nach ansprechen und mit den Eingaben im Calc-Sheets füllen.
[code]
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)
[/code]
Serienbrief:
Seriendruckfelder ins Writer-Dokument einfügen.
Diese wiederum der Reihe nach ansprechen und mit den Eingaben füllen.
[code]
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
[/code]
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).