Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: lucy123 am 21.01.07 - 19:05:50
-
Hallo,
möchte in einem Kalender folgende Funktion durchführen:
wenn 7 Einträge gemacht wurden, soll eine MsgBox erscheinen mit dem Hinweis: "Nicht mehr als 7 Einträge bzw. nicht mehr als 5 Einträge".
Gruß Willi
-
Das geht mit Script:
Skizze:
Im Queryopen der Maske:
'view = NotesView Objekt für Deine Ansicht
'.... diverse Dims....
Anzahl der vorhandenen Einträge ermitteln:
Set nvec = view.AllEntries
count = notesViewEntryCollection.Count
If count > 5 then
msgbox "Bitte nicht mehr als 5 Einträge",0+16,"Abbruch"
Continue = False
Exit Sub
End if
Andreas
-
Das sollte besser ins QuerySave - sonst kann man bestehende Kalendereinträge auch nicht mehr ansehen oder ändern.
Bernhard
-
Hallo,
erst mal vielen Dank für die schnelle Antwort. Leider klappt es noch nicht so, liegt aber sicher an meiner Problembeschreibung. Es sollen in einem Kalender pro Tag nur 7 Einträge gemacht werden und freitags nur 5 Einträge.
Gruß W
-
Du musst im QuerySave eine Suche einbauen, die beim Speichern alle Dokumente mit dem entsprechenden Datum ermittelt. Wenn du dass mit NotesDatabase.Search machst, erhälst du als Ergebnis eine NotesDocumentCollection. Mit NotesDocumentcollection.Count kannst du dann die Anzahl der Dokument ermitteln. Mit der Script-Funktion Weekday ermittelst du den Wochentag und mit diesen Infos kannst du dann die Prüfung durchführen.
Schau die mal zu den einzelnen Methoden und Funktionen die Designer-Hilfe an. Dort findest du einiges an Zusatzinfos und Beispiele.
Axel
-
Hallo zusammen, das Script klappt soweit, soll aber auf den einzelnen Tag zugreifen. So wie es unten beschrieben ist macht es die DB nach 5 Einträgen komplett zu. Ich möchte das aber auf die einzelnen Tage setzen, wobei Mo-Do 7 Einträge zulässig sind und Fr nur 5 Einträge. Gibt es eine Lösung für mein Problem ? Bin leider nicht so bewandert in LS. Gruß Willi
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim vc As NotesViewEntryCollection
Set db = session.CurrentDatabase
Set view = db.GetView("2Kalender")
Set vc = view.GetAllEntriesByKey("#")
Set NotesViewEntryCollection = view.AllEntries
count = NotesViewEntryCollection.Count
If count >5 Then
Msgbox "Bitte nicht mehr als 5 Einträge",0+16,"Abbruch"
continue = False
Exit Sub
End If
-
So kann das nichts werden. Dir fehlt der Datumsbezug.
Hier mal ein ungetesteter Vorschlag:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim strSearch As String
Dim collection As NotesDocumentCollection
Set db = session.CurrentDatabase
'Suche nach allen Dokumenten mit dem entsprechenden Datum
strSearch = {FeldmitDatum = "} & Source.FieldGetText("FeldmitDatum") & {"}
Set collection = db.Search(strSearch, Nothing, 0)
count = collection.Count
'Abfrage ob Wochentag = Freitag
Select Weekday(Source.FieldGetText("FeldmitDatum"))
Case 2 To 5 'Montag - Donnerstag
If count > 7 Then
Msgbox "Bitte nicht mehr als 5 Einträge",0+16,"Abbruch"
continue = False
Exit Sub
End If
Case 6
If count > 5 Then
Msgbox "Bitte nicht mehr als 7 Einträge",0+16,"Abbruch"
continue = False
Exit Sub
End If
Case 1, 7
Msgbox "Juchu. Wochenende",0+16,"Abbruch"
End Select
Axel
-
Hallo Axel,
klappt leider nicht. Ein Fehler war evtl. Select Case Weekday.... Er zählt nicht durch. Trotzdem Danke
Gruß Willi
-
Was klappt denn genau nicht? Findet er keine weiteren Dokumente, auch wenn's welche gibt?
Was sagt denn der Debugger?
Axel
-
Hallo Axel,
es kommt keine Fehlermeldung, es kommt aber auch kein Hinweis, wenn die Datensatzanzahl des jeweiligen Tages überschritten wird. Ich dachte mir, wenn ich z.b. auf den 26.01. (Freitag) mehr als 5 Datensätze eingebe, das er dann beim 6. Datensatz sagt: "Nix geht mehr" oder das er den Hinweis gibt und den Datensatz dann trotzdem übernimmt.
Die Maske, in der ich das benötige heißt "Eingabe" und das Datumfeld dieser Maske heißt "HerzDat".
Gruß Willi
-
Ich habe gerade mal ein bisschen gespielt. Der Aufbau des Suchstrings war falsch.
Versuch's mal damit:
strSearch = {HerzDat=[} & Source.FieldGetText("HerzDat") & {]}
Axel
-
Hallo Axel, es funzt !! Vielen Dank für die Hilfe - auch an die anderen Helfer.
Bis demnächst
Gruß Willi