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
Set sourceArray(0) = doc.getItemValue("feldname")(0) 'z.B. 001
zu holen und dann mittels der vordefinierten Ersetzungs-Arrays
Set compareArray = ["001","003","005",....]
Set replaceArray = ["ABC", "XYZ", "IMO"...]
und dem Aufruf
var3 = ArrayReplace(sourceArray, compareArray, replaceArray)
Call docZiel.ReplaceItemValue("fieldZiel", var3(0))
zu setzen.
Probleme hierbei: Wie initialisiere ich die compare- und replace-Arrays korrekt?
Muss ich
compareArray[0] = "001"
compareArray[1] = "002"
.....
schreiben oder geht das irgendwie kürzer in einer Zeile?
Grundsätzlich kannst Du das so machen, wie Du schreibst
Dim compareArray (2)
compareArray (0) = "001"
compareArray (1) = "003"
compareArray (2) = "005"
Wenn es nicht zuviele Werte sind, kannst Du auch Split verwenden
Dim compareArray As Variant
compareArray = Split ("001:003:005", ":")
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.
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