🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Datum für Dienstbeginn automatisch erfassen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Di 30. Apr 2013, 16:31

Aktuell frage ich in einer Maske u.a. das Datum für den Dienstbeginn ab. Diese Maske wird während des Dienstes ausgefüllt, welcher bis ca. 1 Uhr geht. Automatisch könnte ich natürlich das aktuelle Datum speichern lassen, was Tipparbeit sparen würde, aber dadurch würde zwischen 0 und 1 Uhr das falsche Datum für den Dienstbeginn eingetragen werden. Gibt es da vlt eine Möglichkeit?

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von RobertG » Di 30. Apr 2013, 16:56

Hallo Sephan,

nimm doch einfach einen Timestamp. Der ist eine feste Größe und nicht von Widrigkeiten wie Sommer- und Winterzeit abhängig. Siehe dazu den Thread http://www.libreoffice-forum.de/viewtop ... 10&t=11937

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Di 30. Apr 2013, 17:09

Bin mir nicht sicher, ob du mich verstanden hast. Während des Dienstes müssen immer wieder Formulare ausgefüllt werden, welches ich gerade anlege. Dabei soll auch der Dienstbeginn in Datum und Wochentag angegeben werden. Wenn nun aber während des Dienstes z.B. um 0:30 Uhr ein Formular ausgefüllt wird, wird per Timestamp der Dienstbeginn auf den nächsten Tag gesetzt. Das wäre eher blöd.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von RobertG » Di 30. Apr 2013, 19:20

Hallo Sephan,

ich bin davon ausgegangen, dass für Dich der Unterschied zwischen Sommerzeit und Winterzeit ein Problem darstellt. Mit einem Zeitstempel speichere ich die Zeit als Zahlenkombination ab. Was für ein Datum und was für eine Zeit dann daraus gelesen wird hängt natürlich von der Zeitzone Deines PCs ab.

Wenn Du nicht den Unterschied "Sommerzeit - Winterzeit" meinst, dann erschließt sich mir nicht, warum z.B. der 1.5.2013 0:30 Uhr zu einem 30.4.2013 werden soll. Spätestens da müsste dann eine Überprüfung ergeben, dass jemand an Ort und Stelle gearbeitet hat, obwohl er noch gar nicht da war, sondern erst am 30.4.2013 um 18:30 aufgetaucht ist.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Di 30. Apr 2013, 21:25

Also, es gibt nur einen Dienst der fängt 21 Uhr an und endet ungefähr 1 Uhr. Es soll während dieser Zeit statistische Daten für Anrufer erhoben werden und in diesen wird auch immer der Dienstbeginn festgehalten, damit man die einzelnen Dienste auswerten kann.

Und so müsste das dann aussehen:

21:00 Uhr:
Real: 1.5.2013
Dienstbeginn: 1.5.2013

23:34 Uhr:
Real: 1.5.2013
Dienstbeginn: 1.5.2013

00:12 Uhr:
Real: 2.5.2013
Dienstbeginn: 1.5.2013

Nächster Dienst

21:00 Uhr:
Real 2.5.2013
Dienstbeginn: 2.5.2013

usw.

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von RobertG » Mi 1. Mai 2013, 08:27

Hallo Sephan,

sieh' Dir die Datei an, die ich in dem benannten Thread angehängt habe. Dort findest Du einen Makrocode für das aktuelle Datum. Hier jetzt ein Ausschnitt davon:

Code: Alles auswählen

	daJetzt = Now()
	daJetzt = DateAdd("h",-10,daJetzt)
Mit DateAdd kannst Du entsprechende Datumsverschiebungen erstellen. "h" steht für die Stunden, -10 rechnet von der Rechnerzeit 10 Stunden runter, produziert also zur Zeit noch den 30.4.2013.
Der Code allein für ein Datumsfeld kann natürlich gekürzt werden. Das anzusprechende Feld sollte dann auf jeden Fall das Datumsfeld sein. Bei Tabellenkontrollfeldern wird dies über den Index bestimmt, bei einfachen Formularfeldern kann dies auch über den Namen erfolgen. Hier also der Komplettcode nur für ein zurückgelegtes Datum:

Code: Alles auswählen

SUB Datumsstempel_neu
	DIM oDoc AS OBJECT
	DIM oDrawpage AS OBJECT
	DIM oForm AS OBJECT
	DIM oFeld AS OBJECT
	DIM unoDate AS NEW com.sun.star.util.Date
	Dim daJetzt AS DATE
	oDoc = thisComponent
	oDrawpage = oDoc.drawpage
	oForm = oDrawpage.forms.getByName("Formular") 
	oFeld=oForm.getByName("Tabellenkontrollfeld")	'Beispiel Tabellenkontrollfeld - daher nachher getByIndex. Sonst direkt das Datumsfeld oder Zeitfeld ansteuern.
	daJetzt = Now()
	daJetzt = DateAdd("h",-10,daJetzt)	'Legt das Datum um 10 Stunden in die Vergangenheit
	WITH unoDate
      .Day = Day(daJetzt)
      .Month = Month(daJetzt)
      .Year = Year(daJetzt)
    END WITH
	oFeld.getByIndex(2).BoundField.updateDate(unoDate)
END SUB
Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Do 16. Mai 2013, 19:26

So, jetzt komme ich endlich mal wieder dazu mich damit auseinander zu setzen. Leider blicke ich vieles an dieser Makrosprache nicht so recht und habe es nicht so zum Laufen gebracht, wie ich es wollte.

Aktuell habe ich es so eingebaut, dass es automatisch beim Öffnen des Formulars, welches jetzt auch automatisch beim Öffnen der Datei geöffnet wird, ausgeführt wird. Ich wollte so die ersten beiden Felder Datum und Wochentag (Wochentag wird noch nicht im Skript behandelt) automatisch ausfüllen lassen um zu sehen, ob es geht. Aber es tut sich nichts.

Am Ende soll das Ganze so aussehen, dass die beiden ersten Felder entweder komplett verschwinden und Datum und Wochentag automatisch mit dem Drücken von Speichern in die zugehörigen Felder in der Datenbank abgelegt werden. Oder, dass die ersten beiden Felder drin bleiben, automatisch befüllt werden, aber als inaktiv, also nicht schreibberechtigt, dargestellt werden. Normal wird der Hintergrund des Feldes dunkler dargestellt um das hervorzuheben.

Könntest du mir dabei vlt helfen?
Dateianhänge
Statistik.zip
(17.41 KiB) 213-mal heruntergeladen

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von RobertG » Do 16. Mai 2013, 21:31

Hallo Sephan,

zuerst einmal muss das Makro natürlich beim Öffnen des Formulars gestartet werden.
Also: Formular zum bearbeiten öffnen, Formular z.B. über den Navigator aufsuchen, rechter Mausklick, Eigenschaften des Formulars, Ereignisse: Beim Laden und wohl auch beim erneuten Laden.
Jetzt wird das Makro ausgeführt, tut aber noch nichts. Das liegt an dem auskommentierten Bezug zu dem Feld, in dem das Datum hineingeschrieben werden soll:
oFeld.BoundField.updateDate(unoDate)
oFeld ist das Datumsfeld. In dem Datumsfeld wird jetzt das Datum eingetragen, das 10h vor der aktuellen Zeit das aktuelle Datum war.

Vorsicht: In der aktuellen Fassung von LO (4.0.3.3) sowie allen Vorgängern der 4er-Reihe liegt noch ein Bug in der Ansprache von Makros vor, die beim Öffnen von Formularen ausgeführt werden sollen. Hier entweder noch ein kleines bisschen warten (ist wohl in der 4.0.4 gefixt) oder noch eine LO-Version aus der 3er-Reihe nutzen.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Sephan
Beiträge: 153
Registriert: Mi 26. Jan 2011, 13:16

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Do 16. Mai 2013, 23:45

Also ich habs jetzt mal soweit übernommen, aber ich bekomme sowohl in im 3er als auch im 4er LibreOffice die Fehlermeldung:
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: getByIndex.

Ich steh grad tierisch aufm Schlauch.

EDIT: Auch mit dem Base Handbuch kann ich nicht sehen wo da der Fehler sein könnte.
Dateianhänge
Statistik.zip
(17.77 KiB) 190-mal heruntergeladen

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von RobertG » Fr 17. Mai 2013, 19:32

Hallo Sephan,
Sephan hat geschrieben:Also ich habs jetzt mal soweit übernommen, aber ich bekomme sowohl in im 3er als auch im 4er LibreOffice die Fehlermeldung:
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: getByIndex.
Nein, so ganz hast Du das wohl nicht übernommen. Ich habe jetzt nicht den Anhang heruntergeladen, aber getByIndex lässt auf den folgenden Fehler schließen:
Bei Dir steht weiterhin
oFeld.getByIndex(2).BoundField.updateDate(unoDate)
weil sich der Code auf das zweite Feld eines Tabellenkontrollfeldes bezieht. Die erreichst Du nur über den Index. Zuerst sprichst Du das Formular an, dann das Feld im Formular und nur bei einem Tabellenkontrollfeld gibt es in dem Feld weitere "Felder", die eben per Index angesprochen werden.
Dein Feld ist kein Tabellenkontrollfeld, sondern direkt das Datumsfeld. da steht jetzt nichts mehr von getByIndex(2):
oFeld.BoundField.updateDate(unoDate)
Mit oFeld hast Du das Feld schon ermittelt.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten