Systemzeit automatisch in (Zeit)Formularfeld eintragen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benutzeravatar
hinki
**
Beiträge: 27
Registriert: So, 31.10.2010 06:45

Systemzeit automatisch in (Zeit)Formularfeld eintragen

Beitrag von hinki »

Hallo

...und da kommt auch gleich die nächste Frage - da kann ich unermüdlich sein. :wink:

Vielleicht helfen meine Fragen ja auch anderen Lesern? :)

Ich versuche in einem Formular ein Zeitfeld (HH:MM) automatisch mit der aktuellen Zeit zu füllen - und muss feststellen, dass ich mit meinen Fähigkeiten bereits jetzt am Ende bin.

Die Situation:
In meinem Formular befindet sich ein Zeitfeld zur Erfassung des Auftragsbeginns. Dieses Feld soll nach meiner Vorstellung bei Fokuserhalt automatisch mit der Systemzeit gefüllt werden, um es dem Anwender so einfach wie möglich zu machen.
Dieser Vorgabewert soll durch das aktive Drehfeld auch editierbar sein.

Lösungsversuch:
Ich habe ein Makro zusammengestellt, welches das Feld mit dem richtigen Wert füllt. Jedoch wird der angezeigte Wert trotz - commit - nicht in die Tabelle übernommen.
Sub Ticket_Beginn_Uhrzeit

T_Beginn_Zeit = Time
'Uhrzeit eintragen
oDoc = ThisComponent
oForm = oDoc.drawpage.forms.getbyindex(0)'Drawpage des Formulars
sField_KD = "timTicket_Uhrzeit_Beginn" 'Feldname für Uhrzeit Ticket Beginn
'oForm.getByName(sField_KD).time = T_Beginn_Zeit 'berechnete Uhrzeit als time eintragen - führt zu Fehler
oForm.getByName(sField_KD).text = T_Beginn_Zeit 'berechnete Uhrzeit als Text eintragen
'oForm.getByName(sField_KD).value = T_Beginn_Zeit 'berechnete Uhrzeit als Integer eintragen - führt zu Fehler
'oForm.getByName(sField_KD).date = T_Beginn_Zeit 'berechnete Uhrzeit als date eintragen - führt zu Fehler
oForm.getByName(sField_KD).commit(true)'Ticket Uhrzeit Beginn festschreiben

End Sub
Frage:
Was mache ich falsch?
Gibt es eine Möglichkeit ein Zeitfeld auf anderem Weg im Formular mit der aktuellen Systemzeit als Vorgabewert einzurichten?


Vielen Dank im Voraus

Uli
NeoOffice 3.1.2 Patch 2 auf MacBookPro (OS 10.6.6)

If you make people think they're thinking, they'll love you. But if you really make them think, they'll hate you.
Harold Kroto
M.Z
*
Beiträge: 17
Registriert: Mo, 11.10.2010 11:15

Re: Systemzeit automatisch in (Zeit)Formularfeld eintragen

Beitrag von M.Z »

Also ich hatte das gleiche Problem mit einem Datumsfeld, dazu ist meine Lösung:

Code: Alles auswählen

REM Datumsfeld beschriften
dim a as string
a = Date()
oDoc = ThisComponent
oDocView = oDoc.getCurrentController()
oForm = oDoc.drawpage.forms(0)
oFeld = oForm.getByName("datDatum")
oDocView.getControl(oFeld).setFocus()
oDocView.getControl(oFeld).text = cDate (a)
oDocView.getControl(oFeld).date = CDateToISO( Date ) 
ofeld.commit()
Vielleicht hilft dir das weiter.
Benutzeravatar
hinki
**
Beiträge: 27
Registriert: So, 31.10.2010 06:45

Re: Systemzeit automatisch in (Zeit)Formularfeld eintragen

Beitrag von hinki »

Hallo M.Z

vielen Dank für Deine Mühe und die superschnelle Antwort. Ich bin erst jetzt dazu gekommen Deine Lösung zu testen.

Es tut mir Leid, aber leider funktioniert es nicht. :(

In meinem Formular wird immer 7:46 Uhr eingetragen (statt der tatsächlichen Zeit).
Das Makro bleibt dann in der Zeile ---> oDocView.getControl(oFeld).date = CDateToISO( Date ) <-----
stehen. Die dazugehörige Meldung lautet "Objekt oder Methode unbekannt bzw. nicht gefunden."

Ich hatte bei meinen Versuchen "oForm.getByName(sField_KD).date " mit dem gleichen Ergebnis probiert.

In meinem ursprünglichen Code fülle ich das Feld mit "oForm.getByName(sField_KD).text", was im Formular prima aussieht und richtig gut funktioniert - nur wird es leider nicht gespeichert.

Weißt Du, ob es für den Commit bei Zeitfeldern besondere Bedingungen gibt?

Viele Grüße

Uli
NeoOffice 3.1.2 Patch 2 auf MacBookPro (OS 10.6.6)

If you make people think they're thinking, they'll love you. But if you really make them think, they'll hate you.
Harold Kroto
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Systemzeit automatisch in (Zeit)Formularfeld eintragen

Beitrag von DPunch »

Aloha

Folgende Prozedur dem Ereignis "Bei Fokuserhalt" zuweisen, dann sollte das Gewünschte passieren

Code: Alles auswählen

Sub SetTimeFieldToCurrentTime(oEvt)
	Dim myTime as new com.sun.star.util.Time
	CurrentTime = NOW
	myTime.Minutes = MINUTE(CurrentTime)
	myTime.Hours = HOUR(CurrentTime)
	oEvt.Source.Model.BoundField.updateTime(myTime)
End Sub
Benutzeravatar
hinki
**
Beiträge: 27
Registriert: So, 31.10.2010 06:45

Re: Systemzeit automatisch in (Zeit)Formularfeld eintragen

Beitrag von hinki »

Hallo


...und wieder einmal bin ich hoch zufrieden :D :D

Es funktioniert - yeah

Recht herzlichen Dank an alle Beteiligten M.Z und DPunch - ganz,ganz toll!

Jetzt kann ich mich meinem nächsten "Projekt" widmen. Als nächstes werde ich versuchen die Daten vom Rest zu trennen. Also eine DB mit den Tabellen und eine weitere mit dem Rest (Makros, Abfragen, Formulare und Berichte). Ich bin gespannt, ob das so funktioniert, wie ich es haben möchte.

Noch einmal Danke schön an Euch beide.

Viele Grüße

Uli
NeoOffice 3.1.2 Patch 2 auf MacBookPro (OS 10.6.6)

If you make people think they're thinking, they'll love you. But if you really make them think, they'll hate you.
Harold Kroto
Antworten