vielleicht so:
Code: Alles auswählen
If sColumnname = "Anrede" Then
thisTextfield.Anchor.String = stAnrede
End If
Gruß
Robert
Code: Alles auswählen
If sColumnname = "Anrede" Then
thisTextfield.Anchor.String = stAnrede
End If
Code: Alles auswählen
stAuftrag = oFormAuftraege.getstring(oFormAuftraege.findcolumn("AuftragID"))
Code: Alles auswählen
Sub Textfieldmakro
DialogLibraries.LoadLibrary( "Standard" )
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getbyName("MainForm")
oFormKontakt = oForm.getbyname("FormKontakt")
oFormAuftraege = oForm.getByName("Unterformular Auftraege")
oColumns = oForm.Columns
nKontakt = oFormKontakt.getint(oFormKontakt.findcolumn("KontaktartID"))
scurrentKontakt = oFormKontakt.getString(oFormKontakt.findcolumn("Nummer"))
' Listenfelder auslesen
oController = oDoc.getCurrentController()
' Listenfeld Anrede:
oListenfeldAnrede = oForm.getByName("fmtAnredenID")
oView = oController.getControl(oListenfeldAnrede)
stAnrede = oView.SelectedItem
' Listenfeld Titel:
oListenfeldTitel = oForm.getByName("fmtTitelID")
oView = oController.getControl(oListenfeldTitel)
stTitel = oView.SelectedItem
'Tabellenkontrollfelder auslesen
'Tabelle Aufträge
'Cursor-Fehlermeldung vermeiden, wenn kein Auftrag vorhanden:
select case Auftrag
case "AuftragID" IS NULL
stAuftrag = ""
case else stAuftrag = oFormAuftraege.getstring(oFormAuftraege.findcolumn("AuftragID")) 'Variablenbelegung, wenn AuftragID vorhanden.
end select
select case nKontakt
case 3
scurrentKontakt = "per Fax: " & scurrentKontakt
case 6
scurrentKontakt = "per Mail: " & scurrentKontakt
Case else
scurrentKontakt = ""
end select
REM Pfad zur Vorlage zusammensetzen
Globalscope.BasicLibraries.loadLibrary("Tools")
sURL = oDoc.Parent.URL
sURL = DirectoryNameoutofPath(sURL,"/") & "/"
sURL = sURL & "Briefvorlage.ott"
REM Vorlage öffnen
Dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "AsTemplate"
args(0).Value = True
newDoc = StarDesktop.loadComponentFromURL(sURL,"_blank",0,args)
REM Textfelder holen
enumTextfields = newDoc.Textfields.createEnumeration
Do While enumTextfields.hasMoreElements
thisTextfield = enumTextfields.nextElement
If thisTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") Then
sColumnname = thisTextfield.PlaceHolder
if thisTextfield.PlaceHolder = "Kontakt" Then 'Sonderfall vom Unterformular kommt
thisTextfield.Anchor.String = scurrentKontakt
end if
If oColumns.hasByName(sColumnname) Then
nIndex = oForm.findColumn(sColumnname)
thisTextfield.Anchor.String = oForm.getString(nIndex)
End If
End If
' Listenfeldinhalte holen:
If sColumnname = "Anrede" Then
thisTextfield.Anchor.String = stAnrede
End If
If sColumnname = "Titel" Then
thisTextfield.Anchor.String = stTitel
End If
' Tabellenfeldinhalte holen:
If sColumnname = "Auftrag" Then
thisTextfield.Anchor.String = stAuftrag
End If
Loop
End Sub
Code: Alles auswählen
IF stAuftragID <> "" THEN
Code: Alles auswählen
CASE "AuftragID" IS NULL
Code: Alles auswählen
IsEmpty(Variable) ' leer
IsNull(Variable) ' noch nichts zugewiesen
Häufig behelfe ich mir damit, eine Varibale grundsätzlich zuerst als Text zu definieren und später umzuformen:
Code: Alles auswählen
'Cursor-Fehlermeldung vermeiden, wenn kein Auftrag vorhanden:
if IsNull( oFormAuftraege.getstring(oFormAuftraege.findcolumn("AuftragID"))) then
stAuftrag = ""
else stAuftrag = oFormAuftraege.getstring(oFormAuftraege.findcolumn("AuftragID")) 'Variablenbelegung
endif
Code: Alles auswählen
inColumn = oFormAuftraege.findcolumn("AuftragID")
Code: Alles auswählen
stText = oFormAuftraege.getstring(oFormAuftraege.findcolumn("AuftragID"))
Code: Alles auswählen
stText = oFormAuftraege.getstring(inColumn)
Code: Alles auswählen
IF stText <> "" THEN
Code: Alles auswählen
nKontakt = oFormKontakt.getint(oFormKontakt.findcolumn("KontaktartID"))
scurrentKontakt = oFormKontakt.getString(oFormKontakt.findcolumn("Nummer"))