Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Lurchi am 31.07.08 - 11:17:32

Titel: Wochenende ausschließen
Beitrag 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 ...
Titel: Re: Wochenende ausschließen
Beitrag von: eknori (retired) am 31.07.08 - 11:22:27
Gucke mal nach Weekday function in der Designer Hilfe
Titel: Re: Wochenende ausschließen
Beitrag von: Lurchi am 31.07.08 - 14:18:03
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
Titel: Re: Wochenende ausschließen
Beitrag von: eknori (retired) am 31.07.08 - 14:26:41
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 ...
Titel: Re: Wochenende ausschließen
Beitrag von: Lurchi am 07.08.08 - 11:09:52
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
Titel: Re: Wochenende ausschließen
Beitrag von: koehlerbv am 07.08.08 - 11:12:54
Wieso - funktioniert doch ...
Titel: Re: Wochenende ausschließen
Beitrag von: Lurchi am 07.08.08 - 11:17:52
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.
Titel: Re: Wochenende ausschließen
Beitrag von: DAU-in am 07.08.08 - 11:25:57
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
Titel: Re: Wochenende ausschließen
Beitrag von: Fineas am 07.08.08 - 11:42:21
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!

Titel: Re: Wochenende ausschließen
Beitrag von: LN4ever am 07.08.08 - 12:47:45
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
Titel: Re: Wochenende ausschließen
Beitrag von: Lurchi am 07.08.08 - 14:29:00
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
Titel: Re: Wochenende ausschließen
Beitrag von: koehlerbv am 07.08.08 - 14:46:52
Wenn ich Freitags die Bestellung vergessen habe, mache ich es dann eben am Sonntag  ;D
Titel: Re: Wochenende ausschließen
Beitrag von: LN4ever am 07.08.08 - 14:50:32
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
Titel: Re: Wochenende ausschließen
Beitrag von: Lurchi am 07.08.08 - 14:52:44
@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
Titel: Re: Wochenende ausschließen
Beitrag von: klaussal am 07.08.08 - 14:54:31
Zitat
Bei uns arbeitet keiner sonntags!

Noch nicht....
Titel: Re: Wochenende ausschließen
Beitrag von: Fineas am 07.08.08 - 16:00:38
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!