❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ 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. 🤗

Datumsfeld (date picker) mit aktuellem Datum

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
cynep8
Beiträge: 26
Registriert: Mi 15. Mär 2017, 21:06

Datumsfeld (date picker) mit aktuellem Datum

Beitrag von cynep8 » Mi 15. Mär 2017, 21:32

Hallo,

ich schreibe gerade eine Rechnungsvorlage.
Nachdem ich mir mühsam im Netz viele intressante und nützliche Funktionen zusammen gesucht habe, weiß ich jetzt nicht mehr weiter und hoffe ihr könnt mir helfen.

In meiner Rechnungsvorlage habe ich das Steuerelement Datumsfeld.
Über ein im netz gefundes Macro habe ich es auch zum laufen bekommen.

Code: Alles auswählen

REM  *****  BASIC  *****

Sub Main (Event as objec)
	datum=Event.Source.Model.Text
	if isdate(datum) then thiscomponent.currentcontroller.activesheet.getcellbyposition(2,13).value=cdate(datum)
End Sub
Wenn ich das Dokument nun als Vorlage speicher und an irgend einem anderen Tag öffne, habe ich immer das Orginal Datum. Ich hätte aber gerne das aktuelle Datum. Ich kenne mich mit Basic garnicht aus und wäre über jede Hilfe Dankbar. Gerne könnt Ihr mir auch links geben wo man Basic in einfachen Schritten lernen kann

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Datumsfeld (date picker) mit aktuellem Datum

Beitrag von mikele » Do 16. Mär 2017, 11:55

Hallo,
standardmäßig behält das Datumsfeld den zuletzt eingestellten Wert. Um jetzt beim Öffnen der Datei das aktuelle Datum zu haben musst du:
1) ein Makro schreiben, dass den Datumswert setzt

Code: Alles auswählen

Sub Main
	'Zugriff auf das Dokument
	odoc=thiscomponent
	'Zugriff auf die im Formular "Formular" zusammengefassten Steuerelemente des 1. Tabellenblattes; Zählung beginnt bei 0
	oform=odoc.sheets(0).drawpage.forms.getbyname("Formular")
	'Zugriff auf das Steuerelement
	ocontrol=oform.getbyname("Datumsfeld 1")
	'Setzen des aktuellen Datums
	ocontrol.date=CDateToUnoDate(date())
End Sub
2) diese Makro dem Ereignis "Datei öffnen" zuweisen (->Extras->Anpassen->Ereignisse)
Dateianhänge
makro_datumsfeld.ods
(9.17 KiB) 247-mal heruntergeladen
Gruß,
mikele

cynep8
Beiträge: 26
Registriert: Mi 15. Mär 2017, 21:06

Re: Datumsfeld (date picker) mit aktuellem Datum

Beitrag von cynep8 » Fr 17. Mär 2017, 18:03

Hi Mikele,

Danke schon mal für deine schnelle Antwort.
Für ein oder zwei Datumsfelder habe ich es zum laufen bekommen.
Alle anderen funktionieren nicht oder wechseln sich plötzlich mit den ersten beiden ab die funktionierten.
Ich glaube es liegt an irgendeiner Namesvergebung. Habe aber bisher kein System dahinter entdecken können.
Der normale Kontrollfeld Name hatte zumindest keine änderung bewirkt.

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Datumsfeld (date picker) mit aktuellem Datum

Beitrag von mikele » Fr 17. Mär 2017, 18:14

Hallo,
wie heißen denn deine Datumsfelder?
Kannst du eine Beispieldatei zur Verfügung stellen?
Gruß,
mikele

cynep8
Beiträge: 26
Registriert: Mi 15. Mär 2017, 21:06

Re: Datumsfeld (date picker) mit aktuellem Datum

Beitrag von cynep8 » Fr 17. Mär 2017, 19:17

Hier meine bereinigte Datei. Im Moment ändern sich 3 von 8 Datumsfeldern
Dateianhänge
Rechnung.ods
(25.11 KiB) 216-mal heruntergeladen

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Datumsfeld (date picker) mit aktuellem Datum

Beitrag von mikele » Sa 18. Mär 2017, 12:58

Hallo,
der wesentliche Knackpunkt ist, dass du auf dem Tabellenblatt 20 Datumsfelder hast (siehe Formular-Navigator), von denen z. B. 7 den Namen "Datumsfeld 1" haben. Intern ist das kein Problem, weil jedes Datumsfeld einen eindeutige Index hat, aber wenn das Datumsfeld per Name angesprochen wird, wird bei "Datumsfeld 1" halt nur eines (wahrscheinlich das erste) angesprochen.
Lösung: Benenne jedes Datumsfeld eindeutig.
Noch ein paar Hinweise:
1) Du brauchst nicht für jedes Makro ein extra Modul.
2) Wenn im Datumsfeld in der Eigenschaft "Zusatzinformation" die Zelle schreibst, in die das Datum übertragen werden soll, reicht ein Makro für alle Datumsfelder:

