Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Centaury am 04.02.03 - 10:54:37
-
Hallo allerseits!
Wie kann ich nur die Hauptdokumente anzeigen, zu denen auch Antworten vorhanden sind? @DocDescendants != "0" geht leider nicht...
Danke schonmal
CU
Merlin
-
... evtl. @doclevel ??? ??? ???
-
... wenn Abkömmlinge verfügbar sind, dann gibt es ein Feld $REF - bezieh dich doch darauf...
ata
-
Also $REF != "" ?
-
Nein, mit @IsAvailable($Ref)
-
Eventuell eine anderer Weg bzw eine Alternative falls die vorgenannten Wege.
also :
1.
Beim erstellen des Antwortdokus speicherst Du in der Hauptdokumaske in einem Feld
einen "Marker" ab.
2.
Jetzt gibt es also Hauptdokus mit und ohne "Marker" mit = es existiert ein Antwortdoku
3. In der entsprechenden Ansicht
Select form="hauptdoku"|form="Antwortdoku&Feldname_marker="z.B.1"
Gruß
Mike
-
@NotesTime
... müßte das nicht @Available("$REF") heißen?...
ata
-
@ata: nee, lt. notes hilfe feldname ohne "dingens"
bernd
-
... dann nimmt er den "$"-Dollar vermutlich übel...
ata
-
Also bei @IsAvailable ($REF) zeigt er kein Dokument und bei @IsAvailable ("$REF") alle... ???
-
... hab grad "Matsch" im Kopf - später noch mal...
ata
-
morewind hat die richtige Antwort bereits gegeben.
Es gibt mW keine andere "eingebaute" Notes-Methodik der View zu sagen, nur die Hauptdocs anzuzeigen, die auch Responses haben.
Es sei denn, man "stempelt" das Hauptdoc bei Ersterstellung eines Response Docs ab (bzw. nimmt den Stempel raus, wenn das letzte Response Doc deleted ist..also braucht man im Hauptdoc einen Counter, 0=no responses, >0=n responses)
"Select" Statement dazu siehe morewind
-
Das Problem ist, dass die Datenbank schon Doks enthält und im Einsatz ist...
-
das ict doch kein Problem oder ? einen counter mit einem Agent einfügen..... ich nehme an du bist Administrator auf die db
cu
-
OK und was ist, wenn ich das Antwortdokument wieder lösche, wie bekomme ich den Zähler wieder runter? *Brettvormkopfhab*
-
es gibt ein Datenbank weites Script, nennt sich QueryDocumentDelete...dort wird das Ereignis "Löschen" als Event getriggered. Das ist die passende Stelle für den Minus Counter.
-
Ist das Dokument, das gelöscht wird dann ws.CurrentDocument? Oder wie komme ich da ran? Ich brauche ja das ParentDoc.
-
das Prinzip ist super einfach, wenn Du es einmal verwendet hast:
Zentrale Punkt ist die Verwendung der Help...
hörst Du einen Begriff wie "QueryDocumentDelete" gehst Du in die Designer Help DB und öffnest die Ansicht "Index"...gib dort einfach den Begriff ein und Notes springt zu dem Begriff insofern es ihn findet. Dann einfach die zugehörigen Docs aufklappen und immer dabei auf BEISPIELE achten. So findet man sich sehr schnell und simpel in der hervorragenden Help zurecht. Ich kann es nicht genug betonen, wie wichtig die Help DB ist, man vergisst es komischerweise aber immer wieder, in dieses geile Teil reinzuschauen. ;) ;) ;)
in dem Falle:
This example tracks the number of document deletions that occur while a database is open.
(Declarations)
Dim deleteCount As Integer
Sub Postopen(Source As Notesuidatabase)
deleteCount = 0
End Sub
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
If Continue Then
deleteCount = deleteCount + Source.Documents.Count
End If
End Sub
Sub Querydocumentundelete(Source As Notesuidatabase, Continue As Variant)
If Continue Then
deleteCount = deleteCount - Source.Documents.Count
End If
End Sub
Sub Postdocumentdelete(Source As Notesuidatabase)
Messagebox Source.Documents.Count _
& " deleted or marked for deletion"
End Sub
Sub Queryclose(Source As Notesuidatabase, Continue As Variant)
Messagebox deleteCount & " documents deleted",, _
"Net deletions"
End Sub
-
Schön und gut, aber ich brauche ja genau das Document, das gelöscht wird und muss in dessen Parent ein Feld runterzählen...
Ich kenne und schätze die Hilfe übrigens... ;) Trotzdem danke nochmal!
-
Ah, jetzt verstehe ich glaube ich, was du meinst!
Du meinst, über die UIDB.Documents eine Collection erstellen und dann in allen Parents von den Docs in der col AnzahlAntworten - 1
-
richtig,
denn die zu löschenden Docs (können ja mehrere auf einmal sein!) bestimmt man über die Source.Documents.Count, bzw. sie sind dem Script damit bekannt. Nun nur noch pro Doc das Parent herausfinden und thats it. Insofern ist das Ansatz völlig korrekt.
-
Wat is dat denn??? Expanded Forum ??? ::) ;D
ata
Ist schon wieder normal - Screen war für gut 3000 Pixel breit...
ata
-
Ich will jetzt beim Erstellen einer Antwort im ParentDoc die Anzahl der Antworten + 1 setzen. Komisches Problem: Wenn das Dokument erstellt wird, ist IsResponse= False, ParentDocUID leer. Daher also auch keine Möglichkeit ans ParentDoc ranzukommen. Nach 1mal speichern geht's... ???
-
Keiner eine Idee, woran das liegen kann? Wenn ich eine Antwort gerade erstelle, ist sie für Notes anscheinend noch keine Antwort. Daher komme ich nicht ans ParentDoc!
-
... du hast das richtig erkannt, das Dokument hat erst Werte, wenn das Dokument gespeichert wurde...
ata
-
hi centaury,
habe mir zwar vorneweg nicht aalles durchgelesen, aber zu deiner letzten frage...
ich habe selbiges gelöst(hier mal eine anleitung ins unreine gesprochen):
- im postsave event deines antwortdocs das zugehörige hauptdoc suchen( über $ref oder sonstwie- ich übernehme im antwortdoc die unid des hauptdoc und baue mir da einen eigenen string zusammen)
- am besten mit einer eigens dafür erstellten ansicht(1. sortierte spalte nach der suchid für das hauptdoc)
- im hauptdoc das feld zahlantworten hochsetzen und speichern
tschö
-
Das Problem ist, dass ich ein Script nur dann ausführen will, wenn das Doc neu ist. Im PostSave bringt mir IsNew nicht viel, oder?
-
hi centaury,
das ist wohl wahr...
postsave bringt bei neuen docs nix!
wieso willst du denn die zahl der antworten im hauptdoc raufsetzen, wenn das doc noch nicht gespeichert ist?
(oder hab ich das falsch verstanden?)
denn dann müsstest du ja bei neuen docs, die nicht gespeichert werden auch wieder die antwortzahl runtersetzen´.
ich finde das dann etwas umständlich.
-
Wenn eine Antwort erstellt wird, soll im Hauptdokument beim Speichern ein Zähler +1 gesetzt werden. Wird eine Antwort gelöscht, soll der Zähler -1 gesetzt werden. Zweck siehe Topic...
-
hallo centaury,
wenn ich das richtig verstanden habe, ist das egal wie viele antworten du zu den hauptdocs hast(?).
ich weiss nich wie man hier zitiert, deshalb...
postsave bringt bei neuen docs nix! , aber...
du kannst den zähler im parentdoc erst hochsetzen, wenn das doc gespeichert ist.
deshalb erst speichern!
und alles andere nachher abfangen, das ist mein vorschlag.
tschö
-
"Zitieren" anklicken ;D
OK, mal sehen, wie ich das gebacken kriege... :-\
-
Verstehe ich nicht: Ich habe hier ein Dokument, bei dem wird doc.Responses.Count nicht wieder kleiner, wenn ich die Antwort lösche. Kann mir das jemand erklären? ???
-
Zitat:
ich habe selbiges gelöst(hier mal eine anleitung ins unreine gesprochen):
- im postsave event deines antwortdocs das zugehörige hauptdoc suchen( über $ref oder sonstwie- ich übernehme im antwortdoc die unid des hauptdoc und baue mir da einen eigenen string zusammen)
- am besten mit einer eigens dafür erstellten ansicht(1. sortierte spalte nach der suchid für das hauptdoc)
- im hauptdoc das feld zahlantworten hochsetzen und speichern
« Antwort #26 am: 12.02.03 - 11:50 » von Centaury
--------------------------------------------------------------------------------
Das Problem ist, dass ich ein Script nur dann ausführen will, wenn das Doc neu ist. Im PostSave bringt mir IsNew nicht viel, oder? "
Von da aus ist es nicht mehr weit. Wenn man im Postsave Event nicht auf IsNew zurückgreifen kann, macht man sich eben selbst eins, indem man im gerade gespeicherten Doc ein kleines Feld mit einem Wert - zB "YABADABADUU" - belegt, der nur beim ersten Male gesetzt wird. Bei allen Speichervorgängen wird abgecheckt, ob das Feld schon gesetzt ist. Wenn nein, dann starte Responsecounter Funktion, wenn ja, dann eben nicht. Das ist zum Hochzählen.
Beim Herunterzählen eben das QueryDocumentDelete
-
jau, so hab ich das gemeint, Rob.
aber es führen ja bekanntlich viele wege nach rom...
das hab ich jetz aber nich gesacht.
centaury, doc speichern und alles andere dann abfangen, dafür gibts ja die ereignisse.
tschö
-
Hmm...OK macht Sinn. Aber kann mir noch einer erklären, warum bei dem einen Dokument der doc.Responses.Count nicht wieder kleiner wird, wenn ich die Antwort lösche?
-
Alles klar, läuft!
Danke allerseits!!