in einem Textdokument sind Felder mit bedingtem Text (Einfügen-Feldbefehl-Funktionen-Bedingter Text), beispielsweise mit:
Bedingung: ([Adressdatenbank.Firma.FOrt] == "")
Dann: Adressdatenbank.Firma.FBsOrt
Sonst: Adressdatenbank.Firma.FOrt
Wie fülle ich diese Felder per Makro mit passendem Text (.CurrentPresentation) der dem aktuellen Datensatz entspricht? Zwar kenne ich jeweils direkt den Dann- und Sonst-Wert (denn der steht im ResultSet) aber wie werte ich überhaupt die Bedingung aus? Bitte daran denken dort kann etwas völlig Beliebiges stehen und das müsste in jedem Falle ausgewertet werden können (es ist also keine Lösung einfach im Makro zu prüfen ob der gerade aktuelle Wert für Adressdatenbank.Firma.FOrt ein Leerstring ist)?
Hat jemand einen Beispielcode?
Hier mein derzeitiges Testmakro, was für gewöhnliche Seriendruckfelder funktioniert, aber wo ich für bedingten Text noch keinen Ansatz habe (da steht nur ein XRay-Aufruf im Code):
Code: Alles auswählen
sub Test4
Dim myDataBaseContext as Object
Dim myStatement as Object
Dim ResultSet as Object
Dim oTxt as Object
Dim oFeld as Object
Dim i as integer
Dim s as string
myDataBaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
myStatement = myDataBaseContext.getByName("Adressdatenbank").getConnection("","").createStatement()
ResultSet = myStatement.executeQuery("SELECT * FROM Firma WHERE FID = '12'")
if ResultSet.next then' nur den ersten Datensatz verwenden
oTxt = thiscomponent.getTextFields().createEnumeration()
while oTxt.hasmoreElements()
oFeld = oTxt.nextElement
if ofeld.supportsService("com.sun.star.text.TextField.Database") then
sfieldname = ofeld.Textfieldmaster.DataColumnName
If ResultSet.Columns.hasByName(sfieldName) then
s$ = ResultSet.Columns.getByName(sfieldName).String 'Get desired presentation string.
ofeld.CurrentPresentation = s$ 'Set the presentation.
endif
endif
If ofeld.supportsService("com.sun.star.text.TextField.ConditionalText") then
GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
XrayTool._Main.Xray ofeld
End If
wend
msgbox "Fertig"
else
msgbox "Abbruch, Fehler"
endif
end sub
Gruß
Stephan