Domino 9 und frühere Versionen > Entwicklung

@Unique mit Script

(1/2) > >>

Christopher:
Hallo Entwickler, ich habe eine Textlist bzw. ein Arry was gleiche Werte enthält ich will aber nur jeden Wert einmal ausgeben per Formel gibt es ja die Funktion @Unique hat, jemand von Euch eine Idee wie man sowas in Script realisieren kann?

Danke Christopher

eknori:
würde dir das ein Stück weit helfen ?

resultlist = evaluate("@unique(source)", doc)

where
source is the Notes field containing the target list with dupes
resultlist is the result list, and
doc is the document that contains "source"

Christopher:
Ja danke urlich daran habe ich auch schon gedacht mal schauen ich werde es mal probieren werde meine lösung dann hier posten.

datenbanken24:
Eine sehr einfache aber gut funktionierende Variante ist

Dim UniqueVals List As String      

Forall V In Values
UniqueVals(V) = V
End Forall


wobei Values hier ein Variant ist
Geht aber genau so gut mit einem Array

Das Ergebnis ist eine unique StringListe, die man wieder in eine Array oder ein variant umwandeln kann.

Gruß,
Uwe

Axel:
Hi,

hier ist eine Script-Funktion, die ich vor einiger Zeit im Web gefunden habe. Ich setze sie selbst ein, funktioniert super.


--- Zitat ---Function UniqueA (vIn As Variant) As Variant
   
   Dim lsTemp List As String   'StringListe
   Dim astemp() As String   'Array für Ergebnis
   Dim iCount As Integer  
   
'Prüfung ob ein Array aus String übergeben wurde
   If Not Isarray(vIn) Then
      Messagebox "Es wurde kein Array übergeben" & Chr$(13) & "Funktion wird abgebrochen", 16, "Fehler"
      UniqueA = vIn
      Exit Function
   Elseif Typename( vIn(0) ) <> "STRING" Then
      Messagebox "Es wurde kein String-Array übergeben" & Chr$(13) & "Funktion wird abgebrochen", 16, "Fehler"
      UniqueA = vIn
      Exit Function
   End If
   
'Prüfung auf Mehrfachwerte in der Liste
   Forall s In vIn
      If Not Iselement( lsTemp(s) ) Then  'Wenn Wert nicht in der Liste wird er der Liste hinzugefügt
         lsTemp(s) = ""
         iCount = iCount + 1
      End If  'If Not Iselement( lsTemp(s)
   End Forall  'Forall s In vIn
   
   Redim asTemp(iCount-1)  'Neudimensionierung des Ergebnis-Arrays  
   iCount = 0
   
'Übernahme aller Listenelemente ins Ergebnis-Array
   Forall v In lsTemp
      If Listtag(v) <> "" Then
         asTemp(iCount) = Listtag(v)
         iCount = iCount + 1              
      End If  'If Listtag(v) <> ""
   End Forall  'Forall v In lsTemp
   
'Rückgabe des Ergebnis-Array
   UniqueA = asTemp
   
End Function

--- Ende Zitat ---

Axel

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln