Autor Thema: Terminüberschneidungen bei Raumbuchungen.  (Gelesen 19951 mal)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Terminüberschneidungen bei Raumbuchungen.
« am: 12.02.03 - 12:45:23 »
@All.

Ich baue gerade an einer Datenbank für eine Raumbelegung.
Ich will nicht die Resourcenreservierung verwenden, da die zu fehleranfällig ist.

In meiner Maske habe ich neben dem Namen der Ressource noch 4 Felder

StartDate  --  StartTime
EndDate   --   EndTime

Wie kann ich nun beim Erstellen einer neuen Buchung feststellen, ob es zu einer Terminüberschneidung kommt. ?

Hab euch die Datenbank mal beigefügt  ;D

Ich habe den Link aktualisiert. Die DB enthält jetzt alle Routinen für den Availability - Check
« Letzte Änderung: 14.02.03 - 11:35:52 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!

klaussal

  • Gast
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #1 am: 12.02.03 - 13:14:48 »
hi,
das wird wohl aufwendig.
- fällt der neue start-termin in einen zeitraum der anderen doc's
   wenn ja, ist die neue startzeit >= startzeit des gefundenen docs UND <= endzeit des gefunden docs? wenn ja, termin belegt.

so ungefähr jedenfalls . . . .  ;)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #2 am: 12.02.03 - 14:44:58 »
... in meiner Lib zum DateHandling habe ich eine Klasse drin, die ein Array für einen Zeitraum initialisiert. Wenn die beiden Array's in einem Element Deckung haben, dann findet eine Überschneidung statt - ich denke damit könntest du es bekommen.

ArrayGetIndex(...) ist die Entsprechung zu @Member

... wenn dir die ganz Lib zu groß ist, kannst du zumindest Teile daraus verwenden...

ata
Grüßle Toni :)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #3 am: 12.02.03 - 17:51:28 »
hmm, ja, ich denke  ??? damit komme ich weiter.  ??? ::) ;D
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline MartinG

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.802
  • Geschlecht: Männlich
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #4 am: 12.02.03 - 18:35:50 »
Hallo Eknori,

kann Dir leider nicht helfen... - aber ich habe gerade Deine Datenbank angeschaut und frage mich nun wie Du Wunderknabe das geschafft hast das das JAVA Applet perfekt lauft ohne das der NotesClient danach hängt? Ich weiss nicht wieviele Notesprogrammierer sich damit bisher rumgekämpft haben - auf jeden Fall schon superviele die ich kenne...

Gruss
Martin

Martin
Wir leben zwar alle unter dem gleichen Himmel, aber wir haben nicht den gleichen Horizont.
KONRAD ADENAUER

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #5 am: 13.02.03 - 06:59:02 »
Wie kann ich nun beim Erstellen einer neuen Buchung feststellen, ob es zu einer Terminüberschneidung kommt. ?

Ich habe das bei einem Eventkalender so gelöst, daß ich den Datumsbereich des Ereignisses in einer Ansicht expandiert (exploded) habe und beim Vergleich nur diese Schlüssel der Ansicht prüfe. Damit beschränke ich die Zahl der zu prüfenden Termine auf alle die Ereignisse, die nach Datum potentiell überschneiden könnten und muß nicht alle Ereignisse der DB prüfen.
Aber ich denke mal, diesen logischen Weg dürftest Du schon vorgesehen haben.
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #6 am: 13.02.03 - 13:11:08 »
Habe diese Formel hier

@Explode(@Date(@TextToTime(@Text(co_StartDate) + " " + @Text(@Time(0;0;0)) + " - " + @Text(@If(co_EndDate > co_StartDate; @Adjust(co_EndDate; 0; 0; -1; 0; 0; 0); co_EndDate)) +  " " + @Text(@Time(0;0;0)))))

um den Datumsbereich zwischen Start- und Enddatum zu "exploden"

Ich kriege das einfach nicht für ZEITFELDER umgesetzt.

Wer kann helfen ??

In Script kriege ich das hin.... Aber ich und Formeln  :o :o :o
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #7 am: 13.02.03 - 13:18:30 »
... das sieht schlecht aus mit Zeitangaben , ich denke das funzt nur mit Datum - nicht mit Zeitwerten

dateRange
Time-date range or time-date range list. The range of dates whose individual days you want to make into a text list.

