Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Lurchi am 31.07.08 - 11:17:32
-
Hallole,
ich hab hier einen Code, der das Speichern des Dokumentes nur bis 13:00 Uhr des vortags zulässt.
Das Feld mit dem Datumswert lautet "Datum"
Die Formel klappt auch soweit sehr gut, nur hab ich jetzt das Problem, dass ich das Wochenende nicht ausschließen kann.
Beispiel: Freitags kann man das Dokument für Montag auch nach 13 Uhr erstellen.
Bei meinem Fall handelt es sich hierbei um eine Essensbestellung.
Hier der Code:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim doc As NotesDocument
Set doc = Source.Document
Dim item As NotesItem
Set item = doc.GetFirstItem( "Datum" )
Dim DatumEssen As NotesDateTime
Set DatumEssen = item.DateTimeValue
DatumEssen.LocalTime = DatumEssen.LocalTime + " 13:00:00"
Dim AktuelleZeit As New NotesDateTime( "" )
Call AktuelleZeit.SetNow
Dim DifferenzSekunden As Long
DifferenzSekunden = DatumEssen.TimeDifference( AktuelleZeit )
If DifferenzSekunden < 86400 Then
Msgbox "Bestellungen sind nur bis 13 Uhr des Vortags möglich." , 48, "Firma"
Continue = False
End If
End Sub
Hat jemand eine Idee, wie ich das Wochenende ausschließen kann??!!? Ich wär euch sehr dankbar! :love:
Hochachtungsvoll
der Lurchi
EDIT: Boardsymbol geändert - Ulrich hat eine richtige Lösung genannt. Ich hoffe, das bisherige Symbol war nur ein Versehen ...
-
Gucke mal nach Weekday function in der Designer Hilfe
-
Hallo eknori,
danke für deine Antwort. Ich habe mir mal die "weekday function" angeschaut, leider stehe ich auf dem Schlauch, wie ich sie in mein Script einbauen muss.
Kannst du mir bei der Vorgehensweise behilflich sein?
Danke und Gruß
Lurchi
-
Du nimmst dein DatumEssen und prüfst mit der weekday function, ob eine 1 oder eine 7 als Rückgabewert geliefert wird. Wenn ja, ist nix mit Essen und du kannst die Prüfung nach der Zeit abbrechen, wenn ein anderer Wert geliefert wird, ist es ein Wochentag und du prüfst imweiteren Verlauf noch auf 13:00 ...
-
Servus, eine Woche später.....
wir sitzen nun schon wieder an diesem Problem und raffen es nicht.
Wir wissen nicht, wie wir den Code aus der Hilfe in unser Code integrieren sollen.
Dim x As Variant, wd As Integer
x = DateNumber(1993, 7, 7)
wd% = Weekday(x)
Print wd%
' Output:
' 4
Help, I need somebody!
Gruß
der Lurchi
-
Wieso - funktioniert doch ...
-
Die Formel klappt auch soweit sehr gut, nur hab ich jetzt das Problem, dass ich das Wochenende nicht ausschließen kann.
Beispiel: Freitags kann man das Dokument für Montag auch nach 13 Uhr erstellen.
Und laut eknori kann man dies mit dem Code aus der Hilfe (siehe Beitrag oben). Wir wissen nur nicht, wie wir diesen in unseren integrieren sollen.
-
du musst dann noch den Freitag mit dem Montag verknüpfen
DatumEssen.LocalTime = DatumEssen.LocalTime + " 13:00:00"
wenn Freitag, dann Bestellzeit auf Sonntag setzen oder so
er muss ja dann wissen, dass Sa/So wegfallen
Grüsse
Dau-in
-
Hallo Lurchi,
die ganze Konstruktion macht einen recht komplizierten Eindruck.
Nimm doch einfach das Essensdatum und rechne auf der Grundlage zurück, um ein Datum zu bekommen, mit dem Du vergleichen kannst. Angenommen SA und SO lassen sich als Essensdatum nicht auswählen, wäre DI-FR das Limit bei einem Tag, Montags bei 3 Tagen.
Das geht sowohl mit Formel als auch mit Script recht simpel. Bei Bedarf kann ich ein Snippet zusammenstricken.
Gruß, Fineas!
-
Hallo Lurchi,
das folgende Konstrukt ist bestimmt nicht high-sophisticated, aber auch noch nach ein paar Jahren pfleg- und wartbar.
Dim Vorlauf As Long
Dim TageVorlauf As Long
Select Case weekday(DatumEssen)
Case 1 ' Sonntag
Tagevorlauf=2
Case 7 ' Samstag
Tagevorlauf=3
Case 6 ' Freitag
Tagevorlauf=4
Case Else
TageVorlauf=1
End Select
Vorlauf=Tagevorlauf*86400
If DifferenzSekunden < Vorlauf Then
Msgbox "Bestellungen sind nur bis 13 Uhr des Vortags möglich." , 48, "Firma"
Continue = False
End If
P.S.: ich verbinde mit Lurchi eigentlich keinen Menschen (ein Name stünde dir daher gut zu Gesicht), sondern noch den gleichnamigen Feuersalamander des Werbeperiodikums der Fa. Salamander, der mit seinen Freunden wilde Abenteuer erlebte, die immer mit einem Fest der Freunde und dem Schlußsatz "Salamander lebe hoch" endeten. Heinz Schubel und Erwin Kühlewein (ein Prokurist der Fa. Salamander !) haben die genialsten Geschichten gezeichnet und geschrieben - und ich habe in meiner Kindheit diese Heftchen natürlich gesammelt.
http://www.geocities.com/lurchi_online/intro.html
-
Sodele, wir haben es nun geschaft. Hier das Ergebnis:
----------------------------------------
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
Dim doc As NotesDocument
Set doc = Source.Document
Dim item As NotesItem
Set item = doc.GetFirstItem( "Datum" )
Dim x As Variant
Dim wochentag As Integer
x = Datenumber (Year(Today), Month(Today), Day(Today))
wochentag = Weekday(x)
Dim DatumEssen As NotesDateTime
Set DatumEssen = item.DateTimeValue
DatumEssen.LocalTime = DatumEssen.LocalTime + " 13:00:00"
Dim AktuelleZeit As New NotesDateTime( "" )
Call AktuelleZeit.SetNow
Dim DifferenzSekunden As Long
DifferenzSekunden = DatumEssen.TimeDifference( AktuelleZeit )
Msgbox (wochentag)
Select Case wochentag
Case 6 To 7
If DifferenzSekunden < 259200 Then
Msgbox "Bestellungen für nächsten Montag sind nur bis Freitag 13:00 Uhr möglich." , 48, "Firma"
Continue = False
End If
Case Else
If DifferenzSekunden < 86400 Then
Msgbox "Bestellungen sind nur bis 13 Uhr des Vortags möglich." , 48, "Firma"
Continue = False
End If
End Select
End Sub
----------------------------------------
@ ALL
Wir bedanken uns für alle Antworten. Ihr wart uns eine große Hilfe!!!!
@ LN4ever:
Viele Grüße vom Ralf
Besonderen Dank geht an cebolina, der uns telefonisch tatkräftig unterstützt hat.
Schönen Tag noch,
der Lurchi
-
Wenn ich Freitags die Bestellung vergessen habe, mache ich es dann eben am Sonntag ;D
-
Hallo Ralf,
in dem jetzigen Konstrukt kann man Freitagmittag bis Samstag-Mittag das Essen für Dienstag bestellen, Samstag nach 13 Uhr dann aber nur noch für Mittwoch, dafür aber am Sonntag bis 13 Uhr wieder direkt für Montag.
Naja - und leise trollt sich Hopps, der Frosch vom Kampffeld der Essensvorbestellung bei Lurchi.
Gruß
Norbert
-
@if (
firma = sonntags geschlossen;
"keine bestellung möglich";
"")
;D ;D ;D ;D ;D ;D ;D ;D
Bei uns arbeitet keiner sonntags!
Nachtrag:
Samstags auch ! O0
-
Bei uns arbeitet keiner sonntags!
Noch nicht....
-
Wie wärs denn damit - in Ermangelung ausreichender Zeit in der Essenspause noch nicht umfassend getestet:
_WD := @Weekday( @now );
_ORDERDATE := @If( _WD = 1; @Adjust( @Date( @Year(@today); @month(@today); @day(@today); 0;0;0 ); 0;0;1;0;0;0 ) ; _WD = 7; @Adjust( @Date( @Year(@today); @month(@today); @day(@today); 0;0;0 ); 0;0;2;0;0;0 ); @Now );
_TTO := @If( _WD = 6; -3; 0);
_LIMIT := @Adjust( @Date( @Year(FIELD_ESSENSDATUM); @Month(FIELD_ESSENSDATUM); @Day(FIELD_ESSENSDATUM);13;0;0 ); 0;0; _TTO; 0; 0; 0 );
@If( _LIMIT < _ORDERDATE; "Zu spät!"; "Glück gehabt!" )
Logik: Samstags und Sonntagsbestellungen werden wie Bestellungen Montag früh behandelt. Am Freitag muss das Essensdatum mindestens 3 Tage in der zukunft liegen. Das Ganze unter der Annahme, dass es am Wochenende nix zu Essen gibt.
Gruß, Fineas!