Seite 1 von 1

Fehler in Makro Datum setzen

Verfasst: Mi 4. Sep 2024, 16:28
von Helles58
Hallo zusammen,

ich hänge gerade an einem kleinen Makro fest und krieg es nicht zum laufen.
Wenn das Feld leer ist wird die IF-Then Bedingung nicht ausgeführt.
Ohne die IF/Then Bedingung funktioniert es, das Datum wird geschrieben.
Es soll dabei nur verhindert werden dass ein eingetragenes Datum überschrieben wird.
Hat da jemand eine Idee wo das hängt?
Bin für jeden Tip dankbar.


Sub Datum_Notizen_Firma
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("MainForm")
oSubForm = oForm.getByName("SubForm")
oDatum = oSubForm.getByName("Datum")

print oDatum.getCurrentValue()'Testfunktion
IF ISEMPTY (oDatum.getCurrentValue()) THEN
print ("Bedingung erfüllt")'Testfunktion
oDatum.BoundField.updateDate( CDateToUnoDate(NOW()) )
oSubForm.updateRow() ' Weitergabe der Änderung an die Datenbank
end if
print ("Verzweigungsende")'Testfunktion

End Sub

Re: Fehler in Makro Datum setzen

Verfasst: Mi 4. Sep 2024, 18:19
von RobertG
Versuche einmal für das Datumsfeld
IsEmpty(oField.CurrentValue())
das ist beim Datumsfeld nicht so einfach, weil das Datum selbst in einem Struct gespeichert wird (oField.Date.Day; oField.Date.Month usw.)

Den aktuellen Wert bekommst Du über CurrentValue auch nicht als String raus. Weil darunter eben die Eigenschaften "Date.Day", "Date.Month" usw. gespeichert werden.

Re: Fehler in Makro Datum setzen

Verfasst: Do 5. Sep 2024, 09:01
von Helles58
Hallo Robert,

danke für die Antwort.
Mit CurrentValue geht´s auch nicht.
Eigentlich will ich ja nur sehen ob überhaupt was in dem Feld steht.
Wenn es leer ist, dann Datum eintragen wenn schon ein Wert drin ist
dann nicht. Da wäre doch das Format erstmal egal, oder?

Re: Fehler in Makro Datum setzen

Verfasst: Do 5. Sep 2024, 09:07
von Helles58
Hallo Robert,

noch ein Nachtrag.
In einem anderen Makro funktioniert es.
Da wird aber eine Tabellenkontrollfeld verwendet.


Sub Datum_Notizen_Kontakt
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("MainForm")
oSubForm2 = oForm.getByName("SubForm2")
oSubForm4 = oForm.SubForm2.getByName("SubForm4")
oDatum=oSubForm4.SubForm4_Grid."Datum"
oStatus=oSubForm4.SubForm4_Grid."Mail-gesendet"
If Isempty (oDatum.GetCurrentValue()) Then
oDatum.BoundField.updateDate( CDateToUnoDate(NOW()) )
oForm.updateRow() ' Weitergabe der Änderung an die Datenbank
end if
End Sub

Re: Fehler in Makro Datum setzen

Verfasst: Do 5. Sep 2024, 11:01
von RobertG
Da scheint mir aber der Fehler an anderer Stelle zu sitzen. Bei mir funktioniert die Nachfrage nach IsEmty(CurrentValue()) auch bei einem Datumsfeld, das ganz normal in einem Formular liegt.

print oDatum.getCurrentValue()'Testfunktion
kann nicht funktionieren, weil das Ganze entweder leer ist oder ein Struct.
Ich hoffe, dass Du das raus genommen hast, bevor Du weiter getestet hast.

Ich nutze für solche Tests hier immer xray.

Re: Fehler in Makro Datum setzen

Verfasst: Fr 6. Sep 2024, 15:03
von Helles58
Hallo Robert,

ich habe noch keinen funktionierenden Link für XRAY gefunden.
Auf der Seite geht der Download Button nicht, hab ´s mit anderem Browser probiert
auch Fehlanzeige und der Link von Craig geht in´s Leere - Seiten-Ladefehler.
Eine Idee dazu?

Re: Fehler in Makro Datum setzen

Verfasst: Fr 6. Sep 2024, 16:37
von RobertG
Ich habe das gerade auch auf den alten Links versucht - erfolglos. Da ich hier die Version 60 davon habe habe ich die einfach hoch geladen:
https://www.familiegrosskopf.de/robert/ ... l60_de.odt
… und an diesen Post angehängt.

Re: Fehler in Makro Datum setzen

Verfasst: Fr 6. Sep 2024, 19:47
von Helles58
Danke Robert.
Ich hoffe ich komme damit zurecht.
Frohes Wochenende

Gruß Helmut

Re: Fehler in Makro Datum setzen

Verfasst: Di 10. Sep 2024, 12:29
von HeiDieLX2
Hallo Helmut,
IF ISEMPTY (oDatum.getCurrentValue()) THEN
hast du mal mit

Code: Alles auswählen

isnull
getestet. Neue leere Datenbankfelder geben in der Regel null zurück wenn diese noch nicht angefasst wurden.

Code: Alles auswählen

empty
wirkt meines wissens erst wenn Whitespaces drinn stehen, oder nach vorherigen Inhalten nichts mehr.
In Postgresql kann mit

Code: Alles auswählen

update <tabelle> set <spalte> = DEFAULT Where ...;
die Spalte bzw. das Feld wieder zu null gesetzt werden.

HTH

GELÖST - Fehler in Makro Datum setzen

Verfasst: Di 1. Okt 2024, 10:19
von Helles58
Hallo zusammen,

hab jetzt durch probieren eine Lösung gefunden:

Sub Datum_Notizen_Firma

DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("MainForm")
oSubForm = oForm.getByName("SubForm")
oDatum = oSubForm.getByName("Datum")

IF oDatum.getCurrentValue() = "" Then
oDatum.BoundField.updateDate( CDateToUnoDate(NOW()) )
Exit Sub
End if
oSubForm.updateRow()
End Sub

Alle anderen Bedingungen wie Isnull oder Isempty gingen nicht.
Jetzt wird nur in ein leeres Feld das Datum geschrieben, wenn schon was eingetragen ist nicht.

Gruß Helles58