Domino 9 und frühere Versionen > ND8: Entwicklung
ArrayReplace oder wie sonst ein Text/Zahlen Mapping machen?
(1/1)
buzi:
Hallo zusammen,
ich möchte aus einer Datenbank1 einen Wert auslesen und in Datenbank2 in einem Feld als passenden Text speichern. Die Idee war, sich den Wert aus Db1 als
--- Code: ---Set sourceArray(0) = doc.getItemValue("feldname")(0) 'z.B. 001
--- Ende Code ---
zu holen und dann mittels der vordefinierten Ersetzungs-Arrays
--- Code: ---Set compareArray = ["001","003","005",....]
Set replaceArray = ["ABC", "XYZ", "IMO"...]
--- Ende Code ---
und dem Aufruf
--- Code: ---var3 = ArrayReplace(sourceArray, compareArray, replaceArray)
Call docZiel.ReplaceItemValue("fieldZiel", var3(0))
--- Ende Code ---
zu setzen.
Probleme hierbei: Wie initialisiere ich die compare- und replace-Arrays korrekt?
Muss ich
--- Code: ---compareArray[0] = "001"
compareArray[1] = "002"
.....
--- Ende Code ---
schreiben oder geht das irgendwie kürzer in einer Zeile?
Peter Klett:
Grundsätzlich kannst Du das so machen, wie Du schreibst
--- Code: ---Dim compareArray (2)
compareArray (0) = "001"
compareArray (1) = "003"
compareArray (2) = "005"
--- Ende Code ---
Wenn es nicht zuviele Werte sind, kannst Du auch Split verwenden
--- Code: ---Dim compareArray As Variant
compareArray = Split ("001:003:005", ":")
--- Ende Code ---
EDIT: Das "zuviele" bezieht sich nur auf die Schreibweise, ich würde nicht 1000 Werte in eine Zeile schreiben wollen, das ist dann kaum mehr wartbar.
EDIT2: Eine zweite Variante, die ich gerne verwende, ist die Nutzung von Listen, da die in der Größe nur durch den verfügbaren Arbeitsspeicher begrenzt sind. Außerdem stehen die Wertepaare schön zusammen.
--- Code: ---Dim compareList List As String
compareList ("001") = "ABC"
compareList ("003") = "XZY"
compareList ("005") = "IMO"
sourceArray = doc.GetItemValue (feldname) (0)
If Iselement (compareList (sourceArray)) Then
sourceArray = compareList (sourceArray)
End If
'bzw. bei Mehrfachwerten
sourceArray = doc.GetItemVaue (feldname)
Forall sA In sourceArray
If Iselement (compareList (sA)) Then
sA = compareList (sA)
End If
End Forall
--- Ende Code ---
buzi:
Danke Peter! Mit der kurzen Schreibweise und Split, bekomme ich genau was ich will. Das Array enthält nur 7 Esetzungen das gefällt mir gut in einer Zeile. Die Herangehensweise mit der Liste merke ich mir für größere Daten!
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln