Autor Thema: @adjust über das Wochenende  (Gelesen 1683 mal)

Offline Monster

  • Frischling
  • *
  • Beiträge: 42
  • Ich liebe dieses Forum!
@adjust über das Wochenende
« am: 18.07.03 - 11:21:40 »
Hallo @Designers,

ich habe folgendes Problem,
ich entwickle gerade eine DB Auftragsverfolgung,
in der bestimmte Zeiten zur Annahme des Dokumentes vorgegeben werden und zwar 3 Stunden später.

ich habe ein berechnetes Feld in der ich die Formelsprache benutze.

Beispiel:
erstellDatum:= @now
annahmeDatum:=@adjust(erstellDatum;0;0;0;3;0;0)

Nun stehe ich aber vor eine Problem,
DAS WOCHENENDE
folgende Bedingungen:
Hinweis
Beginn jedes Tages 7.00Uhr und Ende jedes Tages nach 16.ooUhr

1. Montag bis Donnerstag bis 16.ooUhr, können die 3 Stunden dazu addiert werden, nach 16.ooUhr der nächste Tag ( 7.ooUhr plus die 3 Stunden)

2. Freitag nach 16.ooUhr soll das Datum vom Montag angezeigt werden. also Beginn ist 7.ooUhr plus die 3 Stunden

3. egal welche Uhrzeit am Samstag und Sonntag angegeben wird, er soll mir das Datum vom Montag und die Zeit 10.ooUhr ( Beginn 7.ooUhr + 3 Stunden )

Wer kann mir helfen ?
Hier ein Beispiel, aber ich bekomme es nicht richtig zum laufen :

A:=@If(@Hour(@Now)>19 | @Hour(@Now)<7;@Hour(@Now)-7;0);
B:=@If(A<0;-A;A=0;A;24-A);
C:=@If(@Weekday(@Date(@Now))=1 & A>0;0;
@Weekday(@Date(@Now))=7 & A>0;1;
@Weekday(@Date(@Now))=6 & A>0;2;
@Weekday(@Date(@Now))=1;1;
@Weekday(@Date(@Now))=7;2;0);
@Adjust(@Now; 0;0;C+0;B + 3;0;0);




Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:@adjust über das Wochenende
« Antwort #1 am: 18.07.03 - 19:39:00 »
Monster  - ich verstehe nicht ganz deine Bedingungen ... aber ich würde Schritt für Schritt vorgehen << divide et impera >>  und so zu einer Lösung kommen - kompliziertere Probleme wie deins zu scheinen mag würde ich in Script lösen  ::)


cu
« Letzte Änderung: 18.07.03 - 19:39:37 von Performance »
Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:@adjust über das Wochenende
« Antwort #2 am: 18.07.03 - 20:01:04 »
Zitat
A:=@If(@Hour(@Now)>19 | @Hour(@Now)<7;@Hour(@Now)-7;0);
B:=@If(A<0;-A;A=0;A;24-A);
C:=@If(@Weekday(@Date(@Now))=1 & A>0;0;
@Weekday(@Date(@Now))=7 & A>0;1;
@Weekday(@Date(@Now))=6 & A>0;2;
@Weekday(@Date(@Now))=1;1;
@Weekday(@Date(@Now))=7;2;0);
@Adjust(@Now; 0;0;C+0;B + 3;0;0);

lass uns die Formel doch erst einmal ein wenig leserlicher machen:


_hour:= @Hour(@Now);
_today:= @Date(@Today);
_weekday:= @Weekday(_today);

A:=@If(_hour >19 | _hour < 7;_hour-7;0);
B:=@If(A<0;-A;A=0;A;24-A);

C:=

@If(
_weekday = 1 & A > 0;0;
_weekday = 7 & A > 0;1;
_weekday = 6 & A > 0;2;
_weekday = 1;1;
_weekday = 7;2;0);

@Adjust(@Now; 0;0;C ;B + 3;0;0);


B:=@If( A < 0; -A ;A=0 ; A ; 24-A );

fehlt da nicht was  ?? bin mir nicht sicher, ob man einen wert einfach so negieren kann  ??? ???
« Letzte Änderung: 18.07.03 - 20:10:47 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:@adjust über das Wochenende
« Antwort #3 am: 18.07.03 - 20:54:30 »
hm ... mal sehen:

- wenn Notestag 2,3,4,5,6 & 07-16 Uhr => +3 Stunden
- wenn Notestag 2,3,4,5 & vor 7 und nach 16 Uhr => +1 Tag und 10 Uhr
- wenn Notestag 6 & vor 7 und nach 16 Uhr => +3 Tage und 10 Uhr
- wenn Notestag 1 oder 7 => auf Notestag 2 und 10 Uhr

erstellDatum:= @Now;
annahmeDatum:=@Adjust(erstellDatum;0;0;0;3;0;0);
wochentag:=@Weekday(erstelldatum);
stunde:=@Hour(erstelldatum);
stunde_10:=10-stunde;
minute_0:=@Minute(erstelldatum)*(-1);

test_auf_werktag:=@If(wochentag>1 & wochentag<6;1;0);
test_auf_stunde:=@If(stunde>7 & stunde<16;1;0);

test_werktag_erfolgreich:=@If(
test_auf_werktag=1 & test_auf_stunde=1;1;
test_auf_werktag=1 & test_auf_stunde=0;2;
test_auf_werktag=0 & wochentag=6 & test_auf_stunde=1;1;
test_auf_werktag=0 & wochentag=6 & test_auf_stunde=0;5;
test_auf_werktag=0 & wochentag=1;3;
test_auf_werktag=0 & wochentag=7;4;
0);

@If
(
test_werktag_erfolgreich=1;
@Return(@SetField("FELD_ANNAHME";annahmedatum));
test_werktag_erfolgreich=2;
@Return(@SetField("FELD_ANNAHME";@Adjust(erstellDatum;0;0;+1;stunde_10;minute_0;0)));
test_werktag_erfolgreich=3;
@Return(@SetField("FELD_ANNAHME";@Adjust(erstellDatum;0;0;+1;stunde_10;minute_0;0)));
test_werktag_erfolgreich=4;
@Return(@SetField("FELD_ANNAHME";@Adjust(erstellDatum;0;0;+2;stunde_10;minute_0;0)));
test_werktag_erfolgreich=5;
@Return(@SetField("FELD_ANNAHME";@Adjust(erstellDatum;0;0;+3;stunde_10;minute_0;0)));
@Return(@Prompt([Ok];"STOP";"IRGENDWAS STIMMT NET DU DAU"))
)

Jo, dat müßte passen hoffe ich. Ich habs noch nit in den Designer gehauen, aber tests halt mal. Frage, die noch offen ist: was machste eigentlich zwischen 00:00 und 07:00? Diese Bedingung haste noch nicht explizit genannt. Ich habs wie ein über 16:00 Uhr gewertet und damit auf den nächsten Tag gelegt. Pass es halt an, was auch immmer die Schleife ausspucken soll.

PS: warum ich das @return reingehauen habe, weiß ich jetzt nicht mehr. Egal, nimms raus, bewirkt nüscht  ;D
« Letzte Änderung: 18.07.03 - 21:11:29 von Rob Green »
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:@adjust über das Wochenende
« Antwort #4 am: 18.07.03 - 21:03:59 »
Ich würde hier erstmal den Algorithmus gerade ziehen, um den eigentlichen Code zu minimieren:

- ErstellDatum := @Now
- koMo10 := koMo 10:00 Uhr ermitteln
- ErstellDatum = Freitag AND Hour > 13:00 Uhr -> AnnahmeDatum = koMo10 -> fertig
- ErstellDatum = Sonnabend OR Sonntag  -> AnnahmeDatum = koMo10 -> fertig
- ErstellDatum > 16:00 Uhr: kommender TAg 10 Uhr  -> fertig
- ErstellDatum + 3 h  -> fertig

A-BÄR !!! Das ganze wird doch nur eine scheinbare Lösung !!! Wenn Ihr schon nicht 7*24 Aufträge entgegen nehmt, sondern solch eine arbeitnehmerfreundliche Lösung (Freitag nicht nach 16 Uhr und so) etablioert habt, wie löst Deine Formel für AnnahmeDatum dann Daten wie den 02.10.2003, den 23.12.2003 und so weiter ?

Auch wenn wir den Algorithmus vereinfachen können - dem wahren Leben hält das dann immer noch nicht stand, hier ist viel mehr Aufwand erforderlich, wenn man es denn richtig machen will.

HTH,
Bernhard


Offline Monster

  • Frischling
  • *
  • Beiträge: 42
  • Ich liebe dieses Forum!
Re:@adjust über das Wochenende
« Antwort #5 am: 21.07.03 - 12:27:51 »
@all,

vielen Dank für Eure Hilfe,
ich wollte natürlich nicht das Ihr am Freitag noch so lange wegen mir am Rechner sitzt, tausend Dank.

 ;)

ich habe noch eine weitere Lösung , von einem Freund RabeT erhalten, diese möchte ich natürlich gern posten und dieses Dokument abschliessen,

Vielen Dank

_now:=DatumGew;

REM "Geprüft wird, ob ein Tageswechsel notwendig ist (sprich nächster Tag oder Woche - 10Uhr";
Day_Check:=@If(@Weekday(@Date(_now))=1;1;
                                  @Weekday(@Date(_now))=7;2;
                                  @Weekday(@Date(_now))=6 & @Hour(_now)>=16;3;
                                  @Weekday(@Date(_now))<6 & @Hour(_now)>=16;1;
                                  0);

WT_StdPlus:=@If(@Hour(_now)<7; 1; 0);

@If(Day_Check>0; @TextToTime(@Text(@Date(@Adjust(_now; 0;0;Day_Check;0;0;0)))+" 10:00");
        Day_Check=0 & WT_StdPlus=1; @TextToTime(@Text(@Date(_now))+" 10:00");
        @Adjust(_now; 0;0;0;3;0;0))
« Letzte Änderung: 21.07.03 - 12:28:26 von Monster »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz