Domino 9 und frühere Versionen > ND6: Entwicklung

Felder einer anderen Maske anzeigen (@DocFields)

<< < (3/3)

Thomas Schulte:
Bernhard, warum einfach wenn es kompliziert auch geht?

koehlerbv:
Stimmt auch wieder, Thomas  ;D

Aber dann hätte ich die Designelemente erstmal alle via API ausgelesen und dann nach dem Typ geschaut und dann nach der Herkunftsmaske ...

Bernhard

FC:

--- Zitat von: koehlerbv am 01.08.05 - 16:27:39 ---Abgesehen davon: Warum dimensionierst Du das StringArray starr und nicht dynamisch ? Und warum so kompliziert ?
Mit NotesDatabase.GetForm holst Du Dir die Gefahrstoff-Maske. Mit Form.Fields holst Du Dir auf einen Schlag alle dortigen Feldnamen in ein Variant - und Du bist schon fertig.

--- Ende Zitat ---

Sorry, bin noch am lernen  :-[

Hatte ursprünglich aus der Hilfe nen Script genommen und an dem rumgeschraubt ........
... das kommt davon, ja ja .....  :-[

So habe mir die Sache durch den Kopft gehen lassen, dabei ist das rausgekommen:

Sub Onload(Source As Notesuidocument)
   Dim db As NotesDatabase
   Dim felder As Variant
   
   Set session = New NotesSession
   Set uidoc = Source.Document
   
   Set Db=Session.CurrentDatabase 'die aktuelle Datenbank
   Set doc = db.GetForm("gefahrstoff") 'holen der Maske, mit den Feldern
   
   Forall field In doc.Fields
      felder = felder + field & Chr(10)
   End Forall
   
   Set item = uidoc.ReplaceItemValue( "hilfsfeld", felder )   
   
End Sub

Ich beziehe mich jetzt in meinem Auswahlfeld auf "hilfsfeld", das klappt jetzt auch.
Ich habe hier nur noch das Problem, das ich nicht genau weis, wie ich den String so zusammenbaue,
dass dieser einzelne Werte im Auswahlfeld anzeigt, so wie oben wird nur das letzte Feld angezeigt ???

Gruß
Djahan

Thomas Schulte:
Jetzt weis ich worauf du raus willst und welchen Fehler du machst. Du musst ja deinem Auswahlfeld einen Auswahlwert zuweisen. Du willst diesen Wert aber im Onload Event anpassen(erzeugen) lassen. Dazu musst du hergehen und über ein zweites internes Feld erst einmal alle Werte die du brauchst sammeln und dann im Auswahlfeld eine Formel hinterlegen und die Listbox zu füllen. Tust du das nicht dann hast du einfach nur einen Textstring den das System anzeigt.

Sub Onload(Source As Notesuidocument)
   Dim db As NotesDatabase
   Dim felder As Variant
   Dim form As notesform
   
   Set session = New NotesSession
   Set uidoc = Source.Document
   
   Set Db=Session.CurrentDatabase 'die aktuelle Datenbank
   Set form = db.GetForm("frmDeadlineCalculation") 'holen der Maske, mit den Feldern
   

' Das hier gibt dir die Werte in ein Hilfsfeld zurück aus dem du dann wiederum deine Auswahl per formel mit @explode(IntHilfsfeld,"~~") füllst, wobei intHilfsfeld nur CFD sein muss, also nicht mit gespeichert wird.    
   Set item = uidoc.ReplaceItemValue( "IntHilfsfeld", join(form.fields,"~~")) 
' Das hier liefert dir das direkt zurück. Der Haken daran ist, das alle Werte ausgewählt sind und das im Feld bei der Auswahl mindestens ein "" eingetragen sein muss
   Set item = uidoc.replaceitemvalue("KeyHilfsfeld_1",form.Fields)
' und das hier ist das was du warscheinlich die ganze Zeit geliefert bekommst.
   Set item = uidoc.replaceitemvalue("KeyHilfsfeld_2",form.Fields)
   
End Sub


Hier ist eine Datenbank mit einer Testmaske wo du das Ergebnis der
unterschiedlichen Verfahrensweisen siehst.

FC:

--- Zitat von: Thomas Schulte am 03.08.05 - 18:43:20 ---Jetzt weis ich worauf du raus willst und welchen Fehler du machst.

--- Ende Zitat ---

Upps, hatte ich mich so mißverständlich ausgedrückt ? Werde mich bemühen in Zukunft deutlicher zu posten.

Auf jedem Fall vielen Dank Thomas jetzt funzt es natürlich, danke auch für die TestDB  ;D
Vielen Dank auch an Bernhard, du hast mir die richtigen Hinweise gegeben, eine fertige
Lösung hätte mich nicht so richtig (selber denkend) auf den Weg gebracht  ::)

Gruß
Djahan

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln