BITTE helfen Sie uns das LibreOffice Forum zu erhalten!
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.


❤️ DANKE >><< DANKE ❤️

Herzlichen Dank an Alle, die bisher gespendet haben! Spenden heute: 0 Euro
>DANK IHRER SPENDEN -> KEINE WERBUNG FÜR REGISTRIERTE LIBREOFFICE-FORUM-USER!<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗


Fehler in Makro Datum setzen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Helles58
Beiträge: 106
Registriert: Mo 17. Jul 2017, 19:51

Fehler in Makro Datum setzen

Beitrag von Helles58 » Mi 4. Sep 2024, 16:28

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

RobertG
Beiträge: 2814
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehler in Makro Datum setzen

Beitrag von RobertG » Mi 4. Sep 2024, 18:19

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.
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

Helles58
Beiträge: 106
Registriert: Mo 17. Jul 2017, 19:51

Re: Fehler in Makro Datum setzen

Beitrag von Helles58 » Do 5. Sep 2024, 09:01

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?

Helles58
Beiträge: 106
Registriert: Mo 17. Jul 2017, 19:51

Re: Fehler in Makro Datum setzen

Beitrag von Helles58 » Do 5. Sep 2024, 09:07

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

RobertG
Beiträge: 2814
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehler in Makro Datum setzen

Beitrag von RobertG » Do 5. Sep 2024, 11:01

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.
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

Helles58
Beiträge: 106
Registriert: Mo 17. Jul 2017, 19:51

Re: Fehler in Makro Datum setzen

Beitrag von Helles58 » Fr 6. Sep 2024, 15:03

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?

RobertG
Beiträge: 2814
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehler in Makro Datum setzen

Beitrag von RobertG » Fr 6. Sep 2024, 16:37

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.
Dateianhänge
XrayTool60_de.odt
Xray 6.0 zur Objektanalyse von Makros
(819.83 KiB) 72-mal heruntergeladen
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

Helles58
Beiträge: 106
Registriert: Mo 17. Jul 2017, 19:51

Re: Fehler in Makro Datum setzen

Beitrag von Helles58 » Fr 6. Sep 2024, 19:47

Danke Robert.
Ich hoffe ich komme damit zurecht.
Frohes Wochenende

Gruß Helmut

Benutzeravatar
HeiDieLX2
! Supporter - Spende !
Beiträge: 41
Registriert: Mo 9. Sep 2019, 12:50

Re: Fehler in Makro Datum setzen

Beitrag von HeiDieLX2 » Di 10. Sep 2024, 12:29

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
MfG
HeiDieLx vom Bienwald

Tumbleweed
postgreSQL 16
LibreOffice 24.2.5.2

Helles58
Beiträge: 106
Registriert: Mo 17. Jul 2017, 19:51

GELÖST - Fehler in Makro Datum setzen

Beitrag von Helles58 » Di 1. Okt 2024, 10:19

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

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.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten