Autor Thema: Dialogbox -> Werte werden nicht zurückgeschrieben  (Gelesen 1730 mal)

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Hallo Forum,

bei der Entwicklung einer Dialogbox bin ich auf ein Problem gestoßen. Ich habe eine Dialogbox, in welcher auch versteckte Felder enthalten sind ($currentStep, $nextStep). Die Werte dieser Felder sollen geändert werden, indem auf eine Schaltfläche ("Weiter") geklickt wird. Die Schaltfläche enthält den folgenden Code:

Zitat
FIELD $currentStep := "1";
FIELD $nextStep := "2";
@Command([RefreshParentNote]);
@PostedCommand([CloseWindow])

Die Werte der Felder vor dem Klick auf die Schaltfläche sind "0" für $currentStep und "1" für $nextStep. Wenn ich die Dialogbox ganz normal als Maske testlaufen lasse, werden die neuen Werte für die Felder korrekt gesetzt. Wenn ich das ganze allerdings per LotusScript in einer Dialogbox laufen lasse, werden die veränderten Werte nicht zurückgeschrieben. Die Werte der Felder sind noch so, wie vor Aufruf der Dialogbox.

Die Dialogbox wird wie folgt aufgerufen:

Zitat
Dim uiws As New NotesUIWorkspace
   
Dim ses As New NotesSession
Dim db As NotesDatabase
   
Dim tmpDialogBox As NotesDocument
Dim result As Integer
   
Set db = ses.CurrentDatabase
   
Set tmpDialogBox = db.CreateDocument
   
result = uiws.DialogBox("($dialog)",True,True,True,False,False,False,"Dialogbox",tmpDialogBox,True,True,False)

Eine Überprüfung des Objektes tmpDialogBox per Debugger ergibt für die Felder $currentStep "0" und für $nextStep "1", obwohl ich auf die Schaltfläche "Weiter" geklickt habe, also die Werte, welche für die Felder initial eingestellt sind.

Der Effekt tritt unabhängig davon auf, ob die Felder bearbeitbar sind oder berechnet mit dem eigenen Namen als Wert eingetragen.

Hat jemand eine Idee, wo ich was verkehrt mache? Habt ich überhaupt ausreichend dargelegt, was ich will?

Viele Grüße
Harry
« Letzte Änderung: 19.08.05 - 11:37:28 von HarryB »
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Dialogbox -> Werte werden nicht zurückgeschrieben
« Antwort #1 am: 18.08.05 - 14:40:36 »
Hallo!

Wenn Du die Dialogbox über LS öffnest, musst du die Werte Explicit im Document setzen:

....
Set tmpDialogBox = db.CreateDocument
tmpDialogBox.Deinfeld = ""

result = uiws.DialogBox("($dialog)",True,True,True,False,False,False,"Dialogbox",tmpDialogBox,True,True,False)
if result Then
    ......
    if tmpDialogBox.DeinFeld( 0 ) = "???" Then
    .....
    uidoc.FieldSettext( "DeinFeld" , tmpDialogBox.DeinFeld( 0 ) )
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Dialogbox -> Werte werden nicht zurückgeschrieben
« Antwort #2 am: 18.08.05 - 15:29:48 »
Hallo Dirk,

genau das ist mein Problem. Der Wert von "DeinFeld" ändert sich nicht nach Aufruf der Dialogbox, und zwar nicht in einem UIDocument, sondern in dem Dokument tmpDialogBox.

Um bei deinem Beispiel zu bleiben: nach dem Aufruf der Dialogbox ist bei mir der Wert von DeinFeld = "", so, wie das Feld initialisiert wurde, obwohl dort etwas anderes drin stehen müsste.

Viele Grüße
Harry
« Letzte Änderung: 18.08.05 - 15:31:41 von HarryB »
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Dialogbox -> Werte werden nicht zurückgeschrieben
« Antwort #3 am: 18.08.05 - 15:54:10 »
Hi,

du hast den Parameter [noOKCancel] auf True gesetzt, d.h. die standardmäßigen Buttons werden nicht angezeigt. Wie schließt du denn die dialogbox?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Dialogbox -> Werte werden nicht zurückgeschrieben
« Antwort #4 am: 18.08.05 - 16:13:22 »
Wie schließt du denn die dialogbox?

Siehe oben:

Zitat
FIELD $currentStep := "1";
FIELD $nextStep := "2";
@Command([RefreshParentNote]);
@PostedCommand([CloseWindow])

Viele Grüße
Harry
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Dialogbox -> Werte werden nicht zurückgeschrieben
« Antwort #5 am: 18.08.05 - 16:18:33 »
Zwei Ansätze:

1. Wie bereits gesagt: Manchmal wird ein Feld im zugrundeliegenden Dokument nicht gesetzt, wenn es nicht vorher definiert wurde.
Also: Zuerst im Script das Feld "erzeugen" durch doc.Feldname = "", dann funktioniert meist auch das zurückgeben...

2. Es gibt verschiedene "Arten" für Schaltflächen: Normal , OK , Abbrechen , Hilfe.
Ich habe festgestellt, dass OK und Abbrechen gefährlich sind, weil Sie deinen Code -besonders was das setzen von Feldern betrifft- schlichtweg ignorieren.

HTH
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Dialogbox -> Werte werden nicht zurückgeschrieben
« Antwort #6 am: 19.08.05 - 11:24:01 »
1. Wie bereits gesagt: Manchmal wird ein Feld im zugrundeliegenden Dokument nicht gesetzt, wenn es nicht vorher definiert wurde.
Also: Zuerst im Script das Feld "erzeugen" durch doc.Feldname = "", dann funktioniert meist auch das zurückgeben...
Leider funktioniert das trotzdem nicht. Da muss noch woanders der Wurm drin sein. :'(

2. Es gibt verschiedene "Arten" für Schaltflächen: Normal , OK , Abbrechen , Hilfe.
Ich habe festgestellt, dass OK und Abbrechen gefährlich sind, weil Sie deinen Code -besonders was das setzen von Feldern betrifft- schlichtweg ignorieren.
Einen Abbrechen-Button hatte ich zwar drin, aber ich habe den mal jetzt auf "Normal" gesetzt und mit @Command([FileCloseWindow]) codiert. Das sollte dasselbe tun. Leider hat das nichts an dem Problem geändert.

Viele Grüße
Harry
« Letzte Änderung: 19.08.05 - 11:37:05 von HarryB »
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Dialogbox -> Werte werden nicht zurückgeschrieben
« Antwort #7 am: 19.08.05 - 11:36:18 »
Gna, gna, gna... der Teufel liegt echt im Detail. Kaum macht man's richtig, schon geht es.

Zitat
FIELD $currentStep := "1";
FIELD $nextStep := "2";
@PostedCommand([RefreshParentNote]);
@PostedCommand([CloseWindow])

Das wichtige an der Formel für den Button ist, dass das RefreshParentNote ein PostedCommand ist. Sonst ist die Ausführung des Refresh schneller, als die Aktualisierung der Felder. ::)

Viele Grüße
Harry
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz