Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Tina am 13.01.04 - 11:06:45
-
Ich hab grad erst mit Lotus Script angefangen und daher tauchen bei mir n paar Probleme auf.
Ich habe eine Raumreservieung bisher nur in Formelsparche erstellt. Nun möchte ich wenn eine neue Reservierung gespeichert werden soll (also im Querysave) nachprüfen, ob der gewählte Raum zum gewählten Datum frei ist. Wenn dies nicht der Fall ist, soll eine Fehlermeldung ausgegeben werden.
Danke schonmal für eure Mühe Tina.
-
Ich hab versucht es so zu lösen, aber es klappt nicht. Weder Fehlermeldung noch das was ich mir erhofft hatte:
Dim DatumList As notesdocumentcollection
Dim Datum As Variant
Dim RaumDatum As Variant
Dim doc As notesdocument
On Error Goto ErrHandler
'rpvwRaum ist eine Ansicht sortiert und kategorisiert nach reservierten
'Räumen
'rpRaum ist das Feld in der Maske, wo der zu reservierende Raum
'eingetragen wird
Set DatumList = rpvwRaum.Getalldocumentsbykey(rpRaum)
Set doc = DatumList.GetFirstDocument 'erstes Dokument der dc
'Hier wird das eingegebene Datum mit dem Datum des aktuellen
'Dokuments verglichen
While Not (doc Is Nothing)
Datum = CurrentDocument.Document.GetItemValue("Buchungsdatum")
RaumDatum = rpBuchDatum.value
If RaumDatum(0) = Datum(0) Then
'Datum ist gleich, also ist Raum bereits reserviert
Messagebox "Der Raum ist bereits reserviert!"
Exit Sub
End If
'nächstes Dokument der dc
Set doc = DatumList.GetNextDocument(doc)
Wend
Ende:
Exit Sub
ErrHandler:
'Vorläufige Fehlermeldung, muss noch geändert werden
REM Messagebox "Ein Fehler ist aufgetreten!"
Resume Ende
End Sub
-
@tina,
das zu lösen geht nicht "mal eben so" :'(
ich persönlich würde die sache per script im querysave lösen. dazu würde ich mir eine ansicht bauen, in der 1. spalte nach raum sortiert. im querysave alle docs mit dem entsprechendem raum durchgehen und datum prüfen. schwierig wird m.e. die überprüfung der reservierung über mehrere tage.
vielleicht geht das auch alles viel viel einfacher, nur hab ich momentan auf die schnelle keine andere idee :'(
hoffe, dir aber trotzdem ein paar denkanstösse gegeben zu haben.
tipp : versuche doch mal, über die suche etwas zu finden oder in der sandbox.
-
Warum nutzt du nicht die in Domino integrierte Resourcenreservierung? Wozu das Rad neu erfinden?
Ansonsten gibt es bei ata auf der Homepage eine DB mit umfangreichen Datumsfunktionen...
http://www.anton-tauscher.de (http://www.anton-tauscher.de)
-
... da warst du um ein paar sekunden schneller...
was sagt der debugger ?
-
Der Debugger springt schon bei
Set DatumList = rpvwRaum.Getalldocumentsbykey(rpRaum)
in den ErrorHandler.
Wahrscheinlich ist das meiste (wenn nicht sogar alles) hieran falsch, aber irgendwie muss man ja anfangen.
Wo finde ich denn diese Resourcenreservierung??
-
das teil heisst RESSOURCE.NSF und sollte auf dem server liegen.
-
Die Ressourcereservierung ist eine Standardschablone, die bei jedem Domino-Server mit zum Lieferumfang gehörte...
-
Danke für den Tipp, aber ich fürchte, dass mir die Schablone nicht zur Verfügung steht. :'(
-
Wieso? Arbeitest du nur an einem Client, ohne einen Server?
-
Habs gefunden, darfs aber nicht öffnen! Mir fehlen die Zugriffsrechte!
-
schwierig wird m.e. die überprüfung der reservierung über mehrere tage.
Ich brauch das ganze erstmal für einen Tag. Es sind vorerst keine Reservierungen über mehrere Tage vorgesehen!
-
Habs gefunden, darfs aber nicht öffnen! Mir fehlen die Zugriffsrechte!
Dann solltest du dir die erstmal besorgen!
-
Das geht nicht so einfach! Is alles ziemlich kompliziert hier. :'(
Werds wohl so versuchen müssen! :(
-
schau mal hier rein:
http://www.atnotes.de/index.php?board=7;action=display;threadid=6094;start=0 (http://www.atnotes.de/index.php?board=7;action=display;threadid=6094;start=0)
-
Danke! ;)
Werd mir das aber leider erst heute abend zu Hause anschauen können. Komm von der Firma aus nicht dran. :'(
-
... was ist das denn für eine firma, wo mann/frau nix darf ;D ;D ;D
-
Gut ne?! :-\ Erleichtert das Arbeiten ungemein! ::) ::)
Muss mal schauen, ob es nich doch noch nen Weg gibt da dran zu kommen!
14.01.04 13:15:
Hab jetzt da noch n bisschen rumgewurstelt und bekommen jetzt zumindest raus, wenn ein Raum zu nem Datum besetzt ist. Und zwar so:
Dim db As notesdatabase
Dim session As New notessession
Dim dc As notesdocumentcollection
Dim Datum As Variant
Dim RaumDatum As Variant
Dim doc As notesdocument
Dim view As notesview
On Error Goto ErrHandler
Set db = session.currentdatabase
Set view = db.getView("rpvwRaum")
Set dc = view.Getalldocumentsbykey(rpRaum,True)
'Überprüfung, ob der Raum überhaupt schonmal gebucht wurde
If dc.count = 0 Then
'Der Raum ist an dem Datum auf jeden Fall frei
Goto Ende
End If
'Reduzierung der NotesDocumentCollection auf den gewählten Raum mit dem angegebenen Datum
Call dc.ftsearch(rpBuchDatum, 0)
'Prüfung, ob das angegebene Datum in der Collection vorhanden ist
If dc.count > 0 Then
'Dies ist der Fall, also ist der Raum an dem Datum bereits reserviert
Messagebox "Der gewählte Raum ist zu dem angegebenen Datum bereits reserviert."
End If
Ende:
Exit Sub
ErrHandler:
'Vorläufige Fehlermeldung, muss noch geändert werden
Messagebox "Ein Fehler ist aufgetreten!"
Resume Ende
End Sub
-
Ich habs geschafft! ;D ;D ;D
Hier meine Lösung (dachte euch interessierts veilleicht ;)):
Sub Querysave(Source As Notesuidocument, Continue As Variant)
%REM
Überprüfen, ob der ausgewählte Raum zum gewählten Zeitraum noch zur Verfügung steht
%END REM
Dim session As New notessession
Dim db As notesdatabase
Dim dc As notesdocumentcollection
Dim view As notesview
Dim doc As notesdocument
On Error Goto ErrHandler
Set dateTime = New NotesDateTime( "05/20/95" )
Set db = session.currentdatabase
temp = Source.fieldgettext("rpRaum")
temp2 = Source.fieldgettext("rpBuchDatum")
searchFormula$ = "Form = ""rpfrmBuchung"" & rpRaum= """& temp &""" & rpBuchDatum = """ & temp2 & """"
Set dc = db.Search(searchFormula$,dateTime,0)
'Überprüfung, ob der Raum überhaupt schonmal gebucht wurde
If dc.count = 0 Then
'Der Raum ist auf jeden Fall frei
Else
'Reduzierung der NotesDocumentCollection auf den gewählten Raum mit dem angegebenen Datum
Call dc.ftsearch(rpBuchDatum, 0)
'Prüfung, ob das angegebene Datum in der Collection vorhanden ist
If dc.count > 0 Then
'Der Raum ist an dem Datum bereits reserviert
Messagebox "Der gewählte Raum ist zu dem angegebenen Datum bereits reserviert."
Continue = False 'Verhindert das Speichern
End If
End If
Ende:
Exit Sub
ErrHandler:
'Vorläufige Fehlermeldung, muss noch geändert werden
Messagebox "Ein Fehler ist aufgetreten!"
Resume Ende
End Sub
-
gut gemacht :-*
-
Danke! Werd mal schauen, ob ich das auch noch für mehrere Tage hinbekomme!
-
Hallöchen!
Jetzt hänge ich bei dem Problem mit Buchungen über mehrere Tage fest! :'(
Könnt ihr mir vielleicht helfen? ???
-
Habs mal so versucht, aber es klappt nicht. :'( Hab ich da irgendwo nen Denkfehler drin ??? ??? ??? ???
Dies Stück steht im ELSE-Teil einer IF-Abfrage:
'Reservierung über mehrere Tage
temp = Source.fieldgettext("rpRaum")
temp2 = Source.fieldgettext("rpBuchDatum")
temp3 = Source.fieldgettext("rpBuchDatumBis")
searchFormula$ = "Form = ""rpfrmBuchung"" & rpRaum= """& temp &""" & rpBuchDatum >= """ & temp2 & """ & rpBuchDatum <= """ & temp3 & """ | rpBuchDatumBis >= """ & temp2 & """ & rpBuchDatumBis <= """ & temp3 & """"
Set dc = db.Search(searchFormula$,dateTime,0)
Do
Set dctemp = db.Search(searchFormula$,dateTime,0)
Set aktdoc = dctemp.getfirstdocument
If aktdoc Is Nothing Then
Exit Do
End If
Call dc.addDocument(aktdoc)
Loop
'Überprüfung, ob der Raum überhaupt schonmal gebucht wurde
If dc.count = 0 Then
'Der Raum ist auf jeden Fall frei
Else
'Reduzierung der NotesDocumentCollection auf den gewählten Raum mit dem angegebenen Datum
Call dc.ftsearch(rpBuchDatum, 0)
'Prüfung, ob das angegebene Datum in der Collection vorhanden ist
If dc.count > 0 Then
'Der Raum ist an dem Datum bereits reserviert
Messagebox "Der gewählte Raum ist zu dem angegebenen Zeitraum an mindestens einem Tag bereits reserviert."
Continue = False 'Verhindert das Speichern
End If
End If
-
@tina,
häng doch mal die db ran. dann geht's leichter ;)
-
Kann ich nicht! Geht hier leider nicht sorry! Kann ich sonst irgendwas machen??
-
Kann ich nicht! Geht hier leider nicht sorry! Kann ich sonst irgendwas machen??
z. B. sagen, was genau denn nicht klappt.
-
Wenn ich das wüsste wäre mir geholfen!
Also ich habe das Skript (Buchung für einen Tag) in den Querysave gepackt. Da hat auch alles super funktioniert. Das Problem ist jetzt ich habe versucht auch eine Buchung über mehrere Tage möglich zu machen. Dies wollte ich duch eine If-Abfrage erledigen, die einfach nachschaut, ob das "Bis-Datum" leer ist. Wenn es leer ist kann er einfach die Prüfung für ein Datum machen, wenn nicht muss er den ELSE-Teil ausführen und ein Prüfung für mehrere Tage machen.
Meine Probleme sind jetzt:
1. Das Speichern über einen Zeitraum tuts nich
2. Das Speichern für ein Datum tuts auch nich mehr! :'(
Beim 2.Punkt ist das Problem in der NotesDocumentCollection zu suchen oder in der Datenbank an sich, da er einfach keinen Eintrag mit dem zu reservierenden Raum zu dem bestimmten Datum findet, obwohl eins da ist.
-
Ich habs geschafft! ;D Zumindest die Buchung für einen Tag wieder herzustellen. Bliebe das Problem mit dem über mehrere Tage!
-
Habs am Laufen!
Danke für eure Hilfe! ;)