Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: RKuehle am 22.10.06 - 18:10:21
-
Hallo Forum !
Die im Thema gezeigte Meldung erscheint bei folgendem Code. Das ganze ist als Aktion in einer Maske drin.
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
If Not uidoc.ModifiedSinceSaved Then
If ws.prompt(PROMPT_YESNO,"Original und Kopie sind gleich !","Kopie trotzdem speichern?") Then
Call uidoc.save
Call uidoc.close
Goto ende
Else
If ws.prompt(PROMPT_YESNO,"Kopie !","Möchten Sie die Kopie korrigieren?") Then
Exit Sub
Else
uidoc.editmode = False *
Call uidoc.deletedocument *
End If
End If
Else
Call uidoc.save
Call uidoc.close
End If
ende:
Die Meldung erscheint im mit * gekennzeichneten Zweig.
Sowas schon mal gesehen ? Sagt mir irgendwie garnix die Meldung.
Falls jemeand einen Tipp hat, der ist jederzeit willkommen.
Gruß RK
-
Wird das Dokument in einem Frameset geöffnet ? Klingt ein wenig nach einem Fokusproblem, versuch doch mal vorher mit SetTargetFrame den Fokus sauber zu setzen.
-
In der Hilfe steht:
Marks the current document for deletion and closes it. The NotesUIDocument object is no longer available once you call this method.
D.h. das UI-Dok. wird automatisch geschlossen.
Also am besten mal so versuchen:
Call uidoc.deletedocument
Exit Sub 'Abbruch, da Dokument automatisch geschlossen wird.
Andreas
-
Hallo Leutz !
Hat alles irgendwie nicht so gefunzt.
Gibt auch recht wenig Aussagen dazu (kommt wohl selten vor).
Einen Hinweis gibt's hier:
http://searchdomino.techtarget.com/expert/KnowledgebaseAnswer/0,289625,sid4_gci882739_tax289239,00.html
(Sind Links eigentlich im Forum erlaubt oder eher verpönt :-: ?
Was haltet ihr davon ?
Gruß RK
-
Hat alles irgendwie nicht so gefunzt.
Was ist "funzen"? Andere Frage: Was funktioniert denn nun nicht wo? Wie äussert sich das? Was wiederspricht dem, was Andreas geschrieben hat?
Es gibt durchaus Threads, bei denen ich dann wirklich darüber nachdenke, warum ich mich hier im Forum uneigennützig um andere bemühe ... Nicht umbedingt dieser hier, aber ...
Bernhard
-
Hast Du in den Maskeneigenschaften den Rahmen definiert?
-
@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
-
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
-
Und warum übergibst Du nicht direkt die NoteID des Dokuments, welches löschen willst?
call a.runonserver(uidoc.document.noteid) ?
-
@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