Datei speichern ohne überschreiben. Overwrite
Verfasst: So 3. Okt 2021, 10:01
Hallo. Ich habe eine Datenbank, die über einen Button ein Dokument öffnet, welches Platzhalter enthält, diese wiederrum werden von der Datenbank befüllt. Dank des supertollen Handbuches funktioniert dieses auch einwandfrei. Nach dem öffnen der Datei soll diese unmittelbar abgespeichert werden, dank des beispiels von Andrew Pitonyak/Volker Lenhardt funktioniert auch dieses. Jetzt kommt das Problem: Ich möchte nicht, dass eine evtl. vorhandene Datei ohne nachfragen überschrieben wird leider funktioniert das mit "Overwrite" False nicht. Kann mir jemand sagen, wo ich einen Fehler mache? Ich habe es getestet mit Win7/Libreoffice 6.4 und Win10 /Libreoffice 7.0.
Code: Alles auswählen
IF oForm.RowCount = 0 THEN
msgbox "Kein Datensatz zum Drucken vorhanden"
EXIT SUB
END IF
REM Der Zugriff auf die URL ist nicht vom Formular aus direkt möglich. Es muss auf den darüber liegen-
REM den Frame der Datenbank Bezug genommen werden.
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title))
REM Der Titel der Datenbank wird von der URL abgetrennt.
stDir = stDir & "Lettera bozza.odt"
rem Die Vorlage wird aufgesucht und geöffnet
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 Die Textfelder werden eingelesen
oTextfields = oNewDoc.Textfields.createEnumeration
DO WHILE oTextfields.hasMoreElements
oTextfield = oTextfields.nextElement
IF oTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") THEN
stColumnname = oTextfield.PlaceHolder
REM Placeholder ist die Benennung für das Textfeld
IF oColumns.hasByName(stColumnname) THEN
REM Wenn der Name des Textfeldes gleich dem Spaltennamen der Daten ist, die dem Formular
REM zugrunde liegen, wird der Inhalt aus der Datenbank auf das Feld in dem Textdokument übertragen.
inIndex = oForm.findColumn(stColumnname)
oTextfield.Anchor.String = oForm.getString(inIndex)
END IF
END IF
LOOP
REM Datei speichern
dim document as object
dim dispatcher as object
dim surl as string
Dim arg(1) as New com.sun.star.beans.PropertyValue
arg(0).Name="FilterName"
arg(0).Value = "writer8"
arg(1).Name = "Overwrite"
arg(1).Value = False
surl = "file:///C:/Dati/_test.odt"
oNewDoc.storeAsUrl(surl, arg()) 'Speichern