Dialogliste befüllen

  • So habe folgendes Problem.


    Ich habe eine Dialogliste (Feld in der Maske), dies soll mit Daten gefüllt werden.


    Das Feld hat als Standard einen Eintrag"xxx".


    Jetzt will ich aber mehrere Daten dort abspeichern und nach diesem alle neuen Anträge dort ersehen.


    Das setzen der Felder mache ich wie folgt.
    Call rpodoc.AppendItemValue(doc.rpo_us1_name1(0),name1)


    Jedoch wenn ich die Nächsten Datensätze schreibe, kommt ein Out of Range.
    "Call rpodoc.AppendItemValue(doc.rpo_us1_name1(1),name2)"


    Frage: wie setze ich den Feldinhalt einer Dialogliste.


    Danke im Vorraus


    MfG
    Roman

  • Schon mal die Hilfe zu AppendItemValue angeschaut ?


    Dort steht ganz klar:


    Zitat


    Creates a new item in a document and sets the item value.
    Note In general, ReplaceItemValue is favored over AppendItemValue. If an item of the same name already exists in a document, AppendItemValue creates a second item of the same name, and the duplicate items are not accessible except through a work-around. If you are creating a new document, AppendItemValue is safe.


    Und genau da ist dein Problem.


    Warum arbeitest du da nicht einfach mit ArrayAppend und ersetzt dann den Wert mit ReplaceItemValue ?

  • Ok, habe jetzt die Daten in Arrays gefüllt.


    Das Problem aber liegt beim befüllen der Dialog liste.


    Ich habe als Standard 2 Einträge in der Dialogliste drin stehen.


    Wenn ich jetzt mit ReplaceItem die Einträge befülle(habe ein Array mit n Einträgen), bekomme ich Index Fehler wenn der Zähler bei 2 ist.(klar)


    Wie kann ich die (Elmente) Einträge zu der Dialogliste hinzufügen?


    PS: ArrayAppand setzt 2 Arrays zumsammen. Das bringt mich nicht wirklich weiter oder?


    Hier der Code:
    doc.name1 ist das Dialoglistenfeld mit der Größe 2 = {0,1,}
    in tmparray befinden sich "n" einträge
    Fehler bei z =2 --> Index outofbound.


    z=0
    While Not tmparray(z) = ""
    Call rpodoc.ReplaceItemValue(doc.name1(z),tmparray(z) )
    z=z+1
    Wend

  • Warum soll dich das nicht weiterbringen ?


    Du hast eine Dialogliste mit einer Auswahlformel, die auf ein Feld verweist. Ind das Feld schreibst du deine neue Ausdwahlliste rein, refreshst das Dokument und das wars

  • hm..... und das andere (neue) Feld ist so eine art hilfsfeld.


    Ist das dann ganz einfaches Textfeld?


    dann verstehe ich aber immer noch nicht was ich mit der ArrayAppand machen soll.


    Soviel ich dich jetzt verstaden habe.
    - ich lege neues Feld an (hilfsfeld) --> Text??
    - ich schreibe den Array inhalt als String- Kette rein oder ?
    so?


    While Not tmparray(z) = ""
    txt = txt + tmparray(z)
    z=z+1
    Wend
    Call rpodoc.ReplaceItemValue(doc.temp_field(0),txt)


    stehe grad auf der Leitung

  • Textfeld mit MultiValue


    Nein du schreibst eine Textliste in dieses Hilfsfeld, also je Option ein Arrayelement


    Code
    alteOptionen = doc.Auswahloptionsfeld
    neueOptionen  // Hier definierst du die neuen Optionen
    call doc.Auswahloptionsfeld.replaceItemValue(ArrayAppend(alteOptionen, neueOptionen)
  • alteOptionen = doc.Auswahloptionsfeld
    neueOptionen // Hier definierst du die neuen Optionen
    call doc.Auswahloptionsfeld.replaceItemValue(ArrayAppend(alteOptionen, neueOptionen)


    alteOptionen und neueOptionen sind beide Arrays richtig?

  • ok, hab hier was zusammengebastelt:


    tmpNameAarrayOld(0) = rpodoc.rpo_names_temp


    While Not namesdoc Is Nothing
    name1 = namesdoc.FirstName(0) + " , " +namesdoc.LastName(0)
    tmpNameAarrayNew(z) = name1
    Set namesdoc = namesview.GetNextDocument(namesdoc)
    z=z+1
    Wend
    Call doc.eplaceItemValue(doc.names_temp,Arrayappend(tmpNameAarrayOld, tmpNameAarrayNew) )

    Frage: wenn optionsfelder Arrays sind.
    dann bin ich ja quasi gezwungen in der ersten Zeile, die Daten in den Ersten Array[0] zu speichern, ich kann ja wohl schlecht jetzt den Text aus dem Optionsfeld zu splitten.

  • 'Setzen die Größe des Array fest
    Redim tmpNameAarrayOld(1) //hier setze ich auf eins, da alte Einträge als ein ganzes gespeichert werden.
    Redim tmpNameAarrayNew(Cint(anz)) //hier die Größe aller neuen Einträge
    Set namesdoc = namesview.GetFirstDocument()
    If namesdoc Is Nothing Then
    Messagebox "Document ist Null!"
    Exit Sub
    End If
    'Zaehlervariable
    z = 0
    //hier hole ich die alten Einträge
    tmpNameAarrayOld(0) = doc.names_temp(0)
    //Hier befülle ich das ArrayNew mit neuen Einträgen
    While Not namesdoc Is Nothing
    name1 = namesdoc.FirstName(0) + " , " +namesdoc.LastName(0)
    tmpNameAarrayNew(z) = name1
    Set namesdoc = namesview.GetNextDocument(namesdoc)
    z=z+1
    Wend
    //Hier rufe ich die Methode auf --> folgender Fehler: Illegal Use of Property
    Call rpodoc.eplaceItemValue(doc.names_temp,Arrayappend(tmpNameAarrayOld, tmpNameAarrayNew) )


    ???
    Jetzt weiß ich nicht was der will.


    Stimmt die Umsetzung so?

  • Hast du dir schon mal die Mühe gemacht die Notes Designer Hilfe anzuschauen ?


    Anscheinend nicht, denn sonst wäre dir klar geworden, daß der erste Parameter der Name des zu ersetzenden Items zu sein hat

  • Also erstmal danke für deine hilfe.


    Call rpodoc.replaceItemValue("rpo_names_temp",Arrayappend(tmpNameAarrayOld, tmpNameAarrayNew) )


    so stimmts.
    dachte nur dass doc.names_temp das gleiche wäre wie "names_temp".


    Ich programmiere überwiegend Java, und da hat man gewisse Übersicht über den Code.


    Notes ist für mich ein Neuland, und ich komme immer noch nicht klar dass hier der Code überall verstreut ist und mit jedem Häckchen und jeder kleinen einstellung so arg beinflussbar ist.


    Und zur Hilfe muß ich leider sagen, dass es nicht gerade das beste ist, denn es sind ja schließlich mehrere sprachen vermischt.


    Und du als Profi, kannst ja nicht erwarten dass ich hier dir gleich perfekt funktionierenden Code schreibe. Mache ja schließlich erst seit einem Knappen Monat.


    Also Danke nochmal.


    MfG
    Roman

  • Ich erwarte nicht daß du gleich perfekten Code ablieferst, aber zumindest mal die Nutzung der direkt vorhandenen Ressourcen wie die Hilfe kann ich ja wohl erwarten.


    Und was bitte meinst du damit daß der Code so verstreut ist ?
    Der ist genauso verstreut wie auch in Java oder sonst einer Programmiersprache, abhängig davon wie der Programmierer es aufbaut.


    Und die Hilfe ist besser wie bei vielen anderen Programmiersprachen, man muss sie nur etwas logisch denkend benutzen

  • Ich meine Damit, dass man hier z.B. schnell die Übersicht verliert, als Anfänger(bei mir ist dies der Fall).
    Außerdem komme ich immer wieder durcheinander, da es hier 3 Sprachen(Formel, Script, Java) gibt und die in der Hilfe nicht getrennt werden.(oder ich kenn die Funktion nicht dies einzustellen)
    Man ist es nicht gewohnt, dass für jedes ancklicken eines Elements, eine neue Programmier Konsoole aufgeht.
    Dass z.B. der Code (bzw.die Funktionalität) des einzelnen Elementes über ein Paar checkboxen total verändert werden kann.
    Und wenn man all die Funktionalitäten nicht kennt wirds schwer.


    Villeicht ist das nur Gewöhnungssache, vielleicht rede ich in ein Paar Monaten anders über Notes.


    Also Danke nochmal.


    MfG
    Roman

  • Dann sollte man sich mit den Basics mal beschäftigen.


    Ich kann auch in Java oder C mit entsprechenden Direktiven das gesamte Verhalten des Codes verändern.


    Das ist überall möglich und nur eine Frage der Einarbeitung und dem Willen sich damit mal zu beschäftigen.


    Und die Unterscheidung der 3 Programmiersprachen in der Hilfe ist ja wohl simpel:


    - Alles was ein @ vorne dran hat ist Formel
    - Und Java und Script wirst du ja wohl kaum verwechseln