Makro für einen Zeitstempel

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Makro für einen Zeitstempel

Beitrag von clag »

Hallo Leutz,

ich möchte neuen oder geänderten Datensätzen in einer Tabelle einen Zeitstempel verpassen per Formel oder Makro,
bei meiner Stöberei hier bin ich auf folgenden Beitrag/ Makro gestoßen
viewtopic.php?f=10&t=4921
Toxitom hat geschrieben:Hey Gerald,

also gut - da es soviel Fragen hierzu schon gab: hier mal eine Lösung:

Nein, eine eingebaute Funktion ist nicht drin. Lässt sich aber ganz leicht selbst verwirklichen.

Die folgende Funktion speichertst du ab in "Meine Makros" - "Standard":

Code: Alles auswählen

function myNow()
	oZell = thisComponent.getcurrentSelection()
	if not oZell.supportsService("com.sun.star.sheet.SheetCell") then
	    msgbox "Bitte nur eine Zelle markieren (aktivieren)!", 48, "Fehler!"
	    exit function
	end if
	oZell.value = now()
	oZell.NumberFormat = 30
end function
Gruss
Thomas
funktioniert soweit,
aber einige Eigenheiten versteh ich nicht, würd ich aber gern

1. es werden nur Einträge mit ganzen Sekunden erzeugt
2. das von mir voreingestellte Datumsformat "TT.MM.JJJJJ HH:MM:SS,0000" wird wieder auf "TT.MM.JJ" zurück gesetzt
3. mein DAU versuch das "now" durch "jetzt" zu erstzen führte zu einer Nullnummer, naja (versuch macht kluch) :D oder auch nicht :lol:

vielleicht kann mir jemand erklären wie es zu stande kommt, bzw was ich ändern müsste damit ich

1. 1000stel Sekunden bekomme
2. das ZellFormat beibehalten wird
3. wieso funktioniert "jetzt" nicht

schonmal Danke fürs lesen :)
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: Makro für einen Zeitstempel

Beitrag von Karolus »

Hallo
1. 1000stel Sekunden bekomme
gar nicht, auch bei Kommastellen hinter den Sekunden wird auf die Sekunde gerundet.
2. das ZellFormat beibehalten wird
indem du die Zeile:
oZell.NumberFormat = 30
mit einem ' auskommentierst
und mit einer eingefügten Zeile:
msgbox ozell.numberformat
erfährst du den internen Zahlenformatindex der aktuellen Zelle
3. wieso funktioniert "jetzt" nicht
weil die Unterstützung von Calc-funktionen innerhalb der Basic-Umgebung erst mal mit ein paar extra Codezeilen [Dannenhöfer] aktiviert werden müsste - du dann aber innerhalb trotzdem die englischen Calcfunktionen benutzen müsstest -- und jetzt rate mal wie das englische jetzt() genannt wird --- now()
kurz: Jetzt() ist auch nicht genauer wie die runtimefunction now - aber komplizierter.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makro für einen Zeitstempel

Beitrag von clag »

Moin moin liebe Leutz,

sorry wenn ich da nochmal nachfrage,

ich habe mit den Macros und der Funktion "JETZT" noch etwas herumprobiert und bemerkt,
dass zumindest "JETZT" doch im Bereich Sek/100 auflöst und die Makros unbeirrt immer ganze Sekunden ausgeben
und damit nicht für Protokoll Aktionen > 1 Hz geeignet wären
(ich hatte dabei an einen automatisierten (Makro) Zeilenweisen Datenimport aus einer anderen Tabelle gedacht)

Für ein manuelles Auslösen nach händischer Eingabe eine Datensatzes reicht 1 Sek Differenz natürlich völlig.

trotzdem würde mich jetzt interessieren kann "now" nur ganze Sekunden oder wird das im dem Makro irgendwie beschnitten?
jetzt-funktion1.jpg
jetzt-funktion1.jpg (49.38 KiB) 1629 mal betrachtet
edit: neues Bild hochgeladen
Zuletzt geändert von clag am Fr, 20.02.2009 08:31, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Makro für einen Zeitstempel

Beitrag von Charly »

Hallo Clag!
Clag hat geschrieben: trotzdem würde mich Jetzt interessieren kann "now" nur ganze Sekunden oder wird das im dem Makro irgendwie beschnitte
"Now" arbeitet genauso wie "Jetzt". Beschnitten wird nur die Anzeige durch die Formatierung:

Code: Alles auswählen

oZell.NumberFormat = 30
Formatiere das Ergebnis in eine Zahl mit vielen Kommastellen um und du hast die gleiche Anzeige , wie bei "Jetzt".

Gruß
Charly
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makro für einen Zeitstempel

Beitrag von clag »

Hi Charly,

scheint bei mir ander zu sein, hatte Karolus ja auch schon gesagt,
deswege habe ich ja den Screenshot angehängt

guk mal da wo Makro vorsteht
da hab mit dem jeweiligen Makro einen Wert eingetragen lassen und das gleiche Format aber nach dem Komma gib es nur noch Nullen ?

und ich habe den Wert gleich im entsprechenden Format ausgeben lassen

Code: Alles auswählen

   oZell.value = now()
   oZell.NumberFormat = 109
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Makro für einen Zeitstempel

Beitrag von Charly »

Hallo Clag!

Bei mir zeigt es dasselbe an. Es gibt nur Zeitdifferenzen wegen der unterschiedlichen Ausführung.
Ich füge eine Beispieldatei an.
Vielleicht gibt es auch mit der Einstellung ein Problem. In den den Optionen gibt bei Calc berechnen eine Option, Genauigkeit wie angezeigt. Das hat möglicherweise einen Einfluss darauf.

Gruß
Charly
Dateianhänge
Zeitangabe.ods
(9.14 KiB) 80-mal heruntergeladen
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makro für einen Zeitstempel

Beitrag von clag »

Hallo Charly,

ich glaube "now" schummelt irgendwie :?
hier der Beweis ?
jetzt-funktion2.jpg
jetzt-funktion2.jpg (52.4 KiB) 1630 mal betrachtet
hier das Orginal
jetzt-test.ods
(12.74 KiB) 37-mal heruntergeladen
Zuletzt geändert von clag am Fr, 20.02.2009 09:08, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: Makro für einen Zeitstempel

Beitrag von Karolus »

Hallo
Bei mir (Linux , OOo3.01) wird alles auf volle Sekunden gerundet - ?
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Makro für einen Zeitstempel

Beitrag von Charly »

Hallo Clag!
Clag hat geschrieben: ich glaube "now" schummelt irgendwie :?
Warum "Now" schummelt weiß ich auch nicht. Ich habe aber jetzt in dem Makro statt der Basic-Funktion "NOW" die Calcfunktion "Now" eingebaut. Damit werden auch die 100-Sekunden angezeigt.

Gruß
Charly
Dateianhänge
jetzt-test_1.ods
(14.98 KiB) 72-mal heruntergeladen
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makro für einen Zeitstempel

Beitrag von clag »

Hallo Charly,

danke für die abänderung
so wie es jetzt funktioniert erscheint es mir logisch

merkwürdig ist es aber allemal das "now" <> "now" ist :?

(traue keiner Tabelle/Statistik die du nicht selbst gefälscht hast) oder wie war das :wink:
Antworten