Seite 1 von 1
Zeit und Datum im Forumlar in Base anzeigen
Verfasst: Di 26. Aug 2014, 16:12
von thomas.weiss
Hallo Leute,
ich möchte die aktuelle Zeit und das Datum auf meinen Formular in Base anzeigen lassen. Ich hatte vor längere Zeit schon mal die gleiche Frage gestellt. Aber der Code funktioniert nicht mehr
Sub Startup_form(oEvent)
oEvent.Source.DrawPage.Forms.getbyindex(0).getbyname("Datum").date = format(date(),"yyyymmdd")
end sub
Ich habe ein Datumsfeld auf dem Formular angelegt, aber kommt beim Starten des Formular immer folgende Fehlermeldung;
BASIC-Laufzeitfehler.
Objektvariable nicht belegt
Ich kann den Fehler nicht finden, funktioniert der Code unter Base 4.2.5.2 nicht mehr oder wo könnte der Fehler liegen?
Wer hat einen Tipp bei der Fehlersuche für mich?
Vielen Dank
Thomas
Re: Zeit und Datum im Forumlar in Base anzeigen
Verfasst: Mi 27. Aug 2014, 22:03
von RobertG
Hallo Thomas,
mit der Version 4.1.2 von LO hat es eine Änderung bei Datumswerten in der API gegeben. Vielleicht ist da das dabei, was auf Dein Problem passt. Schau einmal in dem aktuellen Handbuch (Version 4.3) auf S. 357 und auch sonst in dem Makrokapitel einfach einmal nach dem Suchbegriff "Datum".
Gruß
Robert
Re: Zeit und Datum im Forumlar in Base anzeigen
Verfasst: Fr 29. Aug 2014, 19:08
von thomas.weiss
Hallo Robert,
vielen Dank für die Hilfe, ich habe folgenden Code gefunden:
SUB Datum_aktuell
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oFeldAender AS OBJECT
DIM unoDate
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("MainForm")
oFeld = oForm.getByName("datDatum")
oFeldAender = oForm.getByName("datDatumAender")
unoDate = createUnoStruct("com.sun.star.util.Date")
unoDate.Year = Year(Date)
unoDate.Month = Month(Date)
unoDate.Day = Day(Date)
IF isEmpty(oFeld.Date) THEN
oFeld.BoundField.updateDate(unoDate)
END IF
oFeldAender.BoundField.updateDate(unoDate)
END SUB
Denn Code habe geändert in den folgende Zeilen entfernt habe, jetzt wird das aktuelle Datum im Formular angezeigt.
oFeldAender = oForm.getByName("datDatumAender")
IF isEmpty(oFeld.Date) THEN
END IF
oFeldAender.BoundField.updateDate(unoDate)
Einen kleinen Schönheitsfehler hat Sache noch, es kommt immer die Frage ob, die Änderungen gespeichert werden sollen. Wie kann man die Sicherheitsabfrage unterdrücken?
Vielen Dank für die Hilfestellung!
Gruß
Thomas
Re: Zeit und Datum im Forumlar in Base anzeigen
Verfasst: Fr 29. Aug 2014, 20:54
von RobertG
Hallo Thomas,
der Befehl schreibt das Datum in eine Datenbankzeile, macht aber keine Speicherung.
Wenn oForm das Formular ist, in dem das Datenfeld liegt:
IF oForm.rowUpdated THEN
oForm.updateRow()
ELSE
oForm.insertRow()
END IF
... ich hoffe einmal, dass das so passt.
Gruß
Robert
Re: Zeit und Datum im Forumlar in Base anzeigen
Verfasst: So 31. Aug 2014, 11:37
von thomas.weiss
Hallo Robert,
erst mal vielen Dank für die Hilfe, leider funktioniert die Sache noch nicht so ganz. Denn Code habe ich geändert, aber jetzt kommt eine Fehlermeldung:
oForm.insertRow()
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: Fehler in der Funktionsfolge.
SUB Datum_aktuell
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM unoDate
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Standard")
oFeld = oForm.getByName("Date")
unoDate = createUnoStruct("com.sun.star.util.Date")
unoDate.Year = Year(Date)
unoDate.Month = Month(Date)
unoDate.Day = Day(Date)
REM oFeld.BoundField.updateDate(unoDate)
IF oForm.rowUpdated THEN
oForm.updateRow()
ELSE
oForm.insertRow()
END IF
END SUB
Was mach ich falsch oder wo liegt der Fehler? Vielen Dank noch mal!
Gruß
Thomas
Re: Zeit und Datum im Forumlar in Base anzeigen
Verfasst: So 31. Aug 2014, 13:16
von F3K Total
Hallo,
warum eigentlich der Umweg über ein Makro?
Du kannst in jeder Abfrage oder Ansicht, das aktuelle Datum mit
oder
ermitteln
z.B
Code: Alles auswählen
SELECT DISTINCT CURRENT_DATE AS "HEUTE" FROM "INFORMATION_SCHEMA"."SYSTEM_SCHEMAS"
Wenn du diese Abfrage zur Datengrundlage eines strukturellen Formulares machst, kannst Du dem Datumsfeld die Spalte HEUTE zuordnen, anbei ein einfaches Beispiel, öffne das Formular Adressverwaltung.

- Current_Date.png (4.62 KiB) 4654 mal betrachtet
EDIT: mit
kommst du an das aktuelle Datum inklusive der aktuellen Zeit, die "Uhr" würde aber nicht laufen, sondern nur beim Aktualisieren des Formulares die richtige Zeit anzeigen.
Gruß R
Re: Zeit und Datum im Forumlar in Base anzeigen
Verfasst: So 31. Aug 2014, 16:14
von RobertG
Hallo Thomas,
thomas.weiss hat geschrieben:
Fehlermeldung:
oForm.insertRow()
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: Fehler in der Funktionsfolge.
REM oFeld.BoundField.updateDate(unoDate)
IF oForm.rowUpdated THEN
oForm.updateRow()
ELSE
oForm.insertRow()
END IF
END SUB
Wenn das tatsächlich Dein Code ist: Du musst doch erst etwas in das Feld schreiben, damit ein Insert oder Update funktionieren kann. Den entsprechenden Befehl hast Du als Kommentar mit REM versehen.
Wenn bei insertRow ein Fehler in der Funktionsfolge entsteht, dann handelt es sich nicht um einen neuen Datensatz, der noch nicht in der Tabelle steht. Es muss ein bestehender Datensatz geändert werden, also updateRow. Das greift hier aber nicht, weil eben nichts geändert wurde und damit oForm.rowUpdated ein FALSE wiedergibt.
Gruß
Robert
Re: Zeit und Datum im Forumlar in Base anzeigen
Verfasst: So 31. Aug 2014, 19:04
von thomas.weiss
Hallo,
vielen Dank für den Tipp, das funktioniert super und ist einfacher als die Sache mit dem Makro.
Vielen Dank nochmal.
Gruß
Thomas