Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


Hallo zusammen,

ich habe heute früh nur die erste Mail lesen können, ohne etwas dazu schreiben zu können. Inzwischen hat sich ja schon herausgestellt, dass es wohl am Datumserkennungsmuster liegt, was sich noch nicht in der Dokumentation niedregeschlagen hat. Ich hatte ein entsprechendes Problem für andere Datumsfunktionen als Bug gemeldet, siehe
https://bugs.documentfoundation.org/show_bug.cgi?id=106957
weil es ja kein Problem der deutschen Version, sondern ein grundsätzliches ist. Und eine Bug-Meldung ist dann die richtige Aktion, aber eben auf die Dokumentation bezogen. Die Dokumentation wurde auch ziemlich schnell korrigiert, ich denke, das lag auch daran, dass ich eine neue Formulierung vorschlug, das würde ich hier auch empfehlen. Die Leute, die das ändern, sind wahrscheinlich sehr beschäftigt, man sollte es ihnen so klar und einfach wie möglich machen. Wenn sie sich erst in das Thema reindenken und gar nach einer Formulierung suchen müssen, bleibt das erst mal liegen und geht dann vergessen.

Gruß

Gerhard

Am 17.11.2017 um 19:15 schrieb OoOHWHOoO:
Hallo Alex und Wolfgang,

in der Hilfe zu "DateAdd" steht, dass die Variable "Datum" von Typ "Variant" sein kann, es ist also eine Datum-Integer-Zahl als auch eine Datum-Zeichenkette erlaubt. Aber Deine (Alex) Eingabe der Form 17.11.2017 ohne begrenzende " ist nicht erlaubt, denn diese Eingabe ist weder eine Zeichenkette noch eine gültige Zahl. Das nachfolgende Mini-Makro liefert sowohl für Datum-Integer-Zahl als auch Datum-Zeichenkette ein fehlerfreies Ergebnis:


Sub example_dateadd

Dim Date_1 as Variant
Dim Date_2 as Variant

Date_1 = "31.01.2004"   ' Datumsformat entsprechend "Datumserkennungsmuster" in Abhängigkeit vom "Gebietsschema" angeben ! Date_2 = "31.01.2005"   ' Datumsformat entsprechend "Datumserkennungsmuster" in Abhängigkeit vom "Gebietsschema" angeben !

MsgBox DateAdd("m",1,Date_1) & " - " & DateAdd("m",1,Date_2)

MsgBox DateAdd("m",1,DateValue(Date_1)) & " - " & DateAdd("m",1,DateValue(Date_2))

End Sub


Das sehe ich im Prinzip ebenso wie Du (Wolfgang). Für "DateValue" ist die Hilfe-Erläuterung etwas ausführlicher und bestätigt, was Du auch geschrieben hast:

"[...] Sie können das Gebietsschema, das in LibreOffice Basic zur Kontrolle der Formatierung von Zahlen, Daten und Währungen benutzt wird, im Menü unter Extras - Optionen... - Spracheinstellungen - Sprachen einstellen. In Basic Formatierungscodes wird immer der Dezimalpunkt (.) als Platzhalter für den Dezimaltrenner benutzt, der in Ihrem Gebietsschema definiert ist, und durch das entsprechende Zeichen ersetzt. Dies gilt entsprechend für das Gebietsschema für Datums-, Uhrzeit- und Währungsformate. Der Basic-Format-Code wird entsprechend Ihrer Gebietsschemaeinstellung ausgewertet und angezeigt. [...]"

Über   [Extras] -> [Optionen] -> [Spracheinstellungen] -> [Sprachen]   kann man das "Gebietsschema" einstellen und LO setzt dann automatisch das dazugehörige "Datumserkennungsmuster":

+ Gebietsschema: Englisch (USA)
+ Datumserkennungsmuster: M/D/Y;M/D
+ Date_1 = "1/31/2004" und Date_2 = "1/31/2005"

+ Gebietsschema: Englisch (Großbritannien)
+ Datumserkennungsmuster: D/M/Y;D/M;D-M
+ Date_1 = "31/1/2004" und Date_2 = "31/1/2005"

