Autor Thema: Listbox aus Dialogbox auslesen  (Gelesen 4075 mal)

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Listbox aus Dialogbox auslesen
« am: 15.01.11 - 19:50:45 »
Hi zusammen,

habe gerade ein kleies Problem, ich habe eine Form (Dialog_Erp_Listen) die ich eine Listbox enthält. Wie kann ich nachdem der User "OK" klickt den ausgewählten Wert auslesen?

Die Dialogbox wird folgenermaßen erzeugt:

Code

set dialogDoc = db.createDocument()

Call dialogDoc.Replaceitemvalue("DialogName", dialogName)
Call dialogDoc.Replaceitemvalue("DialogHead", strHead)
Call dialogDoc.replaceitemvalue("DialogData", strTable)

If (ws.Dialogbox("(Dialog_Erp_Listen)", true, true, false, false, True, False, "Dialog Auwahl Steuerschlüssel", dialogDoc, true, false, True) = true) Then

   'Hier möchte ich den Wert einer Auswahlliste auslesen

end if

Die Listbox bezieht ihre Werte aus dem Feld "strTable" mit der Funktion:
Code
@Explode(DialogData; "+&")

Interessant ist die Tatsache, dass der OK Button dazu führt, dass die Selektion der Listbox verloren geht?!?

Gebe ich im queryclose() der Dialogmaske das Feld aus, so ist es im Falle von "Cancel" selektiert, im Falle von "OK" wird der Fokus vorher entfernt und ich erhalte einen leeren String (oder Variant)

Ist bestimmt ein Denkfehler in meinem Ansatz (oder ein Anfängerfehler :-)

Kennt jemand eine Lösung?

Im Voraus vielen Dank
Thomas :)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Listbox aus Dialogbox auslesen
« Antwort #1 am: 15.01.11 - 20:04:14 »
If (ws.Dialogbox("(Dialog_Erp_Listen)", true, true, false, false, True, False, "Dialog Auwahl Steuerschlüssel", dialogDoc, true, false, True) = true) Then

   'Hier möchte ich den Wert einer Auswahlliste auslesen
   wert = dialogDoc.DialogData
end if



Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Listbox aus Dialogbox auslesen
« Antwort #2 am: 15.01.11 - 20:12:23 »
das Feld in der DialogMaske heißt "DialogSelection" und wird aus dem Feld "DialogData" befüllt.

Den Wert "DialogData" wie in deinem Beispiel bekomme ich über diesen Weg, aber das ist die gesamte Liste getrennt mit neuer Zeile, ich möchte aber nur den Wert der in dem Feld "DialogSelection" angegeben ist.

Über den "normalen" Aufruf mit

MsgBox dialogDoc.DialogSelection(0)

bekommen ich einen leeren Wert ""

Hat jemand noch eine Idee?
Grüße

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Listbox aus Dialogbox auslesen
« Antwort #3 am: 15.01.11 - 20:23:59 »
So würde es aber funktionieren (mit dialogDoc.DialogSelection, den Feldnamen konnte ich nicht wissen, weil davon nichts in Deiner Anfrage stand). Wenn da kein sinnvolles Ergebnis herauskommt, machst Du Dir wohl das Feld in der Maske Dialog_Erp_Listen kaputt, solltest also in der Maske nach dem Fehler suchen.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Listbox aus Dialogbox auslesen
« Antwort #4 am: 15.01.11 - 20:51:18 »
If (ws.Dialogbox("(Dialog_Erp_Listen)", true, true, false, false, True, False, "Dialog Auwahl Steuerschlüssel", dialogDoc, true, false, True) = true) Then

Der rote Parameter ist noFieldUpdate

Boolean. Optional. Specify True if you don't want to pass any edits from the dialog box to the underlying form (for example, if you're passing the edits somewhere else in a Queryclose script for the dialog box form). If you specify False or omit this parameter, the edits are passed to the underlying form.

Vielleicht mal mit False probieren ...

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Listbox aus Dialogbox auslesen
« Antwort #5 am: 15.01.11 - 21:10:44 »
habe es mit beiden Ausprägugen schon probiert, auch habe ich die kompletten Maskenfelder in eine neuen Maske kopiert (um Fehler auf der Maske auszuschließen)

..das mit dem Queryclose() ist auch ein Phänomen. Versuche ich dort die Selektion in ein anderes Feld vom Typ text zu kopieren, kann ich trotzdem nicht auf das Feld zugreifen.

Wenn ich innerhalb der Querycloe() eine Msgbox einfüge, sehe ich, dass im Falle von "OK" die Selektion des Feldes entfernt wird, im Falle von "Cancel" jedoch nicht und ich kann den Wert ausgeben?!?

Ist irgendwie seltsam..

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Listbox aus Dialogbox auslesen
« Antwort #6 am: 15.01.11 - 21:30:23 »
Probier auch noch mal die anderen Parameter durch, da gibt es auch einen für neue Felder

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Listbox aus Dialogbox auslesen
« Antwort #7 am: 15.01.11 - 21:41:46 »
erst einmal vielen dank für die schnellen Antworten - super Forum!

Zum Problem - die beiden Parameter:

noFieldUpdate
noNewFields

bezieht sich doch auf das Dokument "unterhalb" der DialogBox. Ich möchte aber nicht, dass alle Felder der DialogBox in das darunter liegende Dokument gespeichert werden, sondern das Feld von dem Dokuemtn "dialogDoc" das für die DialogBox erzeugt wurde abgreifen.

Oder verstehe ich die Doku falsch?

Habe aber alle 4 Kombi-Möglichkeiten der beiden Parameter getest - leider auch ohne Erfolg.

Macht es einen Unterschied, ob das darunter liegende Dokument im EditMode ist oder nicht? Dürfte doch für das kleine snippet egal sein, da ich das dialogDoc über die db erzeuge und damit die DialogBox anzeige und dort die Auswahl des Benutzers getroffen wird.

Noch eine Idee?

Grüße Thomas :-)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Listbox aus Dialogbox auslesen
« Antwort #8 am: 15.01.11 - 21:43:54 »
Da Du ein Dokument mitgibst (dialogDoc), ist das "darunterliegende" Dokumente uninteressant. Inwieweit sich die Parameter auf das dialogDOc auswirken, musst Du ausprobieren, weiß ich aus dem Kopf auch nicht, könnte aber die Ursache Deines Problems sein

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Listbox aus Dialogbox auslesen
« Antwort #9 am: 15.01.11 - 21:56:46 »
habe auf die dialogbox noch ein feld vom type text hinzugefügt und "lorem ipsum" rein.. das Feld ist gefüllt, wenn ich

noFieldUpdate = true
noNewFields = true

setze... aber meine Listbox "DialogSelection" ist immer noch leer ?!? Werde dort mal ansetzen, vielleicht fehlt im Feld noch ne wichtige Eigenschaft.

Grüße

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Listbox aus Dialogbox auslesen
« Antwort #10 am: 15.01.11 - 22:09:41 »
bin einen schritt weiter, aber nicht schlauer...

Ich habe testweise folgendes gebastelt:

Maske mit 2 Feldern vom Type Listbox:

- eine mit direkter Eingabe der Auswahl
- eine mit @Function welche die Auswahl aus einem anderen Feld bezieht

..im Queryclose der Maske eine Msgbox ("stop und schauen") eingebaut.

Folgendes Verhalten:
Ich öffne die Dialogbox und wähle in beiden Listen einen Wert (werde blau markiert). Dann drücke ich den "OK" Button und meine Messagebox erscheint.

In der Dialogbox wird aus der Listbox mit @Function der blau-markierte Wert entfernt (genau da wird mein Problem liegen).

Bestätige ich die Messagebox, kann ich über den Aufruf:

dialogDoc.listbox1(0)

den ausgewählten Wert auslesen, bei der listbox 2 erhalte ich "". Das erscheint mir mit dem erkannten Problem dass die markierung durch "OK" entfernt wird auch nachvollziehbar.

Die Frage ist jetzt, warum wird die Auswahl entfernt? Die Maske und die Felder haben keinerlei code außer meine Messagebox?!?

bin am verzweifeln...

Update: shit - es ist wirklich nur der Unterschied, ob die Listbox eine @Function oder hardcodierte Werte in der Auswahl hat ...

Kennt jemand eine Lösung? Kann ich die Selektion zu einem früheren Zeitpunkt irgendwo abgreifen und in ein Feld vom Typ "Text" kopieren? Ist zwar nicht elegant, aber wenn's nicht anders geht...
« Letzte Änderung: 15.01.11 - 22:37:29 von sudsaat »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Listbox aus Dialogbox auslesen
« Antwort #11 am: 15.01.11 - 22:32:07 »
Nein, das kann nicht sein, denn ich habe schon problemlos einige Dialogboxen gebaut, in denen die Auswahl über eine Formel gerechnet wird.