ata
Grüßle Toni :)

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #8 am: 13.02.03 - 16:59:33 »

um den Datumsbereich zwischen Start- und Enddatum zu "exploden"

Ich kriege das einfach nicht für ZEITFELDER umgesetzt.

Geht auch nicht, steht irgendwo versteckt bei @Explode in der Doku, momang...

"The range of dates whose individual days you want to make into a text list."

Gemein.

Aber besser so, als tausende von Terminen zu vergleichen, die wild über's ganze Jahr verstreut liegen.
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

Offline forrest g

  • Aktives Mitglied
  • ***
  • Beiträge: 130
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #9 am: 14.02.03 - 11:24:04 »
hi eknori,

ich hab da einen lösungsvorschlag in script(bist da wahrscheinlich schon selber draufgekommen...):

- programmatische view: 1.spalte=ressource, 2.spalte=zeitangabe(vorzugsweise KW, weil ja wohl bei den räumen keine übergriffe in die nächste woche vorkommen; ich hab das in einer db mit 3 spalten(jahr, tag,monat) gelöst); 3.spalte=dein feld DaysOutOS mit der zeitspanne in tagen
- im querysave der maske dann eine schleife einbauen:

dim keyarray(1) as string
KeyArr( 0 ) = ...Ressource...
KeyArr( 1 ) = ...Zeitangabe(KW)...
Set datecol = view.getalldocumentsbykey ( KeyArr, True )
datecolnr = datecol.count
Set resdoc = datecol.getfirstdocument
   
For i = 0 To datecolnr-1         
 While Not ( resdoc Is Nothing )
  Set ListeVonBis = resdoc.getfirstitem( "DaysOutOS" )
    Forall x In ListeVonBis.values
     'VERGLEICH eingabe- reservierungen
      If x = Von Or x = Bis Then
       'wenn überschneidungen bei den tagen, dann zeitwertevergleic
      End If         
    End Forall
   Set doc = datecol.getnextdocument(doc)
 Wend
Next


tschö


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #10 am: 14.02.03 - 11:47:08 »
Danke für den Tip.
Ich habe das bereits selbst per Script gelöst. Der Link im ersten Posting enthält nun die aktuelle version der DB.
In den ScriptLibs und Agenten ist im prinzip schon alles drin , was man braucht.

Ein paar Bugs gibt es noch:

-Wenn ich einen bestehenden termin ändere checkt der Code auch den eigenen Zeitbereich und meldet den Raum als belegt.
-Wenn ein termin im chart durch ziehen des slot verändert wird, ändert sich nicht die Werteliste im Feld "TimeSlots"
- der availability - check ist noch nicht in der Aktion "Speichern und in Kalender eintragen" vorhanden.
- Wiederholungstermine checken nicht auf Kollision mit bereits bestehenden Terminen.

Vielleicht kann mir ja der eine oder  andere helfen, die Bugs zu beseitigen  :D

So ein paar funktionen möcht ich noch einbauen:

- Auswahl möglicher Resourcen anhand der Personenzahl
- Anzeige freier Resourcen anhand Datum und Uhrzeit.

Ich weiß, ich weiß, "das hat Notes doch alles schon".
Aber die C&S Geschichte arbeitet solange ich Notes kenne nicht halbwegs fehlerfrei.
Bei uns kommt es ständig zu Terminüberschneidungen. Gerade, wenn dann auch noch ein Kundenbesuch ansteht und sog. repräsentative Räume durch Doppelbuchungen belegt sind, könnt ihr euch sicher vorstellen, wie groß die Begeisterung bei den Beteiligten ist.

Daher möchte ich gerne ein System aufbauen, in dem ich die Kontrolle über die Abläufe habe.

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 bob

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • R5
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #11 am: 14.02.03 - 21:51:39 »
Hi eknori,

ich hab da eine Lösung  ;)

Wie schaut dies aus Sicht des Anwenders aus:
Man gibt die Daten ein (Anfangszeit, Endzeit, Datum), und klickt auf "Speichern".
Wenn es dann in dem Zeitraum bereits ein Dok gibt kommt eine Fehlermeldung inkl. des Datums und der Uhrzeit, bei der es die Fehlermeldung gibt.


Leider ist mir vorhin die CPU + Motherboard meines Hauptrechner abgeschmiert, auf der die DB liegt. Ich arbeite aktuell mit einem Notebook, auf dem bis auf einen Browser keine Daten drauf sind :-(

D.h. es wird noch ein paar Tage dauern, bis ich überhaupt weiß was für ein Motherboard und CPU ich mir besorge und dann erst bestelle......

Aber wenn Du Dich 1-2 Wochen geduldest kommt die Lösung! (kein Fake!)

Afaik holt sich das Skript die Daten aus einer Ansicht, in der sich die Spalten "Jahr" "Monat" "Tag" "Stunden" und "Minuten" befinden.

Das Teil hat aber etliche Zeilen (ist nicht von mir!) aber arbeitet 1a.

Bob


Offline Luki

  • Frischling
  • *
  • Beiträge: 7
  • Ich liebe dieses Forum!
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #12 am: 17.02.03 - 10:02:41 »
Ich habe in ATNOTES.de den Beitrag über die Datenbank 'reservierung' gelesen.

Ich habe ein ähnliches Problem und wäre sehr an der DB interessiert.
Leider kann ich bei uns das eingestellte ZIP-Format nicht downloaden.

Könnte man die DB evtl. als .nsf in das Forum stellen

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #13 am: 17.02.03 - 10:48:01 »

hier die DB im nsf - Format

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:Terminüberschneidungen bei Raumbuchungen.
« Antwort #14 am: 28.02.03 - 14:56:10 »
hm..eknori, ich werde mich jetzt am WE an Deine Ressourcen Kiste dranmachen und versuchen einzubauen, daß man

- gleichzeitig Raum und Ressource bebuchen kann
- dabei bei allen Ressourcen die Freie Zeit checkt (aber nicht mit der R5 Busytime Systematik wahrscheinlich - da zu unzuverlässig - , werds aber parallel unter R6 mit dem Planer und der Busytime dann machen)
- öhm..ja , halt ein bißerl die Ansichten verändern
- Formeln würde ich eher weniger zum Überschneidungscheck verwenden (weil Du irgendwas damit machen wolltest, weiß zwar nicht warum, aber egal... :D)
- und die Wiederholungsproblematik natürlich auch berücksichtigen

Wenn Du magst, call mich mal am WE an (Abends).
« Letzte Änderung: 28.02.03 - 14:58:15 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 eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #15 am: 11.03.03 - 11:49:49 »
So, der guten Ordnung halber hier der Code für den CHECK

Sub Click(Source As Button)
   Dim session As New NotesSession      
   Dim db As NotesDatabase              
   Dim view As NotesView         
   Dim doc As NotesDocument            
   Dim workspace As New NotesUIWorkspace
   Dim dc As NotesDocumentCollection
   Set db = session.CurrentDatabase   
   Set View = db.GetView ( "($BUSYTIME)" )
   Dim uidoc As NotesUIDocument   
   Set uidoc = workspace.CurrentDocument 'Look at the current document on the screen
   Dim dtimefromNEU As New NotesDateTime ( Cstr ( uidoc.FieldGetText ( "StartDatumZeit" ) ) )
   Dim dtimetoNEU As New NotesDateTime ( Cstr ( uidoc.FieldGetText ( "EndDatumZeit" ) ) )
   DOCUID$ = uidoc.FieldGetText ( "ID" )
   
   Set dc = view.GetAllDocumentsByKey( uidoc.FieldGetText( "co_Resource" ) )
   
   For i% = 1 To dc.Count ' Alle docs in der collection durchlaufen
      Set doc = dc.GetNthDocument ( i% )   ' erstes doc aus collection holen
      If doc.ID(0) <> DOCUID$Then ' gefundenes doc ist nicht uidoc
         Dim dtimefromALT As New NotesDateTime ( Cstr ( doc.StartDatumZeit(0) ) )
         Dim dtimetoALT As New NotesDateTime ( Cstr ( doc.EndDatumZeit(0) ) )
         
         If dtimefromNEU.TimeDifference ( dtimetoALT ) > 0 Or dtimetoNEU.TimeDifference ( dtimefromALT ) < 0 Then
            flag% = 0 ' keine überschneidung
         Else
            flag% = 1
            Goto NotAvailable
         End If
         
      End If
   Next
   Exit Sub
NotAvailable:
   Msgbox "NotAvailable"
End Sub

Die Ansicht ($BUSYTIME) enthält in der ersten Spalte aufsteigend sortiert den Namen der Resource.

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:Terminüberschneidungen bei Raumbuchungen.
« Antwort #16 am: 11.03.03 - 12:10:44 »
habe es nahezu ebenso gelöst..

bei mir kommt noch dazu, daß ich mittlerweile widerholende Termine verarbeite und dabei mehrfach vorhandene, zu reservierende Ressourcen/Räume im aktuellen Termindoc auf mögliche Terminüberschneidungen gechecked und einzeln reported werden müssen. Daher ist mein Code noch etwas länger geworden. Wenn ich das Teil fertig habe, werde ich es hier posten...momentan ist er noch sehr unsauber (keine explizite Deklaration, keine vernünftigen Variablen Namen, etc...unnötige, doppelte Intialisierungen von Objekten, etc...).

Erschwerend kommt hinzu, daß man tagesüberschreitend ganztägige Termine eingeben kann, wobei die EndZeit kleiner der Startzeit sein kann (klar, heute Auto um 12:00 Uhr bis übermorgen ausgeliehen, Rückgabe um 09:00 Uhr)...dabei werden repetierende Einzeltermine angelegt beim Abspeichern und der letzte Tag mit der EndZeit 09:00 Uhr in dem Beispiel.

Und, um es noch etwas einfacher zu machen ;D...*grins....gut schwarzen Humor zu haben* dass man Serientermine verändern kann - natürlich muß dann erneut ein Terminkollisionscheck ausgeführt werden - und das System den User fragt "wollen sie den Termin löschen, alle löschen, alle Serien Termine in der Zukunft entsprechend anpassen, alle Serien Termine in der Vergangenheit..., oder nur diesen anpassen?"  :P :P :P

*bin schon am Singen:

Mein Lotus Notes fährt 210, schwupp, IBM hat's nicht geseh'n,
das macht Spaß! Ich geb' Gas, ich geb' Gas!
Will nicht spar'n, will nicht vernünftig sein,
bau nur das beste rein, ich mach' Spaß!
Ich geb' Gas ich geb' Gas! - Ich will Spaß, ich will Spaß!
Ich will Spaß ich will Spaß! Ich geb' Gas, ich geb' Gas!
Ich will Spaß, ich will Spaß!
Ich schubs die Templates aus dem Verkehr, ich jag'die Formeln vor mir her,
ich mach' Spaß! Ich mach' Spaß, ich mach' Spaß!

Und kost'der Mist auch viele Müh, scheiß egal, es wird schon
geh'n,
ich will coden! Ich will jodln, ich will johln.
Ich will Spaß, ich will Spaß! Ich will Spaß, ich will Spaß!
Ich geb' Gas, ich geb' Gas! Ich will Spaß, ich will Spaß!

IBM, Microsoft, spürst du mich?
Heut'nacht komm ich über dich - das macht Spaß!
Das macht Spaß, das macht Spaß ~
Der Ozzie ist mein bester Freund, hui wenn ich komm', wie der
sich freut
er braucht Spaß! Er hat Spaß, er hat Spaß

Wir wollh Spaß, wollen Spaß! Wir woll'n Spaß, wollen Spaß!
Wir geb'n Gas, geben Gas! Wir woll'n Spaß, wollen Spaß!
Wir mach'n Spaß, machen Spaß! Wir geb'n Gas, geben Gas! . . .  *

macht Notes eigentlich plemplem?  :o :o
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 eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #17 am: 11.03.03 - 12:15:20 »
in Anlehnung eines "Hits von einem gewissen Dieter B. aus H:

Take Notes today
everything is possible

 ;D ;D
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:Terminüberschneidungen bei Raumbuchungen.
« Antwort #18 am: 11.03.03 - 12:17:08 »
yep... ;D ;D
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 Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Terminüberschneidungen bei Raumbuchungen.
« Antwort #19 am: 11.03.03 - 12:18:15 »
@Rob

Ich wußte gar nicht, dass du so toll texten und singen kannst.   ;D ;D

Wenn kommt denn deine erste Platte ?
Und wann der Auftritt beim Grand Prix ?
 ;D ;D


Aber Spaß beiseite:

Klingt gut mit den tagesüberschreitenden Terminen. Bin sehr am Code interessiert.

Axel
« Letzte Änderung: 11.03.03 - 12:20:49 von Axel »
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz