Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: robertpp am 24.01.05 - 09:21:18
-
Hallo,
Ich habe ein Problem mit dem Erstellen eines Anwort-doc's mittels Button vom Haupt-doc.
Das ist mein Button:
restliche Declaration ist in einer Library
Sub Click(Source As Button)
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Dim dlgdoc As NotesDocument
Set dlgdoc = db.CreateDocument
dlgdoc.Form = "breakdown"
dlgdoc.ParentUNID =doc.UNID(0)
dlgdoc.ID =doc.ID(0)
dlgdoc.SubProcess =doc.SubProcess(0)
dlgdoc.SubProcessNr =doc.SubProcessNr(0)
dlgdoc.Division= doc.Division(0)
Call dlgdoc.Save(True,False)
erg = ws.dialogBox("Breakdown",True,True,False,False,False,False,"Eingabe",dlgdoc,True,False,True)
'neu erg = ws.dialogBox("Breakdown",True,True,False,True,True,False,"Eingabe",dlgdoc,True,False,True)
If erg <> False Then
Msgbox dlgdoc.Operation(0)
Call dlgdoc.MakeResponse( doc )
Call dlgdoc.Save( True, False )
Call uidoc.Refresh
Else
Call dlgdoc.Remove(True)
End If
End Sub
Das Problem liegt offensichtlich bei erg = ws.dialogbox.... und dort im speziellen bei noNewFields , noFieldUpdate
Wenn ich diese beiden auf False setze dann bekomm ich bei der Msgbox den Wert aber ich möchte nicht habe das er mir mein Hauptdoc ändert was er jedoch bei dieser Einstellung macht.
Hat jemand schon das Problem gehabt oder gibt es einen besseren Lösungsweg oder muss ich einfach nachdem die Felder im Hauptdoc erstellt wurden diese wieder löschen oder soll ich das erstellen der Response-doc's im Querysave der Anwort-Maske machen?
Bin für jeden Vorschlag dankbar.
-
Hi,
wieso machst du es überhaupt über einen Dialog? Erstelle doch die Antwort direkt.
Axel
-
Es ist so, dass im Hauptdoc einige Sachen ausgewählt werde. Mit diesen Infos wird dann ein Anwortdoc erstellt wobei der Benutzer im Anwortdoc noch einige zusätliche Angaben macht, deshalb ein Dialog.
Es wäre schon möglich das ganz einfach nur als normales Doc zu öffnen nur dann sieht der user halt nicht wirklich das er eine Antwort auf das doc schreibt!
-
Hi,
eine Alternative wäre z.B. so was:
Du erstellst eine sep. Maske mit den entsprechenden Feldern für den Dialog. Dann übernimmst du die Werte aus dem Hauptdok, zeigst den Dialog an und erstellst dann ein neues Dok und übernimmst die Werte.
Sub Click(Source As Button)
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim docNew As NotesDocument
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Dim dlgdoc As NotesDocument
Set dlgdoc = db.CreateDocument
dlgdoc.Form = "DialogMaske"
dlgdoc.ParentUNID =doc.UNID(0)
dlgdoc.ID =doc.ID(0)
dlgdoc.SubProcess =doc.SubProcess(0)
dlgdoc.SubProcessNr =doc.SubProcessNr(0)
dlgdoc.Division= doc.Division(0)
erg = ws.dialogBox("DialogMaske",True,True,False,False,False,False,"Eingabe",dlgdoc,True,False,True)
'neu erg = ws.dialogBox("Breakdown",True,True,False,True,True,False,"Eingabe",dlgdoc,True,False,True)
If erg <> False Then
Msgbox dlgdoc.Operation(0)
Set docNew = db.CreateDocument
docNew.Form = "Breakdown"
docNew.ParentUNID =dlgdoc.ParentUNID
'weitere Felder
Call docNew.MakeResponse( doc )
Call docNew.Save( True, False )
End If
End Sub
So oder so ähnlich könnte das funktionieren. Es gibt aber bestimmt noch andere Wege und sogar vielleicht noch einfachere. Aber auf die Schnelle ist mir im Moment nur dieser eingefallen.
Axel
-
Das Problem dabei ist aber das ich wenn ich die Dialogbox schließe dann hab ich keine Bezug mehr zu Felder die neu erstellt wurde. Das einzige was ich mir vorstellen kann ist, dass ich im Queryclose ein neues doc erstelle oder überhaupt dort schon das Response doc erstelle da ich ja im Feld ParentUNID die ID vom Hauptdoc habe.
-
Hi,
aber sicher hast du noch ein Bezug zu den Feldern der Dialogbox. Das ganze Dokument ist noch im Speicher vorhanden und du kannst darauf zugreifen. So was hab ich schon x-mal gemacht.
Axel
-
Hab das Problem jetzt fast so gelöst wie ich es eh schon gehabt habe, war auch ein kleiner Denkfehler meiner Seite. Er kann mir ja nichts ins Hauptdoc zurückschreiben weil ich ja schon ein eigenes doc für die Dialogbox gemacht habe.
Sub Click(Source As Button)
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim pdoc As NotesDocument
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Dim dlgdoc As NotesDocument
Set dlgdoc = db.CreateDocument
dlgdoc.Form = "breakdown"
dlgdoc.ParentUNID =doc.UNID
dlgdoc.ID =doc.ID(0)
dlgdoc.SubProcess =doc.SubProcess(0)
dlgdoc.SubProcessNr =doc.SubProcessNr(0)
dlgdoc.Division= doc.Division(0)
Call dlgdoc.Save(True,False)
erg = ws.dialogBox("Breakdown",True,True,False,False,False,False,"Eingabe",dlgdoc,True,False,True)
If erg <> False Then
Set pdoc = db.GetDocumentByUNID(dlgdoc.ParentUNID(0))
Call dlgdoc.MakeResponse( pdoc )
Call dlgdoc.Save( True, False )
Call uidoc.Refresh
Else
Call dlgdoc.Remove(True)
End If
End Sub