Anfängerfrage: Element aus TextList entfernen?

  • Hi,


    habe ein MultiValue-Feld (TextList) aus dem ein bestimmtes Element entfernt werden soll. Leider habe ich keine Ahnung wie ich das anstellen soll, zwar kann ich in einer Schleife herausfinden welchen Index das Element hat, aber wie kann ich es ersetzen bzw. es auf "" setzen?


    doc.field(i) = "" klappt auf jeden Fall mal nicht...


    Grüsse

    • Offizieller Beitrag

    Du musst das Array in eine Variable einlesen NotesDocument.GetItemValue und dann kannst Du das Element auf "" setzen und mit FullTrim die leeren Elemente entfernen. Hoffentlich funktioniert es in dieser Kombination, da GetItemValue kein dynamisches Array ergibt. Ansonsten musst Du das Feld über eine Schleife in ein Array einlesen.


    Mit Formel geht es einfacher @SetField("Field";@Replace(Field; BestimmtesElement; ""))


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • In Script gehts auch:


    Call uidoc.Document.ReplaceItemValue( Feldname, Fulltrim( Arrayreplace( uidoc.Document.GetItemValue( Feldname ), ZuEntfernendesElement, "" ) ) )


    Danach n uidoc.Refresh...

  • Zum Einbinden in eine Script-Library, funktioniert aber nur wenn du wesst welches Element du entfernen willst. Wednn du einen String als Parameter übergeben willst musst du eben ein bisschen umstricken.


    'Entfernt ein einzelnes Element aus einer Liste
    'Returnwert ist ein Array of String mit der bereinigten Liste
    'Parameter:
    'Inlist: die Liste aus der ein Eintrag entfern werden soll
    'index: Zeigt an, welches der Elemente aus der Liste entfernt werden soll
    'newlistnum: Returnwert, zeigt an wieviele Elemente die Bereinigte Liste noch hat
    'Called By: Lib.ResourceBEOperations.ReactivateWO
    ' Lib.ResourceBEOperations.RemoveCurrentWOFromList
    ' Agent.ResetWorker2.Initialize
    Function RemoveFromList(inlist As NotesItem, index As Integer, newlistnum As Integer) As Variant
    Dim counter1 As Integer
    Dim counter2 As Integer
    Dim tlist() As String
    counter1 = 0
    counter2 = 0
    newlistnum = 0
    'Zunächst einmal Zählen wieviele Elemente die Liste hat
    Forall v In inlist.Values
    counter1 = counter1 + 1
    End Forall
    'Weitere Aktionen sind abhängig von der Anzahl der Elemente in der Liste
    If counter1 = 1 Then 'Liste hat nur ein Element
    Redim Preserve tlist(0)
    tlist(0) = "" 'dann ist der Rückgabewert eine Liste mit einem leeren Element
    Else 'Liste hat mehr als ein Element
    Forall v In inlist.Values 'dann muss eine neue Liste aufgebaut werden
    If Not counter2 = index Then
    Redim Preserve tlist(newlistnum)
    tlist(newlistnum) = Cstr(v)
    newlistnum = newlistnum + 1
    End If
    counter2 = counter2 + 1
    End Forall
    End If
    RemoveFromList = tlist()
    End Function