BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Datei speichern ohne überschreiben. Overwrite

Alles zur Programmierung im LibreOffice.
Antworten
elefantino
Beiträge: 19
Registriert: Do 20. Mär 2014, 09:11

Datei speichern ohne überschreiben. Overwrite

Beitrag von elefantino » 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



F3K Total
Beiträge: 2416
Registriert: So 10. Apr 2011, 10:10

Re: Datei speichern ohne überschreiben. Overwrite

Beitrag von F3K Total » So 3. Okt 2021, 13:31

Moin,
hänge mal diese Zeilen zum Speichern an dein Makro:

Code: Alles auswählen

	if not fileexists(sUrl) then ' wenn es die Datei noch nicht gibt, wird gespeichert.
	    oNewDoc.storeAsUrl(surl, arg()) 'Speichern
	else 'wenn es die Datei gibt, wird abgefragt, ob sie überspeichert werden soll
	    if msgbox ("Soll die Datei überspeichert werden",36,"Datei existiert") = 6 then
	        oNewDoc.storeAsUrl(surl, arg()) 'Speichern
            endif
	endif
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

elefantino
Beiträge: 19
Registriert: Do 20. Mär 2014, 09:11

Re: Datei speichern ohne überschreiben. Overwrite

Beitrag von elefantino » So 3. Okt 2021, 14:39

Vielen Dank F3K Total , das funktioniert prima. Neugierdehalber noch eine Frage: warum funktioniert das nicht mir "Overwrite"?

F3K Total
Beiträge: 2416
Registriert: So 10. Apr 2011, 10:10

Re: Datei speichern ohne überschreiben. Overwrite

Beitrag von F3K Total » Mo 4. Okt 2021, 19:06

elefantino hat geschrieben:
So 3. Okt 2021, 14:39
Neugierdehalber noch eine Frage: warum funktioniert das nicht mir "Overwrite"?
keine Ahnung!
Windows 10: AOO, LO Linux Mint: AOO, LO

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten