🙏 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

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Fr 17. Mai 2013, 19:53

Nein, ich habs so nicht übernommen. Hab gestern und heute noch eine ganze Weile dran rumgewerkelt und so wie dus geschrieben hast, hab ich es inzwischen schon:

Code: Alles auswählen

   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("MainForm") 
   oFeld = oForm.getByName("datDatum") 
   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
   'msgbox unoDate.Month
   oFeld.BoundField.updateDate( unoDate )
   'oForm.updateRow()
Bekomme aber immer noch eine Fehlermeldung und zwar:
BASIC-Laufzeitfehler.
Objektvariable nicht belegt.

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, 20:07

Hallo Sephan,
Bekomme aber immer noch eine Fehlermeldung und zwar:
BASIC-Laufzeitfehler.
Objektvariable nicht belegt.
Genau das meinte ich passiert, wenn der Code zwar richtig ist, aber die Version eine LO 4.0.3 oder kleiner ist. Startet das Formular, so ist das Feld noch nicht verfügbar. Ich habe das gerade mit der kleinen Änderung anhang Deiner Anlage geprüft: LO 3.6.6 schreibt das Datum, LO 4.0.3.3 wirft die Fehlermeldung raus. Also entweder auf LO 4.0.4 warten oder eine Version der 3er-Linie nehmen, wenn Du ein Makro beim Laden des Formulars fehlerfrei ablaufen lassen willst.

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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von F3K Total » Fr 17. Mai 2013, 20:44

Hi Sephan,
ich werde aus Deinem Unterfangen nicht schlau. Du hast ein Datumsfeld, in das der Benutzer ein Datum eingeben muß (Eingabe erforderlich)
Dann willst Du automatisiert ein anderes Datum eintragen, falls die aktuelle Uhrzeit nach 0:00 Uhr liegt.
Das ist doch aber hinfällig, weil der Benutzer das Datum wieder ändern kann.
Dann hast Du da noch ein Extra-Listenfeld für den Wochentag, auch manuell auswählbar, obwohl ich Dir schon mal eine Variante gegeben habe, bei der der Wochentag anhand des Datums schlicht angezeigt wird.
Was willst Du mit dem Wochtagsfeld? Soll der User zu irgendeinem Datum ggf. einen falschen Wochentag auswählen können?
Ich schlage vor, dass du das Datums-, Wochtags- und die Zeitfelder einfach nur zu Anzeige (Eigenschaft: Nur Lesen) nimmst und zwei Schaltflächen, mit "neuer Anruf" und "Telefonat beendet", an zwei Makros bindest.
Das erste, "Neuer Anruf" setzt das Datum und die Uhrzeit bei Beginn, der Wochntag wird angezeigt, auch mit dem gestrigen Datum falls es vor 7:00 Uhr morgens ist.
Das zweite schreibt die Zeit bei Beendigung des Gespräches mit.
Fertig.
Anbei habe ich das mal umgesetzt, die Makros (abgewandelt von RobertG):

Code: Alles auswählen

SUB Datumsstempel_setzen
   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 unoTime AS NEW com.sun.star.util.Time
   Dim daJetzt AS DATE
   Dim ZeitJetzt
   oDoc = thisComponent
   oDrawpage = oDoc.drawpage
   oForm = oDrawpage.forms.getByName("MainForm") 
   odatFeld = oForm.getByName("datDatum")   'Beispiel datDatum - daher nachher getByIndex. Sonst direkt das Datumsfeld oder Zeitfeld ansteuern.
   oZeitfeld = oForm.getByName("timUhrzeit-Anfang")
   daJetzt = Now()
   ZeitJetzt = Time()
   WITH unoTime
      .Hours = Hour(ZeitJetzt)
      .Minutes = Minute(ZeitJetzt)
      .seconds = Second(ZeitJetzt)
    END WITH
    oZeitfeld.BoundField.updateTime(unotime)
if hour(daJetzt)< 7 then daJetzt = DateAdd("h",-7 ,daJetzt)
   WITH unoDate
      .Day = Day(daJetzt)
      .Month = Month(daJetzt)
      .Year = Year(daJetzt)
    END WITH
    odatFeld.BoundField.updateDate(unoDate)
End Sub

SUB Zeitstempel_Ende_setzen
   DIM oDoc AS OBJECT
   DIM oDrawpage AS OBJECT
   DIM oForm AS OBJECT
   DIM oFeld AS OBJECT
   DIM unoTime AS NEW com.sun.star.util.Time
   Dim ZeitJetzt
   oDoc = thisComponent
   oDrawpage = oDoc.drawpage
   oForm = oDrawpage.forms.getByName("MainForm") 
   oZeitfeld = oForm.getByName("timUhrzeit-Ende")
   ZeitJetzt = Time()
   WITH unoTime
      .Hours = Hour(ZeitJetzt)
      .Minutes = Minute(ZeitJetzt)
      .seconds = Second(ZeitJetzt)
    END WITH
    oZeitfeld.BoundField.updateTime(unotime)
End Sub
Und die Datei im Anhang.
Gruß R
Dateianhänge
Statistik_neu.zip
(18.1 KiB) 265-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

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

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Fr 17. Mai 2013, 21:11

Oh man, es hatte also doch schon funktioniert. Und dabei hatte ich es gestern immer mal wieder mit der 3er Version versucht. Scheinbar hab ich aber die letzte Änderung dann nimmer getestet :evil:

Nein, mein Unterfangen scheint nur unlogisch zu sein ;) , weil ich anfangs, aus fehlender Erfahrung mit Makros, das Feld noch manuell ausfüllen lassen wollte. Später hab ichs dann in das Feld eintragen lassen wollen, um zu testen obs geht.

Eigentlicher Plan war es, es einfach ohne es im Formular zu haben, beim Speichern mit in die Datenbank eintragen zu lassen. Deine jetzige Lösung find ich ziemlich gut, und löst auch das Problem mit dem Makro unter LO4. Allerdings würde ich dem Benutzer noch die Möglichkeit geben die Uhrzeiten auch manuell noch eintragen zu lassen, falls er vergisst auf die Knöpfe zu drücken. So meine spontane Überlegung dazu.

Das mir schonmal eine Lösung für den Wochentag gegeben hast, scheint bei mir untergegangen zu sein. Kanns auch grad nicht finden. Sorry. Eigentlich ist die

Auf jeden Fall schon wieder mal mega arg großen Dank für deine Hilfe. Ohne dich wär ich da nicht weitergekommen.

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

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Fr 17. Mai 2013, 22:24

Was ich gerade gar nicht verstehe ist, wie du den Wochentag setzt, das kann ich in deinem Makro gar nicht finden.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von F3K Total » Fr 17. Mai 2013, 22:29

Der Wochentag wird nicht gesetzt, in dem Feld wird das Datum, als Wochentag formatiert, angezeigt. Jedem Datum ist ein Wochentag eineindeutig zugeordnet!

... und hier wars drin ...
Windows 11: AOO, LO Linux Mint: AOO, LO

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

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Fr 17. Mai 2013, 22:38

Ah, weil du bei Datenfeld Datum statt Wochentag gesetzt hast. Aber dann trägt er es ja nimmer an die richtige stelle in der Datenbank ein. An der Stelle stellt sich die Frage, ob es überhaupt sinnvoll ist neben Datum den Wochentag zu speichern. Dieser wird auf jedenfall gebraucht, um Verteilungen über die Woche aufzeigen zu können. Er wird aber auch nur extra gespeichert, weil ich nicht weiß, ob in späteren Auswertungen der Wochentag einfach wieder aus dem Datum extrahiert werden kann. Und bevor das Probleme macht, wurde er einfach mit in die Datenbank übernommen. Wir haben ja kein Problem mit Speicherplatz ;)

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

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Fr 17. Mai 2013, 22:50

Habe jetzt mal noch folgende Änderung gemacht damit der Wochentag ein eigenes Feld ist:

Code: Alles auswählen

SUB Datumsstempel_setzen
   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 unoTime AS NEW com.sun.star.util.Time
   Dim daJetzt AS DATE
   Dim ZeitJetzt
   oDoc = thisComponent
   oDrawpage = oDoc.drawpage
   oForm = oDrawpage.forms.getByName("MainForm") 
   odatFeld = oForm.getByName("datDatum")
   odatWochentag = oForm.getByName("datWochentag")
   oZeitfeld = oForm.getByName("timUhrzeit-Anfang")
   daJetzt = Now()
   ZeitJetzt = Time()
   WITH unoTime
      .Hours = Hour(ZeitJetzt)
      .Minutes = Minute(ZeitJetzt)
      .seconds = Second(ZeitJetzt)
    END WITH
    oZeitfeld.BoundField.updateTime(unotime)
if hour(daJetzt)< 7 then daJetzt = DateAdd("h",-7 ,daJetzt)
   WITH unoDate
      .Day = Day(daJetzt)
      .Month = Month(daJetzt)
      .Year = Year(daJetzt)
    END WITH
    odatFeld.BoundField.updateDate(unoDate)
    odatWochentag.BoundField.updateDate(unoDate)
End Sub
Allerdings zeigt er mir in dem Feld jetzt Mittwoch an. Heute müsste aber eigentlich Freitag sein :)

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von F3K Total » Fr 17. Mai 2013, 23:00

Mannomann
Sephan hat geschrieben:damit der Wochentag ein eigenes Feld ist:
Warum?
Wir wäre es, wenn du meine Beispieldatei mal herunterladen würdest? Da funzt es.
Es ist unnötig, dass der Wochentag ein eigenes Feld ist, der 01.08.2022 ist ein Montag, ob mit Zusatzspalte oder ohne und sicher, er kann immer anhand des Datums ermittelt werden.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

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

Re: Datum für Dienstbeginn automatisch erfassen

Beitrag von Sephan » Fr 17. Mai 2013, 23:19

Doch doch, hab deine Beispieldatei natürlich geladen und es mir abgeschaut. Aber es speichert so halt nicht in die Datenbank in der Spalte Wochentag. So macht auch das Feld Wochentag keinen Sinn. Das Feld ist ja nur da, um es dann in die Datenbank zu speichern. Ursprünglich um es manuell einzugeben. Jetzt sieht mans halt wenigstens noch :)

Dass das mit dem Wochentag auch nachträglich zu ermitteln ist, ist auch gut zu wissen. Im Moment möchte ichs sicherheitshalber noch dazu speichern. Falls es in der Auswertung, warum auch immer, nicht automatisch ermittelt werden kann. Ich hätts jedenfalls gerne erstmal mit drin.

Sorry, dass ich so schwierig bin ;)


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