.DateTimeValue für bestehendes Datumsfeld ändern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: .DateTimeValue für bestehendes Datumsfeld ändern

Re: .DateTimeValue für bestehendes Datumsfeld ändern

von Stephan » Mo, 30.03.2020 13:14

Hallo Tom,

ich hatte die Datei (ungewollt) zwischengespeichert, weshalb nun bei Geändert das aktuelle Datum stand ...

Es geht jetzt auch hier, allerdings nur unter LO, nicht unter AOO.
splitten und ne Variable zwischenschieben?
das meinte ich mit 'Date-Time-Struct aus Einzelwerten aufbauen' bzw. auch nicht, denn Du meinst ja wahrscheinlich NUR das hier:

Code: Alles auswählen

x = ThisComponent.getDocumentProperties().ModificationDate
oField.DateTimeValue = x


Gruß
Stephan

Re: .DateTimeValue für bestehendes Datumsfeld ändern

von Toxitom » Mo, 30.03.2020 13:00

Hei Stephan,

vielleicht noch ne Idee:

Die Zeile

oField.DateTimeValue = ThisComponent.getDocumentProperties().ModificationDate

splitten und ne Variable zwischenschieben? Vielleicht liefert diese ne Ref-Verbindung - und das Modufication-Date wird mit der Aktion angepasst?

VG
Tom

Re: .DateTimeValue für bestehendes Datumsfeld ändern

von Toxitom » Mo, 30.03.2020 12:53

Hey Stephan,
das hilft leider nichts....
Hmm, komisch. Bei mir geht es (Win 10, LO 5.3.x)

Hier: Ausgangsbild (Deine Datei):
bild1.jpg
bild1.jpg (54.59 KiB) 5022 mal betrachtet
Und nach Makro -Lauf (ich reduziere das Änderungsdatum um 1 Tag - um was zu sehen)
bild2.jpg
bild2.jpg (60.11 KiB) 5022 mal betrachtet
Mein Code:

Code: Alles auswählen

Sub Main
	Dim k
	oEnum = ThisComponent.getTextFields().createEnumeration()
	Do While oEnum.hasMoreElements()
		oField = oEnum.nextElement()
		If oField.supportsService("com.sun.star.text.textfield.DateTime") Then
			If oField.isDate = True AND oField.IsFixed = False Then
			    oDat = ThisComponent.getDocumentProperties().ModificationDate
         		oDat.Day = oDat.Day -1
			    
				oField.DateTimeValue = oDat
				oField.IsFixed = True
				'oField.Update()
'xray oField
'stop				
				k = k + 1
			End If
		End If
	Loop
	If k > 0 Then
			Msgbox k & " Datumsfeld(er) wurde(n) korrigiert."
		Else
			Msgbox "Keine Veränderungen vorgenommen."
	End If  
End Sub
Viele Grüße
Tom

Edit: Sorry BIld zwei war noch nicht aktualiert (Feldfunktion) - Feld ist aber fixiert.

Re: .DateTimeValue für bestehendes Datumsfeld ändern

von Stephan » Mo, 30.03.2020 12:31

Hallo Tom,

das hilft leider nichts (getestet LO 6.3 und AOO 4.1.5).

Das der Zugriff auf das Datumsfeld an sich funktioniert ist offensichtlich, weil die Änderung für .IsFixed übernommen wird. Ich habe auch schon testweise das komplette DateTime-Struct aus Einzelwerten (Year, Month, ...) nachgebaut (statt gleich .ModificationDate) zu nutzen, brachte auch nichts.


Gruß
Stephan

Re: .DateTimeValue für bestehendes Datumsfeld ändern

von Toxitom » Mo, 30.03.2020 12:17

Hey Stefan,
Wer hat eine Lösung?
Nimm die Zeile "oField.Update()" raus. Die schreibt Dir wieder das aktuelle Datum da rein - egal, welche Einstellung Du vorher gemacht hast.

Die Anzeige wird eh automatisch korrigiert.

VG
Tom

.DateTimeValue für bestehendes Datumsfeld ändern

von Stephan » Mo, 30.03.2020 11:17

Hallo,

in einen odt-Dokument ist ein Datumsfeld welches nicht fixiert ist. Dieses Datumsfeld soll auf das Datum von Datei-Eigenschaften-Geändert am: gesetzt und fixiert werden.

Folgender Code funktioniert nicht:

Code: Alles auswählen

Sub Main
	Dim k
	oEnum = ThisComponent.getTextFields().createEnumeration()
	Do While oEnum.hasMoreElements()
		oField = oEnum.nextElement()
		If oField.supportsService("com.sun.star.text.textfield.DateTime") Then
			If oField.isDate = True AND oField.IsFixed = False Then
				oField.DateTimeValue = ThisComponent.getDocumentProperties().ModificationDate
				oField.IsFixed = True
				oField.Update()
				k = k + 1
			End If
		End If
	Loop
	If k > 0 Then
			Msgbox k & " Datumsfeld(er) wurde(n) korrigiert."
		Else
			Msgbox "Keine Veränderungen vorgenommen."
	End If  
End Sub
Wer hat eine Lösung?

Gruß
Stephan
Dateianhänge
Feldfixierung-Test_korr.odt
(21.67 KiB) 156-mal heruntergeladen

Nach oben