Seite 1 von 1

[Gelöst][Makro] Fehler beim Überschreiben der Datei

Verfasst: Mo, 28.11.2011 11:36
von opiWahn
Hallo,

bei Abspeichern eines Writerformulars muß ich die Unterscheidung treffen wer es gerade geöffnet hat und mit entsprechenden Hinweisen das Speichern verbieten bis alle "Fehlerquellen" beseitigt wurden.
Prinzipiell funktioniert das alles auch bis zu dem Punkt an dem die Datei, die dann einen neuen Namen trägt, erneut geöffnet, bearbeitet und dann gespeichert werden soll. Das Makro erkennt, daß die Datei existiert, verweigt dann aber das Überschreiben mit einem Exception
Type: com.sun.star.task.ErrorCodeIOException
Message:. ???

Die Datei heißt für A immer "Auftrag_....odt", gespeichert wird sie dann nach Prüfung mit einer 4 stelligen Nummer. B öffnet die Datei mit dieser jeweiligen Nummer und soll sie unter der gleichen Nummer speichern bzw. die vorhandene überschreiben. ???

Code: Alles auswählen

Sub Save_as_ODT
Dim Speichern
Dim pages

pages=thiscomponent.CurrentController.PageCount

	if thisComponent.title = "Auftrag_Form1.odt" then
		proofAllOptGrp1
	else
		proofAllOptGrp2
	end if
	
	if iError > 0 then
		MsgBox "Sie haben noch "& iError &" Fehler zu beheben", 0+48, "Achtung"
	elseif thisComponent.title <> "Auftrag_Form1.odt" and pages < 2 then
		MsgBox "Sie müßen noch min. 1 Prüfprotokoll anfügen", 0+48, "Achtung"
	exit Sub
	
	else
				
	oform = thisComponent.drawpage.forms.getbyindex(0)
	aText = oForm.getByName("txt_oName")
	aNum = oForm.getByName("txt_oKey")

		if aText.text = "" then
			datname = "leer"
		else
			datname = aNum.text
		end if
		
	path = "C:/Roiger/Auftraege/"
	extension = ".odt"
	odturl = "file:///" + path + datname + extension
	
		if FileExists (odturl) then
		Speichern =	MsgBox ("Eine Datei mit dem Namen" & CHR$(10) & odturl & CHR$(10) & "existiert bereits!" _
				    & CHR$(10) & "Soll sie überschrieben werden?",4+48, "Achtung")
				    
				       if Speichern = 7 then
    				   msgbox "Datei wurde nicht gespeichert", 0, "Information"
     				   exit sub
     				   end if
		end if
		
	thisComponent.storeToURL(odturl, Array())
	msgbox "Datei wurde gespeichert", 0, "Information"
	
	endif
		
End Sub

Re: [Makro] Fehler beim Überschreiben der Datei

Verfasst: Mo, 28.11.2011 11:48
von Stephan
Ich versuche mal zu raten, die Zeile:
thisComponent.storeToURL(odturl, Array())
muß heißen:
thisComponent.storeAsURL(odturl, Array())

Gruß
Stephan

Re: [Makro] Fehler beim Überschreiben der Datei

Verfasst: Mo, 28.11.2011 12:17
von opiWahn
Hallo,

@ Stephan: daran hatte ich auch gedacht, aber dann ändert sich auch für A der Dateiname. Der müßte aber zwingend bei Auftrag ... bleiben.
@ Rocko: Tut mir leid - es lag nicht in meiner Absicht, dich zu brüskieren. Zum einen hat ich das das ursächliche Problem, dank deines Hinweises gelöst und zum anderen war ich in den vergangenen 2 Wochem im Urlaub und hab mich in dieser Zeit mal anderen Dingen gewidmet.

Re: [Makro] Fehler beim Überschreiben der Datei

Verfasst: Mo, 28.11.2011 20:56
von Stephan
aber dann ändert sich auch für A der Dateiname
Inwiefern? Der Dateiname ändert sich nicht sondern wird übergeben und ist in beiden Fällern gleich wenn Du den Gleichen übergibts was ja auch so im Code steht, denn odturl ist natürlich immer das Gleiche.



Gruß
Stephan

Re: [Makro] Fehler beim Überschreiben der Datei

Verfasst: Di, 29.11.2011 11:19
von opiWahn
Hallo Stephan,

hab's nun so gelöst - und es funktioniert :)

Code: Alles auswählen

Sub Save_as_ODT
Dim Speichern
Dim pages

pages=thiscomponent.CurrentController.PageCount

	if thisComponent.title = "Auftrag_Form1.odt" then
		proofAllOptGrp1
	else
		proofAllOptGrp2
	end if
	
	if iError > 0 then
		MsgBox "Sie haben noch "& iError &" Fehler zu beheben", 0+48, "Achtung"
	elseif thisComponent.title <> "Auftrag_Form1.odt" and pages < 2 then
		MsgBox "Sie müßen noch min. 1 Prüfprotokoll anfügen", 0+48, "Achtung"
	exit Sub
	
	else
				
	oform = thisComponent.drawpage.forms.getbyindex(0)
	aText = oForm.getByName("txt_oName")
	aNum = oForm.getByName("txt_oKey")

		if aText.text = "" then
			datname = "leer"
		else
			datname = aNum.text
		end if
		
	path = "C:/Roiger/Auftraege/"
	extension = ".odt"
	odturl = "file:///" + path + datname + extension
	
		if FileExists (odturl) then
		Speichern =	MsgBox ("Eine Datei mit dem Namen" & CHR$(10) & odturl & CHR$(10) & "existiert bereits!" _
				    & CHR$(10) & "Soll sie überschrieben werden?",4+48, "Achtung")
				    
				       if Speichern = 7 then
    				   msgbox "Datei wurde nicht gespeichert", 0, "Information"
     				   exit sub
     				   end if
		end if
	
		if thisComponent.title = "Auftrag_Form1.odt" then	
		thisComponent.storeToURL(odturl, Array())
		else
		thisComponent.storeAsURL(odturl, Array())
		endif
		
	msgbox "Datei wurde gespeichert", 0, "Information"
	
	endif
		
End Sub

Re: [Gelöst][Makro] Fehler beim Überschreiben der Datei

Verfasst: Di, 29.11.2011 12:18
von Stephan
hab's nun so gelöst - und es funktioniert
nur leider verstehe ich es nicht bzw. meine FRage "Inwiefern?" besteht weiterhin, da sich in:

Code: Alles auswählen

if thisComponent.title = "Auftrag_Form1.odt" then   
      thisComponent.storeToURL(odturl, Array())
      else
      thisComponent.storeAsURL(odturl, Array())
      endif
weder im Then- noch im Else-TEil ein Dateiname ändert, was ja Ursache meiner Frage bzw. meines Unverständnisses war, denn Du schriebst:
aber dann ändert sich auch für A der Dateiname
und ich kann erstens nicht erkennen das sich ein Dateiname ändert, bzw. in jedem Falle ändert sich der Dateiname (für was auch immer?) bei Ausführung von Then- und Else in gleichem Maße, da der einzige Unterschied des speicherns mittels 'As' bzw. 'To' der ist das mit Abschluss des Speichern das aktive Fenster auf eine (ggf.) andere Datei verweist, bei 'To' wird dort das 'alte' Dokument angezeigt, bei 'As' das gerade neu Erstellte.


Gruß
Stephan