Problem: Man hat mit db.Filepath einen Datenbankpfad der Form "verzeichnis1\verzeichnis2\name.nsf" ermittelt. Jetzt möchte man mit Evaluate ein @DbColumn oder @DbLookup machen. Dazu benötigt man die Pfadangabe aber in der Formelsprachenform, also mit doppeltem Backslash "\\".
Dazu muss der Pfad in Script wie folgt transformiert werden:
Function TransformScriptPathToFormulaPath( Byval pathname As String ) As String
'Diese Function liefert eine Pfadangabe mit "\" als "\\" (kompatibel zur Formelsprache) zurück
Dim tmpstr As String
Dim retstr As String
Dim pos As Integer
Dim laenge As Integer
Dim counter As Integer
tmpstr = pathname
pos = Instr( tmpstr, "\" )
laenge = Len( tmpstr )
If pos > 0 Then
retstr = ""
counter = 0
Do While (pos > 0 )
If counter = 0 Then
retstr = Left$( tmpstr, pos - 1 )
Else
retstr = retstr & "\\" & Left$( tmpstr, pos - 1 )
End If
tmpstr = Right$( tmpstr, laenge - pos )
pos = Instr( tmpstr, "\" )
laenge = Len( tmpstr )
counter = counter + 1
Loop
retstr = retstr & "\\" & tmpstr
Else
retstr = tmpstr
End If
TransformScriptPathToFormulaPath = retstr
End Function
Im Code sähe das dann so aus:
....
DB_Path = "verzeichnis1\verzeichnis2\name.nsf"
LSDB_Path = TransformScriptPathToFormulaPath( DB_Path )
ret_eval = Evaluate( |@DbColumn("";"| + DB_Server + |":"| + LSDB_Path + |";"Ansichtsname";1)| )
Alle Verbesserungsvorschläge werden gerne entgegengenommen.
Bei der Replik-ID gilt ähnliches: In Script wird diese mittels db.ReplicaID ohne Doppelpunkt geliefert, in der Formelsprache benötigt man den nach der 8. Stelle.
Andreas