Domino 9 und frühere Versionen > Entwicklung
Queryopen
khing:
Hallo,
ich habe über Notes ein spezielles Diskussionsforum entwickelt. Nun wollte ich per LS unterbinden, dass bei einem geschlossenen Hauptthema noch eine Antworten erstellt werden kann. Leider bekomme ich bei der Erstellung einer Antwort kein "Source" im Queryopen geliefert. Hat jemand ein Tipp, wie ich das trotzdem vor dem Erstellen des Dokuments abfangen kann.
Quelltext:
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim db As NotesDatabase
Dim session As New NotesSession
Dim doc As NotesDocument
Dim parentdoc As NotesDocument
Dim tmp
Set db = session.CurrentDatabase
Set doc = Source.Document 'aktuelles Antwortdokument
Set parentdoc = db.GetDocumentByUNID(doc.ParentDocumentUNID) '
tmp = parentdoc.GetItemValue("NG_Status" )
If Isnewdoc=True Then
If tmp(0) = "Aktuelles Thema" Then
Continue = True
Else
Messagebox "Diese Diskussion ist geschlossen. Eine neue Antwort zu erstellen, ist nicht mehr möglich.",,"Abbruch"
Continue = False
End If
End If
End Sub
Danke im voraus.
Gruß Kristian
Driri:
--- Zitat ---Set doc = Source.Document 'aktuelles Antwortdokument
--- Ende Zitat ---
Das funktioniert nicht, wenn es ein neues Dokument ist, denn das NotesDocument ist erst nach dem Speichern verfügbar.
Eine Alternative, die mir spontan einfällt, wäre, in den Aktionen die Formel zu ändern. Ich vermute mal, Du hast in den Views/Forms eine Aktion mit @Command([Compose]).
Dann könntest Du dort einfach mit
@If(@Contains(NG_Status; "Aktuelles Thema"); @Command([Compose]; ""); @Return("Fehlermeldung"))
arbeiten.
Das ist allerdings keine 100%ige Sicherheit, denn jeder User, der sich z.B. ein SmartIcon bauen kann, kann das umgehen.
Gandhi:
Warum dann Query und nicht Postopen?
khing:
@Driri
Das ist eine gute Idee. Da muss ich noch die Aktionen der Maske etwas anpassen und dann mit "Verstecken, wenn Formel war" die Maske ansich anpassen. Wäre auch eine Lösung. :)
@Gandhi
Da bekomme ich mit gleichen Quelltext bei Set parentdoc = db.GetDocumentByUNID(doc.ParentDocumentUNID) die Fehlermeldung "Invalid universal id". Also ist das Dokument in diesem Stadium der DB auch noch nicht richtig bekannt.
Von der Sache her, brauche ich ja nur den Status oder die ID des übergeordneten Dokuments auf welches ich antworte und alles würde klappen. Das Hauptdokument muss doch beim öffnen des Antwortdokuments bekannt sein ($Ref oder so), sonst wäre es doch später auch nicht bekannt. ???
Gruß Kristian
Driri:
Das kann auch im Postopen nicht funktionieren, da auch dann noch kein Document für das neue Antwortdokument existiert. Einziger Workaround wäre dann, man speichert das neue Dokument einmal, holt dich dann das Background-Document und prüft ab. Dann muß man natürlich ggf. nach der Prüfung das Background-Document wieder löschen.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln