[gelöst] Base->Makro->Writer->Feldbefehl „Platzhalter“
Verfasst: Do 7. Mai 2015, 14:48
Habe hier eine inzwischen eine gut funktionierende Praxisverwaltung auf die Beine gestellt.
Jetzt bin ich dabei an dem „Korrespondenz-Modul“ zu basteln um das auch zu Papier zu bringen und stoße auf ein Prob wo ich nicht weiterkomme.
In Base habe ich Maske(n) erstellt in der die Daten die in den Brief/Anschreiben/Rechnung/ …
kommen generiert/zusammengetragen werden.
Mit Hilfe eines Makros wird ein Writer-Doc geladen und die Felder in die Feldbefehl/Platzhalter übertragen.
So weit so gut, jetzt mein Problem:
Mir gelingt es nicht die unbelegten !Zeilen! mit dem !Platzhalter! (zB. Postfach wenn Straße und umgekehrt)
mit Writer Bordmitteln (Bereich – Ausblenden) auszublenden.
Hat jemand hier ein Trick wie es doch möglich sein könnte ?
Da es so anscheinend nicht möglich ist, dachte ich an folgende Lösung:
Wenn die Zeile gelöscht werden soll übergebe ich an den Platzhalter entweder
Backspace ( CHR(08) ) oder Delete ( CHR(127) ), nur soweit komme ich nicht,
da mir das Makro mit der Fehlermeldung „Objektvariable nicht belegt“ den Dienst quittiert.
Was mache ich hier falsch ???
Das Makro:
Jetzt bin ich dabei an dem „Korrespondenz-Modul“ zu basteln um das auch zu Papier zu bringen und stoße auf ein Prob wo ich nicht weiterkomme.
In Base habe ich Maske(n) erstellt in der die Daten die in den Brief/Anschreiben/Rechnung/ …
kommen generiert/zusammengetragen werden.
Mit Hilfe eines Makros wird ein Writer-Doc geladen und die Felder in die Feldbefehl/Platzhalter übertragen.
So weit so gut, jetzt mein Problem:
Mir gelingt es nicht die unbelegten !Zeilen! mit dem !Platzhalter! (zB. Postfach wenn Straße und umgekehrt)
mit Writer Bordmitteln (Bereich – Ausblenden) auszublenden.
Hat jemand hier ein Trick wie es doch möglich sein könnte ?
Da es so anscheinend nicht möglich ist, dachte ich an folgende Lösung:
Wenn die Zeile gelöscht werden soll übergebe ich an den Platzhalter entweder
Backspace ( CHR(08) ) oder Delete ( CHR(127) ), nur soweit komme ich nicht,
da mir das Makro mit der Fehlermeldung „Objektvariable nicht belegt“ den Dienst quittiert.
Was mache ich hier falsch ???

Das Makro:
Code: Alles auswählen
SUB Textfelder_Fuellen (oEvent AS OBJECT)
DIM oForm AS OBJECT
DIM aForms AS OBJECT
DIM oColumns AS OBJECT
DIM oDB AS OBJECT
DIM oNewDoc AS OBJECT
DIM oTextfields AS OBJECT
DIM oTextfield AS OBJECT
DIM stColumnname AS STRING
DIM stDir AS STRING
DIM inIndex AS INTEGER
DIM stTag AS STRING
stTag = oEvent.Source.Model.Tag
oForms() = Split(stTag, ",")
oForm = thisComponent.Drawpage.Forms.MainForm.SubForm
oColumns = oForm.Columns
oDB = ThisComponent.Parent
stDir = "file:///Users/.........../Korrespondenz/0_Vorlagen/"
stDir = stDir & (Trim(aForms(0)))
REM Vorlage öffnen
DIM args(0) AS NEW com.sun.star.beans.PropertyValue
args(0).Name = "AsTemplate"
args(0).Value = True
oNewDoc = StarDesktop.loadComponentFromURL(stDir,"_blank",0,args)
REM Textfelder holen
oTextfields = oNewDoc.Textfields.createEnumeration
DO WHILE oTextfields.hasMoreElements
oTextfield = oTextfields.nextElement
IF oTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") THEN
stColumnname = oTextfield.PlaceHolder
IF oColumns.hasByName(stColumnname) THEN
inIndex = oForm.findColumn(stColumnname)
oTextfield.Anchor.String = oForm.getString(inIndex)
IF oForm.getString(inIndex) = "_" THEN
oTextfield.Anchor.String = "CHR(08)" ' <-- Die böse Stelle :evil: :oops:
END IF
END IF
END IF
LOOP
END SUB