+ Gebietsschema: Afrikaans (Namibia)
+ Datumserkennungsmuster: Y/M/D;M/D
+ Date_1 = "2004/1/31" und Date_2 = "2005/1/31"

+ Gebietsschema: Bretonisch
+ Datumserkennungsmuster: D/M/Y;D/M;D.M.Y;D-M-Y
+ Date_1 = "31-01-2004" und Date_2 = "31-01-2005"

+ Gebietsschema: Deutsch (Deutschland)
+ Datumserkennungsmuster: D.M.Y;D.M.
+ Date_1 = "31.01.2004" und Date_2 = "31.01.2005"

Man muss dann nur (beispielsweise) in dem obigen Min-Makro die Datum-Zeichenkette-Angaben für "Date_1" und "Date_2" entsprechend anpassen, dann gibt es keine Fehlfunktionen von "DateAdd" mehr.

Von dieser Funktion abzuraten, so weit würde ich nicht gehen. Das Beispiel anpassen und/oder auf das "Datumserkennungsmuster" in den "Spracheinstellungen" hinweisen.

Grüße
Hans-Werner ;-))

------ Originalnachricht ------
Von: "Wolfgang Jäth" <jawo.ml.hamster@arcor.de>
An: users@de.libreoffice.org
Gesendet: 17.11.2017 16:39:05
Betreff: Re: [de-users] Re: LO BASIC IDE - DateAdd - Beispiel fehlerhaft

Am 17.11.2017 um 11:26 schrieb Alexander Thurgood:


Hallo Hans-Werner,

Ich habe auf einem LO (fr-FR) getestet, und die Hilfe darum ist die
gleiche wie die in der deutschen Verfassung, also besser wäre doch, dass
man ein Bug gegen die Online-Hilfe melden würde.

Ich konnte mit LO5432 kein sensibles Ergebnis erstellen, wenn ich die
doppelten Anführungszeichen stehen liess - ansonsten bekam ich noch
weitere Fehlermeldungen, abhängig von der Wahl der Separator (Punkt oder
Strich). Nach Entfernung der Anführungszeichen, bekam ich doch ein
MsgBox mit Datum, trotzdem aber mit falschem Jahr, also "31/01/32767".

Es ist da scheinbar was los. Ob das die Hilfe zu schulden ist, oder ein
unterliegendes Problem mit der Funktion DateAdd(), weiss ich nicht.

Wohl letzteres; 'DateAdd("m", 1, "4/5/6")' liefert das Datum
'04.06.2006', sprich es geht wohl von einem (nicht unbedingt sehr
üblichen) Format 'DD/MM/YYYY' aus, und nicht von dem zinmindest im
amerikanischen Sprachraum üblichen Format 'MM/DD/YYYY'.

Allerdings *gibt* es laut
https://en.wikipedia.org/wiki/Date_format_by_country auch das Format
'DD/MM/YYYY' (z. B. in Algerien), insofern ist die verwendete
Interpretation zwar unerwartet aber nicht grundsätzlich falsch.

Der Grund dafür dürfte IMHO sein, dass DateAdd keine Möglichkeit
erlaubt, ein Gebietsschema aus zu wählen, sondern fix auf das im BS
eingestellte Gebietsschema und die dort verwendete Reihenfolge von Tag,
Monat und Jahr zurückgreift, egal in welchem Format das Datum angegeben
wird. Und für DE ist das gültige Datumsformat nun mal 'DD.MM.YYYY' und
nicht 'MM/DD/YYYY'.

Man sollte also nicht nur das Beispiel in der Hilfe korrigieren, sondern
auch darauf hin weisen, dass bei Datumsangaben, die in einer Form
übergeben werden, die nicht dem Gebietsschema entspricht, unerwartete
Ergebnisse zu erwarten sind.

M. a. W. ist von der Verwendung dieser Funktion wohl eher ab zu raten.

Wolfgang
--

--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert




--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.