Erstell doch mal ein Dokument mit der Maske der Dialogbox, wähle einen Wert aus und speichere das Dokument. Dann schau Dir das Feld DialogSection in der Felderliste des geschlossenen Dokuments an. Ist es leer?

Vielleicht hast Du in der Auswahlliste über die Formel Auswahlwerte die mit Leerzeichen beginnen oder aufhören, ich meine, das mag eine Auswahlliste nicht.
« Letzte Änderung: 15.01.11 - 22:34:23 von Peter Klett »

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Listbox aus Dialogbox auslesen
« Antwort #12 am: 15.01.11 - 22:44:06 »
Ok, das ist absolut ein Bug in Lotus Notes.

Habe folgende Lösung herausgefunden:

Einer Listbox mit dynamischem Inhalt über @Functions verliert die Auswahl nicht beim Drücken von "OK" wenn in der Eigenschaft "Input Translation" ein @Prompt eingegeben wird.

Ich hab testweise bei mir @Prompt("") eingefügt und ich kann den Wert abgreifen. Ist ein absolut "dreckiger" Weg, hab aber bisher keinen anderen gefunden. Das gute ist, dass @Prompt nicht angezeigt wird, da es sich im Bereich "Input Translation" befindet.

Kann den Bug jemand bestäigen? Meine Notes-Version ist:

Release 8.5.2
Revision 20100811.1131 (Release 8.5.2)
Standard Configuration

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Listbox aus Dialogbox auslesen
« Antwort #13 am: 15.01.11 - 22:56:56 »
Hm, merkwürdig, kann ich leider nicht gegenprüfen, habe nicht so eine junge Version.

Um auszuschließen, dass es nicht an der Formel selber liegt, probier doch mal die Formel

"A" : "B" : "C" für die Auswahlliste. Ist das Problem mit der Liste ohne @Prompt auch vorhanden und mit @Prompt nicht?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Listbox aus Dialogbox auslesen
« Antwort #14 am: 15.01.11 - 23:04:07 »
Steht sonst noch etwas in der "Input translation"?

z.B.

@Prompt ...
""

und ohne @Prompt dann nur noch

""

Das @Prompt sorgt dann vielleicht dafür, dass der Code bei dem @Prompt abbricht und der Code, der den Wert anschließend löscht, nicht ausgeführt wird. Mit @Prompt ist dann alles ok, ohne @Prompt nicht (nur ein Idee, weil ich es mir einfach nicht vorstellen kann, dass solch ein Fehler in 8.5.2 eingebaut wurde)
« Letzte Änderung: 15.01.11 - 23:07:16 von Peter Klett »

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Listbox aus Dialogbox auslesen
« Antwort #15 am: 16.01.11 - 01:09:43 »
Das mit der Formel "A":"B" habe ich auch schon probiert, genau das gleiche Verhalten (verliert die Auswahl) und mit @Prompt in "Input Translation" geht es.

Ich habe auch schon andere Sache wie
@True
@False
""
etc.

hilft nicht, es geht auch bisher nur in "Input Translation" mit @prompt, in "Validation" hilft nichts?!?

Zu deiner Frage, außer das @Prompt steht nichts weiter drin, die Maske hat sonst keinen weiteren Code, nur Layout mit Feldern und Listen.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Listbox aus Dialogbox auslesen
« Antwort #16 am: 16.01.11 - 10:42:16 »
Bau das doch bitte mal in einer separaten DB nach, nur die Maske für die Dialogbox und der Aufruf. Ist der Fehler dort auch vorhanden, poste diese DB hier im Forum oder sende sie mir per Mail, dann prüfe ich mal in älteren Versionen, ob sie da funktioniert.

Offline sudsaat

  • Junior Mitglied
  • **
  • Beiträge: 78
Re: Listbox aus Dialogbox auslesen
« Antwort #17 am: 23.01.11 - 14:29:57 »
Hallo Peter,

vielen Dank für das Angebot, bin zeitlich gerade ein wenig Land unter, werde dir aber eine separate DB mit der Listbox erstellen. Dauert nur ein wenig, da ich die Daten dafür fest hinterlegen muss, die kommen normalerweise live aus einem ERP-System.

Grüße Thomas :-)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz