ich bin ziemlich neu im Thema Markroprogrammierung speziell bei Ooo/LibO unterwegs und beiß mir gerade die Zähne u.a. an einem Thema aus, für das es unter MS Word durchaus Beispiele gibt.
Folgendes Szenario: Ich habe im Writer ein Formular erstellt, das von einer DB gespeist wird. Das funktioniert bisher genauso gut wie das abspeichern als PDF unter einem vorgegebenen Namen. Ich habe es auch hinbekommen, daß "Save" solange gesperrt ist bis min. eine Checkbox gefüllt ist. Jetzt soll zusätzlich noch der Inhalt eines Textfeldes (txt1), das, wie die anderen auch, über eine Listbox gefüllt wird, geprüft werden. Ist dieses leer bleibt, unabhängig von den Checkboxen, "Save" ebenfalls deaktiviert.
Das 2., wahrscheinlich größere Thema, ist das anfügen von bestehenden Dokumenten/Formularen (z.B. Anhang A, ...B, ...) an das jeweilige Ende des aktuellen Formulars.
Ich möchte erreichen, daß ich so oft ich auf den Button "Anlage A" (oder B bzw. C) drücke, diese bereits existierende Anlage entsprechend oft am aktuellen Dokument angehängt wird.
Hier der bisherige Code:
Code: Alles auswählen
Sub Listbox_select(oEvent AS Object)
oDoc = thisComponent
oController = oDoc.getCurrentController()
oform = odoc.drawpage.forms.getbyindex(0)
oList = oForm.getByName("lst1")
oText1 = oForm.getByName("txt1")
oText2 = oForm.getByName("txt2")
oText3 = oForm.getByName("txt3")
oText4 = oForm.getByName("txt4")
oText5 = oForm.getByName("txt5")
oText6 = oForm.getByName("txt6")
oListCtr = ThisComponent.CurrentController.GetControl(oList)
oTextCtr = oListCtr.SelectedItem
Dim Context, DB, Connection As Object
Dim DBName As String
Dim Statement As Variant
Dim Sql1, Sql2, Sql3, Sql4, Sql5, Sql6 as string
Dim Query1, Query2, Query3, Query4, Query5, Query6 As Object
DBName = "REPARATUR"
Context = createUnoService("com.sun.star.sdb.DatabaseContext")
DB = Context.GetByName (DBName)
Connection = DB.GetConnection ("","")
Sql1 = "SELECT `key` FROM `REPARATUR` WHERE `key` = '"+oTextCtr+"';"
Sql2 = "SELECT `objekt_anrede` FROM `REPARATUR` WHERE `key` = '"+oTextCtr+"';"
Sql3 = "SELECT `objekt_name` FROM `REPARATUR` WHERE `key` = '"+oTextCtr+"';"
Sql4 = "SELECT `objekt_strasse` FROM `REPARATUR` WHERE `key` = '"+oTextCtr+"';"
Sql5 = "SELECT `objekt_ort` FROM `REPARATUR` WHERE `key` = '"+oTextCtr+"';"
Sql6 = "SELECT `langtext` FROM `REPARATUR` WHERE `key` = '"+oTextCtr+"';"
Statement = Connection.CreateStatement
Query1 = Statement.ExecuteQuery(Sql1)
oText1.text = Query1.GetString(1)
Query2 = Statement.ExecuteQuery(Sql2)
oText2.text = Query2.GetString(1)
Query3 = Statement.ExecuteQuery(Sql3)
oText3.text = Query3.GetString(1)
Query4 = Statement.ExecuteQuery(Sql4)
oText4.text = Query4.GetString(1)
Query5 = Statement.ExecuteQuery(Sql5)
oText5.text = Query5.GetString(1)
Query6 = Statement.ExecuteQuery(Sql6)
oText6.text = Query6.GetString(1)
Connection.Close()
End Sub
Sub chkFail
oDoc = thisComponent
oController = oDoc.getCurrentController()
oform = odoc.drawpage.forms.getbyindex(0)
oText1 = oForm.getByName("txt1")
oCheck1 = oForm.getByName("chk1")
oCheck2 = oForm.getByName("chk2")
oCheck3 = oForm.getByName("chk3")
oChkFail1 = oForm.getByName("chkfail1")
oChkFail2 = oForm.getByName("chkfail2")
oBtnSave = oForm.getByName("btnsave")
oBtnSaveSend = oForm.getByName("btnsavesend")
If oText1.text <> "" THEN
oChkFail1.text = ""
msgbox oText1.text
'oBtnSave.Enabled = TRUE
'oBtnSaveSend.Enabled = TRUE
else
oChkFail1.text = "!"
msgbox oText1.text
'oBtnSave.Enabled = FALSE
'oBtnSaveSend.Enabled = FALSE
END If
If oCheck1.State (1) or oCheck2.State (1) or oCheck3.State (1) THEN
oChkFail1.text = ""
oChkFail2.text = ""
oBtnSave.Enabled = TRUE
oBtnSaveSend.Enabled = TRUE
else
oChkFail1.text = "!"
oChkFail2.text = "!"
oBtnSave.Enabled = FALSE
oBtnSaveSend.Enabled = FALSE
END If
End Sub
Sub savePDF
DIM datname, datum, path, extension, pdfurl as String
oDoc = thisComponent
oController = oDoc.getCurrentController()
oform = odoc.drawpage.forms.getbyindex(0)
oText3 = oForm.getByName("txt3")
oDate = oForm.getByName("date")
datname = oText3.text
datum = oDate.text
path = "C:/Temp/"
extension = ".pdf"
pdfurl = "file:///" + path + datname + " " + datum + extension
dim pdfProperties(1) as new com.sun.star.beans.PropertyValue
pdfProperties(0).Name = "FilterName"
pdfProperties(0).Value = "writer_pdf_Export"
oDoc.storeToURL(pdfurl, pdfProperties())
End Sub
Gerne nehme ich auch Verbesserungsvorschläge zur Codeoptimierung entgegen

Ich freue mich auf euere Ratschläge und Komentare
Grüße
opiWahn
Moderation,4: in Unterbereich BASIC verschoben