Domino 9 und frühere Versionen > Entwicklung

Queryopen

(1/2) > >>

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