Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: robertpp am 24.01.05 - 09:21:18

Titel: Dialogbox Response- doc erstellen
Beitrag 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.
Titel: Re: Dialogbox Response- doc erstellen
Beitrag von: Axel am 24.01.05 - 09:38:29
Hi,

wieso machst du es überhaupt über einen Dialog? Erstelle doch die Antwort direkt.


Axel
Titel: Re: Dialogbox Response- doc erstellen
Beitrag von: robertpp am 24.01.05 - 10:09:59
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!
Titel: Re: Dialogbox Response- doc erstellen
Beitrag von: Axel am 24.01.05 - 10:43:53
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
Titel: Re: Dialogbox Response- doc erstellen
Beitrag von: robertpp am 24.01.05 - 10:55:35
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.
Titel: Re: Dialogbox Response- doc erstellen
Beitrag von: Axel am 24.01.05 - 11:13:29
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

Titel: Re: Dialogbox Response- doc erstellen
Beitrag von: robertpp am 24.01.05 - 14:02:35
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