Code: Alles auswählen

Sub uebernahme (oevent as object)
	bereich=oevent.source.model.tag
	datum=cdatefromunodate(oevent.source.model.date)
	thiscomponent.currentcontroller.activesheet.getcellrangebyname(bereich).value=datum
End Sub
Ich habe das für das Datumsfeld bei Anreisetag 1 mal gemacht.
3) Um beim Start mehrere Datumsfelder auf das aktuelle Datum zu setzten lässt sich das Makro erheblich vereinfachen.
Das folgende Makro setzt alle Datumsfelder, deren Name mit "Datumsfeld" beginnt:

Code: Alles auswählen

Sub start
	'Zugriff auf das Dokument
	odoc=thiscomponent
	'Zugriff auf die im Formular "Formular" zusammengefassten Steuerelemente des 1. Tabellenblattes; Zählung beginnt bei 0
	oform=odoc.sheets(0).drawpage.forms.getbyname("Formular")
	for i=0 to oform.count-1
	'Zugriff auf das Steuerelement
		ocontrol=oform.getbyindex(i)
		if left(ocontrol.name,10)="Datumsfeld" then
			'Setzen des aktuellen Datums
			ocontrol.date=CDateToUnoDate(date())
		end if
	next
end sub
Dateianhänge
Rechnung.ods
(25.76 KiB) 204-mal heruntergeladen
Gruß,
mikele

cynep8
Beiträge: 26
Registriert: Mi 15. Mär 2017, 21:06

Re: Datumsfeld (date picker) mit aktuellem Datum

Beitrag von cynep8 » Sa 18. Mär 2017, 14:35

Tausend Dank für deine Hilfe!!!
Hat alles Super geklappt. Und den Formular Navigator kannte ich noch nicht, wieder was gelernt. :D

Mal noch eine andere Frage:
Ich hätte ganze gerne noch eine paar bestimmte Funktionen bei der Betätigung eines Buttons
2x Drucken (1x Farbe, 1x Schwarz/weiß)
Werte sollen in ein anderes Dokument geschrieben werden(für eine Bilanz).
Und eine fortlaufende Rechnungsnummer (Bei Dokument Öffnung aus datei lesen, am Ende eine neue hinzufügen)

Was davon wäre möglich?

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Datumsfeld (date picker) mit aktuellem Datum

Beitrag von mikele » Sa 18. Mär 2017, 14:40

Hallo,
Was davon wäre möglich?
Alles.
Gruß,
mikele

cynep8
Beiträge: 26
Registriert: Mi 15. Mär 2017, 21:06

Re: Datumsfeld (date picker) mit aktuellem Datum

Beitrag von cynep8 » Mo 20. Mär 2017, 16:38

Cool,
hast du für mich nen Link, Seite oder nen Videotraining. Wo ich das lernen könnte damit ich dich nicht die ganz Zeit nerven muss?

Und noch eine andere Sache:
Wenn ich das Dokument öffne stellt er in allen Steuerelementen das richtige Datum ein, schreibt es aber nicht in die ausgewählte zelle.
Erst wenn ein neues Datum ausgewählt wird schreibt das Steuerelement es in die Zelle. Das ist bei dem Anreise Feld ziehmlich doof, weil man erst ein anderes Datum auswählen muss und dann das richtige.

Ich hoffe du kannst mir nocheinmal helfen.
Schon mal vielen Dank im voraus!

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Datumsfeld (date picker) mit aktuellem Datum

Beitrag von mikele » Mo 20. Mär 2017, 21:01

Hallo,
mit einem Training wird es nicht getan sein. Hier http://de.openoffice.info/viewtopic.php?f=18&t=1553 findest du ein Fülle von verschiedenen Informationsquellen.
Zur Beantwortung deiner Frage müssen die beiden Codeschnipsel miteinander kombiniert werden.

Code: Alles auswählen

Sub start
   'Zugriff auf das Dokument
   odoc=thiscomponent
   'Zugriff auf das 1. Tabellenblatt; Zählung beginnt bei 0
   otab=odoc.sheets(0)
   'Zugriff auf die im Formular "Formular" zusammengefassten Steuerelemente des 
   oform=otab.drawpage.forms.getbyname("Formular")
   for i=0 to oform.count-1
   'Zugriff auf das Steuerelement
      ocontrol=oform.getbyindex(i)
      if left(ocontrol.name,10)="Datumsfeld" then
         'Setzen des aktuellen Datums
         ocontrol.date=CDateToUnoDate(date())
         bereich=ocontrol.tag
         otab.getcellrangebyname(bereich).value=date()
      end if
   next
end sub
Gruß,
mikele


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