Domino 9 und frühere Versionen > Entwicklung
Hauptdokumente ohne Antwortdokumente
eknori:
--- Zitat von: TMC am 12.12.03 - 21:02:24 ---jip, aber würde dies nicht etwas die Performance durcheinanderschmeißen bei z.B. 100.000 Docs?
--- Ende Zitat ---
k.A. da ich nicht weiss, wie die entgültige Funktion in Assembler aussieht.
Aber deine Idee mit Flag setzen oder so ist gut. Sollte sich auch in diesem Fall realisieren lassen, bevor man nach einer Lösung sucht, die es gar nicht gibt
Semeaphoros:
Achtung TMC, da hast Du was falsch gelesen:
--- Zitat ---2) diese Hauptdoks sollen nur angezeigt werden wenn ein Responsedoc existiert
--- Ende Zitat ---
Genau umgekehrt, er will sie haben, wenn keine Responsedokumente exisitieren.
Rak:
Hallo,
der Vorschlag von Glombi
--- Zitat ---Du müsstet im Hauptdokument ein Feld haben, in dem gespeichert wird, ob es Antworten gibt.
--- Ende Zitat ---
klinkt ja ganz gut.
@TCM
--- Zitat ---Das wiederum bedeutet, dass Du z.B. über einen (einmaligen) Script-Agenten aber im Hauptdokument ein Feld wie 'ExistingAnswer' mit "1" oder so füllen könntest.
--- Ende Zitat ---
Wie kann denn so ein Agent aussehen? Habe von Script keine Ahnung.
Beim löschen des Antwortdokuments müsste dann das Feld wieder geändert werden.
Kommt mann denn nicht über $Ref und DocUniqueID an die Sache ran?
Danke für die Antworten!
Glombi:
Folgendes muss berücksichtigt werden:
1) Ersteller von Antworten haben i.d.R. kein Bearbeitenrecht für das Hauptdokument.
2) Ersteller des Hauptdokuments dürfen i.d.R. die Antworten nicht bearbeiten.
Ergo: Es muss ein servergestützter Agent sein (periodisch)
Am besten ist, Du machst eine Ansicht mit der Formel
SELECT !@IsResponseDoc
Dann in Script
dim session as NotesSession
dim db as NotesDatabase
dim view as NotesView
dim doc as NotesDocument
dim dc as NotesDocumentCollection
dim saveDoc as Integer
set session = New NotesSession
set db = session.CurrentDatabase
set view = db.GetView("Name der Ansicht - s.o.")
set doc = view.GetFirstDocument
while not (doc is nothing)
saveDoc = false
set dc = doc.Responses
if dc.Count > 0 then
if doc.DocHasResponse(0) <> "1" then
doc.DocHasResponse = "1"
saveDoc = true
else
if doc.DocHasResponse(0) <> "0" then
doc.DocHasResponse = "0"
saveDoc = true
end if
end if
if saveDoc then
call doc.save(false,true,true)
end if
set doc = view.GetNextDocument(doc)
wend
Nachteil: Hauptdokumente werden vom Server ggf. geändert => Ungelesen für User + Gefahr von Replizierkonflikten
Andreas
Glombi:
Um das ganze zu initialisieren, baust Du das Feld DocHasResponse (Textfeld, Berechnet beim Anlegen) in die Maske für das Hauptdokument ein und lässt einmal folgenden Agenten laufen:
dim session as NotesSession
dim db as NotesDatabase
dim view as NotesView
dim doc as NotesDocument
dim dc as NotesDocumentCollection
dim saveDoc as Integer
set session = New NotesSession
set db = session.CurrentDatabase
set view = db.GetView("Name der Ansicht - s.o.")
set doc = view.GetFirstDocument
while not (doc is nothing)
saveDoc = true
set dc = doc.Responses
if dc.Count > 0 then
doc.DocHasResponse = "1"
else
doc.DocHasResponse = "0"
end if
end if
if saveDoc then
call doc.save(false,true,true)
end if
set doc = view.GetNextDocument(doc)
wend
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln