Datum nach X Werktagen

Das Textverarbeitungsprogramm

Moderator: Moderatoren

JackC
Beiträge: 4
Registriert: Fr, 21.12.2012 21:31

Datum nach X Werktagen

Beitrag von JackC »

Hallo,

ich bräuchte für das automatische Erstellen von Rechnungsanweisungen eine
Möglichkeit in Writer ein Datum nach einer bestimmten Anzahl von Werktagen
auszurechnen. In Calc gibt's dazu die Funktion ARBEITSTAG, die genau das macht.
Scheint's aber in Writer nicht zu geben, oder mache ich da nur irgendwas fasch?
Am liebsten wär's mir wenn ich gleich mit dem Datum das ich vorher in der Textvorlage
via Feldbefehl Eingabefeld plaziert habe weiterarbeiten könnte. Ein feste Formel, die
ich entsprechend ändere oder ein Makro würd's wohl auch tun. Irgendwelche Tipps?

Danke schonmal.
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Datum nach X Werktagen

Beitrag von F3K Total »

Hallo JackC,
es gibt eine Möglichkeit per Makro auf die Calc-Funktionen zuzugreifen, in deinem Fall sähe das z.B so aus:

Code: Alles auswählen

Sub S_Arbeitstag
  dim nStartdate as long
  dim nDays as long
  nStartdate = datevalue("23.12.2012")
  ndays = 7
   oFunctionAccess = createUnoService("com.sun.star.sheet.FunctionAccess")
   Enddate = oFunctionAccess.callFunction("ARBEITSTAG",(array(nStartdate,nDays,0)))
   msgbox format(Enddate,"DD.MM.YYYY")
end sub
D.h. bei einem Startdatum am 23.12.2012 und 7 Tagen gibt das Makro den 01.01.2013 als Ergebnis in einer Messagebox heraus.
Mit Enddate kannst du dann weitermachen.
Calc errechnet das gleiche, siehe Bild anbei.
FunctionArbeitstaginWriter.png
FunctionArbeitstaginWriter.png (25.39 KiB) 1335 mal betrachtet
Also funzt!

Viel Erfolg damit
Gruß R
JackC
Beiträge: 4
Registriert: Fr, 21.12.2012 21:31

Re: Datum nach X Werktagen

Beitrag von JackC »

Danke, das hilft schonmal viel. Jetzt muss ich nur noch rausfinden, wie ich das Startdatum aus dem Eingabefeld lese und wie ich den Text direkt ins Dokument schreibe, anstelle der Box.
Ich kenne mich leider noch mit Makros zu wenig aus. Im Prinzip aber genau das was ich gesucht habe ;-)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Datum nach X Werktagen

Beitrag von F3K Total »

Moin,
wenn Du ein Beispieldokument hochlädst, kann man mal schauen.

Gruß R
JackC
Beiträge: 4
Registriert: Fr, 21.12.2012 21:31

Re: Datum nach X Werktagen

Beitrag von JackC »

Hallo,

klar, hier ist das Beispiel - etwas verspätet wegen der Feiertage. Wenn Du mal Zeit hast drüberzusehen, das wäre echt nett ;-)
Problem ist, wie gesagt, das Datum in der Zeile "Zu Zahlen bis ..." (im Beispiel rot markiert). Da wäre es praktisch wenn
ich ne Lösung hätte, womit ich das automatisch 14 Werktage später als das im Eingabefeld Datum eigegeben ausrechnen
und einfüllen lassen könnte. Ansonsten mache mit der Vorlage folgendes:
nach Aufruf der Vorlage fülle ich die 2 Eigabefelder (Datum und Rechnungsnummer) aus, ändere den Betrag in der Tabelle und
fülle dann die Datenbankfelder über jdbc vom MYSQL Server aus. Wenn alles fertig ist, lasse ich dieses Makro
hier laufen: viewtopic.php?f=18&t=19925. Danke schonmal.
Dateianhänge
Anweisung.ott
(23.35 KiB) 54-mal heruntergeladen
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Datum nach X Werktagen

Beitrag von F3K Total »

Hallo,
wenn Du dieses Makro, S_berechne_Zahltag auch noch laufen läßt, wird dein Datum eingetragen.
Die Function brauchst du zur Berechnung des Datums.

Code: Alles auswählen

sub S_berechne_Zahltag
    oTextFields = thiscomponent.TextFields
    oTextFieldsenumeration = oTextFields.createenumeration
    while oTextFieldsenumeration.hasmoreelements
        oTextfield = oTextFieldsenumeration.nextelement
        if oTextfield.supportsservice("com.sun.star.text.TextField.Input") then
           if oTextfield.Hint = "Datum" then sRechnungsdatum = oTextfield.Anchor.String
        endif
    wend
    oTexttables = thiscomponent.Texttables
    oTexttable = oTexttables.getbyname("Tabelle8")
    ocell = oTexttable.getCellByposition(1,0)
    ocell.String = "bis "+F_get_Arbeitstag(sRechnungsdatum,14)'hier die Anzahl der Tage eingeben
end sub

function F_get_Arbeitstag (sstartdate as string, ndays as long) as string
   dim nStartdate as long
   nStartdate = datevalue(sstartdate)
   oFunctionAccess = createUnoService("com.sun.star.sheet.FunctionAccess")
   result = oFunctionAccess.callFunction("ARBEITSTAG",(array(nStartdate,nDays,0)))
   F_get_Arbeitstag = format(result,"DD.MM.YYYY")
End function
Viel Spaß damit
Gruß R
JackC
Beiträge: 4
Registriert: Fr, 21.12.2012 21:31

Re: Datum nach X Werktagen

Beitrag von JackC »

Funktioniert bestens. Vielen herzlichen Dank, das ist wirklich mal ne maßgeschneiderte Lösung. :D
Antworten