Domino 9 und frühere Versionen > Entwicklung
Rahmengrupen-Manager IGNORE Rückgabecode
Glombi:
Hast Du in den Maskeneigenschaften den Rahmen definiert?
RKuehle:
@Bernhard
"funzt nicht" -> geht nicht, bringt nicht den erhofften Erfolg
Die Berliner haben manchmal eine komische Aussprache , ich weis.
Okay zum Thema / Worum gehts eigentlich:
- Ein typisches Frameset mit Navigator (links), Anzahl Einträge einer View(rechts oben) und der View selbst (rechts unten) ist geöffnet.
- Dokument wird in der View geöffnet
- In der Maske des Dokuments gibts einen Button mit dem eine Kopie des Dokuments erzeugt wird.
- dabei wird die Kopie erstmal gespeichert und dann in Editmode gesetzt.
- Die Kopie benutzt eine andere Maske, da hier die Aktion zum Speichern über modifiedsincesaved prüft ob Änderungen gemacht wurden. (Soll verhindern,dass "echte", unveränderte Kopien gespeichert werden)
- Wenn nicht geändert wurde sollte die Kopie per deletedocument gelöscht werden
Stand:
- Der Frame in dem sich die View befindet hatte keinen Namen (habe ich wohl geschludert ??? ) . Ist jetzt korrigiert, targetframe wird jetzt gesetzt.
- Erfolg: Die og. Meldung erscheint zwar nicht mehr, aber das Dokument bleibt im Frontend offen , im Windowtitle steht "(Gelöscht)....", in der View ist das Dokument als gelöscht markiert und es erscheint eine Fehlermeldung
"Document command not avaiable" (editmode ist definitiv auf false gesetzt)
- Exit Sub blieb ohne erkennbare Änderung
Inzwischen überlege ich die Löschung über einen Agenten zu machen, wie in dem og. Link empfohlen. Ödet mich zwar an, da man dazu erst wieder ein Dokument erzeugen muss um die NoteID an den Agenten zu übergeben :-X.
Dazu noch eine allgemeinere Frage :
Weis jemand ob es generelle Unterschiede zwischen den Methoden run und runonserver in der Agent class bzgl. Kommunikationsaufwand Client-Server gibt ? An dem ganzen Teil sollen bis zu 20 Nutzer parallel über eine recht dünne Anbindung (2 bis 6 MBit) arbeiten, da sollte man ja möglichst Traffic vermeiden.
So, das ist der Stand der Dinge. Bei neuen Erkenntnissen zum Thema melde ich mich wieder.
Bis die Tage !
Gruß RK
RKuehle:
Hallo Forum !
Ich habe das Problem lösen können. Letztlich musste wirklich ein Agent herhalten.
Hier der Code:
Button:
If Not uidoc.ModifiedSinceSaved Then
If ws.prompt(PROMPT_YESNO,"Original und Kopie sind gleich !","Kopie trotzdem speichern?") Then
Goto sichern
Else
If ws.prompt(PROMPT_YESNO,"Kopie !","Möchten Sie die Kopie korrigieren?") Then
Goto ende
Else
xuniversalid=uidoc.document.universalid <- Unid der aktuell geöffneten Kopie die in diesem Zweig gelöscht werden soll
Call uidoc.close
Set doc = New notesdocument(db) <- Parameterdokument des Agenten
doc.xuniversalid=xuniversalid <- Unid in das Dokument für den Agenten
Call doc.save(True,False)
Set a=db.getagent("DelDoc") <- Agent aufrufen, der die Kopie löscht
Call a.runonserver(doc.NoteID)
Set view =db.getview("Literatur") <- View aktualisieren
Call view.refresh
Goto ende
End If
End If
Else
Goto sichern
End If
sichern:
........bla bla verschiedene Aktionen zur Speicherung der Kopie
ende:
End Sub
Agent DelDoc / Manuell aus der Liste der Agenten / Alle Dokumente in der Datenbank
Sub initialize
Dim s As New notessession
Dim a As notesagent
Set a=s.currentagent
Dim db As notesdatabase
Dim doc As notesdocument <- Parameterdokument des Agenten
Dim doc2 As notesdocument <- Document welches gelöscht werden soll (die Kopie)
Set db=s.currentdatabase
Set doc=db.getdocumentbyid(a.parameterdocid)
Set doc2=db.getdocumentbyunid(doc.xuniversalid(0))
Call doc2.remove(True) <- Kopie löschen
Call doc.remove(True) <- Parameterdokument löschen
End Sub
Vielleicht hilfts ja jemanden !
Grüße RK
umi:
Und warum übergibst Du nicht direkt die NoteID des Dokuments, welches löschen willst?
call a.runonserver(uidoc.document.noteid) ?
RKuehle:
@umi
Ich mache das alles nur durch lesen,lesen,lesen. Habe nie ein Training auf LS oder @Formula gehabt / bekommen (Arbeitgeber ist einfach zu geizig :-: )
Also im Forum gelesen und da gabs die Frage nach dem Motto Parameterdokument erstellen und dem Agenten übergeben, der die Werte dann ausliest. Antwort war eindeutig ja.
Von daher habe ich's erstmal als einzige Lösung angenommen.
Deine Version würde wieder ein paar zeilen sparen. Ich probiers mal.
Danke für den Tipp.
grüße RK
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln