Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Gruenkohl am 19.09.02 - 08:49:25
-
Hi,
ich bekomme immer, wenn ich ein Antwort-Dokument erstellen möchte die Fehlermeldug:
"Kein Dokument ausgewählt - Wählen Sie ein Dokument zur Beantwortung."
Dies habe ich aber getan!!
Kann mir jemand sagen, woran das liegen kann. Oder welche Einstellungen man vornehmen muss damit es funktioniert?
Danke
Andreas
-
Hallo Andreas!
Soweit ich das mit den Antwort-Dokumenten verstanden habe, muss die erste Instanz mit einer Maske erstellt worden sein von Typ "Dokument" (Einzustellen in den Maskeneigenschaften), also eine ganz normale Maske.
Das Dokument in zweiter Ebene muss erstellt worden sein mit einer Maske vom Typ "Antwort",
und jede weitere Ebene vom Typ "Rückantwort".
Liegt es vielleicht an dem, dass du diese Einstellungen nicht richtig vorgenommen hast?
Schöne Grüße
Manuel
-
Hi Manuel,
also diese Einstellungen habe ich schon vorgenommen.
Deswegen wundert es mich ja auch, dass ich diese Fehlermeldung bekomme!
Gruss
Andreas
-
Wie wird das Antwort-Dokument aufgerufen? In einer Ansicht? Mit welcher Funktion (Compose)?
-
Hi,
ich bekomme immer, wenn ich ein Antwort-Dokument erstellen möchte die Fehlermeldug:
"Kein Dokument ausgewählt - Wählen Sie ein Dokument zur Beantwortung."
gnaz blöde Frage, sorry, aber hast Du in der Tat ein Doc oder nicht etwa eine Kategorie fixiert? Klapp dann den Twistie auf un geh mit dem Balken auf ein Doc, so daß Du es öffnen kannst. (wenn das natürlich der Fall ist..sorry ;D)
-
@Manuel:
Also das Dokument wird in einer Ansicht aufgerufen.
Mit dem Compose!
@Rob_Green:
Ah sicher! Ist schon ein Dokument. ;)
@All:
Kann es sein, dass ich noch diverse Einstellungen in dem Antwortdokument in der Zweiten Kategorie machen muss.
(Erstellen:
Formeln übernehmen Werte aus gewähltem Dokument
und
Gesamtes gewähltes Dokument in Richtextfeld übernehmen)
-
wenn Du Dir nicht sicher bist, schau Dir mal kurz in dem Diskussionstemplate die Masken an:
Maintopic
Response
ResponsetoResponse
an.
Und einen beliebigen View, der die Actionsbuttons "neues Hauptthema", .... enthält.
Mehr oder minder einfach die Einstellungen "abschreiben".
-
Nein, diese Einstellungen im zweiten Registerblatt sind nicht zwingend. Du kannst sie zwar aktivieren, um zB dein Hauptdokument im Antwortdokument in ein RTFeld zu übernehmen oder um einzelne Feldwerte zu übernehmen, aber diese Einstellungen sind sicher nicht der Grund für dein Problem.
Vielleicht liegt es an dem, dass die falsche Maske aufgerufen wird. Versuche mal folgende Compose-Formeln.
@If (Form = "Hauptdokument"; @Command([Compose]; "Antwort"); @Command([Compose]; "Rückantwort"))
Wenn das Dokument ein Hauptdokument ist, wird die Maske Antwort aufgerufen, wenn das Dokument eine Antwort bzw. eine Rückantwort ist, wird die Maske Rückantwort aufgerufen. So ist immer gewährleistet, dass die richtige Maske aufgerufen wird.
-
Also ich habe deine Formel mal ausprobiert aber ich bekomme immer noch den selben Fehler!
-
Gruenkohl, ich glaube Dir jetzt einfach nicht mehr ;D
oder zumindest ich tue mal so...irgendwas machst Du falsch.
alsoooo...
öffne das Dokument, worauf Du einen Response erstellen möchtest, so daß Du es komplett lesen kannst.
a.) Drück nun per Menue "erstellen"-"Antwort XYZ"
b.) zweite Weg: "Actionbutton" mit Manuels Formel in die Maske des Elterndocs packen
was passiert in beiden Fällen?
*und mich soll der Ray Ozzie an der Nase ziehen dürfen, wenn etwas ganz schrecklich fieses der Grund für dieses Ungemach ist*
-
a) geht :D
b) geht nicht ;D
-
gut gut...
bitte poste mal Deine originale Formel ohne Veränderungen hier rein , die Du verwendest UND nur kurz in welchem Zusammenhang wird sie verwendet..soll heißen: ist es eine Schaltfläche im Elterndoc oder ein Aktionsbutton in der Elternmaske oder in einem View ein Aktionsbutton?
-
Jut, hier isse:
@SetTargetFrame("fraBody");
@If (Form = "frmKunden"; @Command([Compose]; "frmAnsprechpartner"); @Command([Compose]; "frmNotiz"))
Ich benutze sie über einen Button in einer View!
-
óla,
mE lenkt das settargetframe den bisherigen Fokus ins Nirvana, nämlich in eben besagtes Frame.
Lasse mal dieses setframe wech und check nochmal die Formel. Ich weiss..du willst...nein...wir wollen jetzt erst sehen, daß das Teil zum rennen kommt. ;)
-
Also wenn ich den Befehl "@SetTargetFrame("fraBody");" weg lasse, dann geht es!
Aber warum????
-
Gut kombiniert Rob_Green, oder geraten ;D
Es ist warscheinlich deswegen ....
nachdem das @SetTargetFrame ausgeführt wird, hat das Dokument, das du vorher ausgewählt hast, nicht mehr den Focus. Daher kommt auch diese Fehlermeldung:
"Kein Dokument ausgewählt - Wählen Sie ein Dokument zur Beantwortung."
Ist aber bloß eine Vermutung.
-
wenn Du den Fokus vom zugrundeliegenden Dokument in der Ansicht wegnimmst, sprich den "Balken" in einen anderen Frame transportierst, weiß Notes nicht mehr, worauf es eine Antwort erstellen soll.
Schau mal immer in die Help zu jedem Befehl, wenn etwas net klappt. Und jeder Satz ist wichtig. Hier:
@Command([Compose]; "Maske")
Wenn @Command([Compose]) zum Erstellen eines Antwort- oder Rückantwort-Dokuments verwendet wird, muß eine Datenbank geöffnet und ein Dokument in der Ansichtsebene ausgewählt sein.
Du willst es sicher so haben:
zB links der View und rechts die Möglichkeit, die Anwtort zu schreiben, wobei links die View bzw. das Eltern Doc sichtbar ist? Nette Sache, aber mE mit Formel nicht so machbar, wenn es um Framewechsel geht.
Probier doch das Ganze mit Script, weil Du dort sehr genau die notwendigen Parameter übergeben kannst, um im zweitenm Frame das Response mit inherited Werten und einem gültigen $REf zu erstellen.
Tip:
les Dir mal die Methode
Call notesDocument1.MakeResponse( notesDocument2 ) durch.
Ich würde wohl im Actionbutton den Targetframe aufrufen, jedoch vorher per Script schon mal im Backend das Response erstellen und dann in den Zielframe einladen.
-
Soweit ich das mit den Antwort-Dokumenten verstanden habe, muss die erste Instanz mit einer Maske erstellt worden sein von Typ "Dokument" (Einzustellen in den Maskeneigenschaften), also eine ganz normale Maske.
Das Dokument in zweiter Ebene muss erstellt worden sein mit einer Maske vom Typ "Antwort",
und jede weitere Ebene vom Typ "Rückantwort".
Man kann auch mit Rückantwortmasken Antworten auf Hauptdokument erstellen. Die einzige Einschränkung ist die, dass eine Antwort immer direkt zu einem Hauptdokument gehört, nie zu einem anderen Antwortdokument. Die Unterscheidung zwischen Rückantwort und Antwort ist meiner Meinung nach sowieso ziemlich überflüssig.
Schlimmer noch: Mit LotusScript gespeicherte Dokumente können natürlich auch als Antwort zu beliebigen Dokumenten gespeichert werden, obwohl man ihnen eine Hauptdokument-Maske verpasst... die werden dann zwar in entsprechend eingerichteten Ansichten nicht automatisch eingerückt, aber es sind trotzdem Antworten. Nicht ganz ungefährlich, der Spass, denn wenn man so einem Antwortdokument sein Hauptdokument weglöscht, verschwindet es plötzlich wie durch ein wunder aus den Ansichten, hihi.
edit: Unsinn richtiggestellt
-
@Rob Green
Das mit dem MAKERESPONSE hat funktioniert.
Danke
Ich habe aber jetzt ein neues Problem! ;D
Wenn ich später das Doc wieder öffne und neu speicher geht die Zusammengehörigkeit zum Hauptdocument flöten.
Kann mir da jemand helfen??
Danke
-
oupss, dann biste voll in die Falle gelaufen, weil Du bestimmt keine echte response Maske verwendest zum erstellen eines responsedocs, die das Flag "ich bin ein Antwortdoc" hat, sondern wohl die gleiche Hauptmaske wie das Parentdocument.
Les dazu bitte unbedingt, wie man richtig machen kann:
"How to Make a New or Existing Document a Response to Another Document via LotusScript"
http://www-1.ibm.com/support/docview.wss?rs=475&context=SSKTWP&q=makeresponse&uid=sim11196b7468be2bd1e85256593006b94f2
und zum besseren Verständnis, warum man das so machen soll evtl das hier:
The LotusScript MakeResponse Methods Fails When Applied a Second Time to a Modified Document
http://www-1.ibm.com/support/docview.wss?rs=475&context=SSKTWP&q=makeresponse&uid=sim1be855a33af6bea1380256a0b002e1ca0
-
@Rob Green
Ahhhhh, ich werd mich da mal durch forsten. Wenn ich noch Fragen haben solle meld ich mich wieder! ;)
Danke schon mal.
-
So, hab mir die Links mal angeschaut.
Ich habe eigentlich auch alles gemacht was ich machen sollte. Ich kann bei mir die Maske nur nicht auf "Antwort" setzen.
Wenn ich das mache, bekomme ich beim erstellen eine Fehlermeldung, dass ich ein Dokument auswählen soll auf das eine Antwort erstellt werden soll.
Und dann kommt noch die Meldung "User-defined error"!
Kann damit jemand was anfangen??
Danke
-
mal Schritt für Schritt:
an welcher Stelle genau bekommst Du diesen Fehler?
Den bekommt man nicht, wenn man mit backend Methoden ein response Doc erstellt, es sei denn Du arbeitest mit Frontendklassen.
Die Bemerkung "Ich kann bei mir die Maske nur nicht auf "Antwort" setzen" macht mich schon ziemlich stutzig, was Du eigentlich genau vorhast.
Normal ist die erste Meldung ein Fehlerhinweis, wenn der Fokus nicht auf einem Dokument liegt und man dennoch einen Response als User erstellen möchte.
Also, beschreib zunächst bitte, was Du gemacht hast codeseitig, auch den Prozess und weiterhin schmeiss den Debugger an...damit man wenigsten weiß, wo der Fehler auftaucht mit "user-defined"... ::)
-
Moin,
also ich bekomme jetzt die zweite Fehlermeldung nicht mehr. Habe aber nix verändert.
Warum ich den Ersten Fehler bekomme is mir mittleierweile klar. Ich versuche per Skript ein Dokument im Front-End zu erstellen und benutze wieder den "SetTargetFrame".
Meine Überlegung war eigentlich, dass ich eine normale Maske in dem Frame öffne und wenn ich diese später speichere in eine Antwortdokument änder.
Aber dann habe ich eben das Problem, dass beim Editieren das Dokument die Zuordnung verliert!
-
Dass ein und dieselbe Maske nicht gleichzeitig zum Erstellen von Hautdokumenten und zum Erstellen von Antwortdokumenten geeignet sein kann, ist ja wohl klar, oder?
Nimm zur Not einfach zwei Masken (die gleich aussehen) und setze vor dem Speichern als Antwort das Formfeld auf den Namen der Antwortmaske. O.K., ich gebe zu, ich hab nicht vollkommen nachvollzogen, was du genau vorhast ...
-
@harkpabst_meliantrop:
Also ich habe nicht ein und das selbe Dokument genommen.
Ich habe habe mir die DocID vom Hauptdokument gemerkt und dann ein neues Dokument erstellt(andere Maske!!) und beim speichern von diesem Dokument habe ich mit dem MAKERESPONSE das neue Dok als Antwortdokument auf das Hauptdokument (mit der ID) gespeichert!
-
na ja, wir drehen uns irgendwie im Kreis...das mit dem Fokus hatten wir einige Male bereits oben angesprochen. Und das mit dem Editieren stand ja so in den LDD Links, wo genau die Fehler liegen.
Mal sehen, back again:
vom Ansatz her würde ich per
Actionbutton
im View 1
wo die ParentDocs liegen
auf Basis eines Backendscripts ein Responsedoc erstellen,
dieses Responsedoc als UIDOC später referenzieren (s.u.)
dann Call notesUIWorkspace.SetTargetFrame( frame$ )
dann Set notesUIDocument = notesUIWorkspace.EditDocument( [editMode [, notesDocument [, notesDocumentReadOnly [, documentanchor$ ]]]] )
wobei das "Editdocument" auf das Backend-ResponseDoc verweist, um es im Zielframe zu öffnen
also in der Art: Call workspace.EditDocument( True, doc )
Müßte so gehen, um im Quellframe eine Antwortaktion auszulösen, im Hintergrund ein Response zu erstellen und dieses Response im Zielframe zu editieren zu übergeben.
-
Das hast du mir ja schon mal so vorgeschlagen.
Aber ich war von dieser Idee nicht so begeistert, da ich ja dann das Dok auf jeden Fall speichern muss. Und wenn man sich verklickt hat und denn Butten gar nicht drücken wollte (DAU) dann muss ich ja beim Canceln das Dok wieder suchen und löschen.
Aber wenn es nicht anders geht, werde ich es so mal versuchen.
Danke
-
ein anderer weg, un es scheint weithin nix anderes zu geben sonst:
http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/760333796efb432c80256b13004a069b?OpenDocument
-
@Rob Green:
:D Es geht!!! ;D
Habe es jetzt hinbekommen. Habe es so gemacht wie du meintest. Im Back-End erstellt und dann im Front-End geöffnet.
Muss aber wenn ich es speicher im Front-End noch mal mit dem MAKERESPONSE umwandeln. Dann geht es aber.
DANKE
-
heisst aber, daß Du das Doc doch speicherts, auch wenn DAU sich verklickt?
Da hätte ich übrigens - wenn es das ist - auch nen Ansatz...beim ersten Speichern im Backend ein Flag setzen, daß quasi auf Bestätigung wartet. Wenn das nicht durch eine zweite Speicherung im Frontend über den Userzugriff erfolgt (also UIDOC wird im Zielframe geladen, und umgehend per ESC vom User geschlossen), bleibt das Flag auf "to_delete" und ein Agent löscht ZB das Doc oder man versucht es im QueryClose dann zu removen, wenn User ESC gedrückt hat.
ah joo, als Gegenleistung für die Hilfe unsererseits: poste doch mal bitte den Codeschnippsel zur Erzeugung im Zielframe aus dem Quellframe heraus...dürfte einige evtl. interessieren, da es recht nützlich ist.
-
Den Code zur erzeugung von was? ???
Achja, hast du ne Ahnung, wie ich mir in ner Ansicht nur die Antwortdokumente anzeigen lassen kann?
Wenn ich als Formel z.B.:
Select Form = "Response" | @AllDescendants
Bekomme ich kein Dokument angezeigt!
-
Mit der Spalteneigenschaft "Nur Antwortdokumente anzeigen" für alle Spalten?
-
@gruenkohl..
mit "Code" meinte ich das Progrämmchen, was Du nun geschrieben hast, worüber mittlerweile x Postings geschrieben wurden, um Dein Response im Zielframe zu erstellen :P
-
Ah ;),
hier der Code aus dem Button zum erstellen:
Dim w As New NotesUiWorkspace
Dim session As New NotesSession
Dim DB As NotesDatabase
Set Db = session.currentdatabase
Dim doc As NotesDocument
Dim aDoc As New NotesDocument(DB)
Dim uidoc As NotesUiDocument
Set doc = session.DocumentContext
If doc.Form(0) = "frmKunden" Then
DocID = doc.fdokid(0)
aDoc.Form = "frmAnsprechpartner"
If aDoc.fdokid(0) = "" Then aDoc.fdokid = DocID
aDoc.Save True, True
Call w.SetTargetFrame("fraBody")
Set uidoc = w.EditDocument( True, aDoc)
Else
Msgbox "Bitte wählen Sie einen Kunden aus!"
End If
Und hier der Code zum Speichern:
Dim w As New NotesUiWorkspace
Dim s As New NotesSession
Dim Doc As NotesDocument
Dim Doc2 As NotesDocument
Dim uidoc As NotesUiDocument
Dim view As NotesView
Dim db As NotesDatabase
Set db = s.CurrentDatabase
Set view = db.GetView("vwKunden")
Set uidoc = w.currentDocument
docid = uidoc.fieldGettext("fdokid")
Set doc = view.GetDocumentbyKey(docid,True)
If doc Is Nothing Then
Msgbox "Es wurde kein Haupt-Doc gefunden"
Else
Set doc2 = uidoc.document
Call doc2.MakeResponse( doc )
Call doc2.save (True, True)
Call uidoc.FieldSettext("SaveOption","0")
Hier müsste man dann noch das dok schließen
End If
-
@harkpabst_meliantrop:
Ich meinte in der Ansichten Auswahl!
Wenn ich das in den Spalten Eigenschaften eintelle, bekomme ich ja die anderen Doks auch angezeigt. Mit einem leeren Wert!