Domino 9 und frühere Versionen > Entwicklung

Rahmengrupen-Manager IGNORE Rückgabecode

<< < (2/2)

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