Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Silent_Bob am 28.11.05 - 14:14:53
-
Hallo zusammen,
schaut euch mal diese Zeile bitte an:
intWochentag = Weekday(Cint(intdatum = Inputbox("Datum_ angeben")))
Die Zahl die Weekday übergeben bekommt ist 7. Ich verstehe nur nicht warum.
Folgendes: ich möchte, dass man in einer InputBox ein Datum eintippen kann. Dieses Datum soll dann erstmal an die Variable IntDatum übergeben werden. Diese Variable möchte ich später in einer andern Zeil verwenden.
Das an die Variable übergebene Datum soll dann an Weekday übergeben werden, dass aus diesem Datum dann den Wert des jeweiligen Wochentages ermittelt und zurückgibt.
Der 20.11.2005 ist z.b. ein Sonntag, also müsste die Zahl 1 übergeben werden.
Warum kommt bei dieser Formel die 7 raus?
Was mache ich falsch?
-
Du wandelst das Datum aus intdatum erst in einen Integer um und willst dann den Weekday ermitteln. Ich denke mal, daß das in die Hose geht. Laß mal das CInt weg.
intWochentag = Weekday(intdatum=Inputbox("Datum"))
-
intdatum = InputBox$ ist keine Zuweisung, sondern ein Vergleich. Bei dem kommt logischerweise Falsch heraus, also 0. Der 30.12.1899 hat die Datumsseriennummer 0. Und der Tag wird also wohl ein Sonnabend gewesen sein ...
Bernhard
-
Moment, in Script ist das doch eine Zuweisung.
-
Wenn das die erste Anweisung von links ist, ja. So aber nicht ;)
Eine Zuweisung nach einer Zuweisung ist nicht zulässig.
Bernhard
-
Aargh, okay. Ehrlich gesagt hab ich solche Konstrukte noch nie benutzt. Das wird mir persönlich viel zu unübersichtlich ;)
-
Ich verstehe... eine Zuweisung nach einer Zuweisung ist nicht zulässig.
DAS hab ich verstanden.
Ich hab die Zeile jetzt umgeändert und das ganze sieht jetzt so aus:
Dim intWochentag As Integer
Dim intdatum As String
intDatum = Inputbox("Datum angeben")
intWochentag = Weekday(intdatum)
Jetzt klappt das auch so wie es soll.
Dankesehr
-
Abgesehen davon ist das Konstrukt falsch (Cint müsste CDat sein) und reagiert auf keinerlei Fehleingaben durch den User. Das müsste also sowieso grundlegend umgebaut werden.
Bernhard
EDIT: Der mittlerweile gepostete Code ist hinsichtlich Fehleingaben kein Stück resistenter ;D
-
@koehlerbv:
;D
Das ist wahr. Ich arbeite grad an einer sauberen Lösung die möglichen Fehler abzufangen
-
Als ein Minimum:
Wenn InputBox$ leeren String liefert -> Abbruch
Wenn InputBox$ einen nicht-leeren String liefert: Mit Isdate prüfen.
HTH,
Bernhard
PS: Eleganter wäre aber eine Dialogbox mit einem hübschen Datumsfeld ;)
-
Stimmt, aber wenn ich das mit Hilfe einer DialogBox mache, müsste ich ja jedesmal wenn ich in Code verwenden will, die passende Maske mit dem passenden Feld haben, oder nicht?
Dann prüfe ich die Eingabe lieber mit IsDate, obwohl ich ja auch eher auf Eleganz stehe *g*
Aber so wäre der Script halt einfacher in andere DBs einbaubar.
-
Wo liegt bei der Dialogbox-Lösung denn das Problem ? Code kopieren UND die Maske ...
Bernhard
-
Ne, das ist soweit kein Problem, aber ich bin dabei Lotus Script zu lernen. Wenn ich das alles statt mit DialogBox mit einer InputBox mache, und dann mit diversen Funktionen prüfe, ist das mehr Arbeit.
Und auf diese Weise lerne ich schneller bzw. besser.