Auslesen einer View (Kostenstellen), um ein Feld (Verantwortlicher) zurück zu geben

  • Hallo zusammen,


    einen habe ich noch für heute.


    Ich versuche aus einer separaten View 'de.view.kostenstellen' den Zeichner zur Kostenstelle zu finden.
    Die Formel mit festbelegter Kostenstelle bringt das gewünschte Ergebnis:
    eval = Evaluate({@DbLookup("" : "NoCache" ; "" : "" ; "de.view.kostenstellen" ; "9020"; "Zeichner" )})


    Möchte ich jedoch das Feld "Kostenstelle_1"(Combobox) verwenden, bekomme ich mit angehängter Codierung den Fehler "Variant does not contain a container"


    kst=Trim(Cstr(uidoc.FieldGetText("Kostenstelle_1")))
    kst2 = """"+kst+""""
    eval = Evaluate({@DbLookup("" : "NoCache" ; "" : "" ; "de.view.kostenstellen" ; kst2; "Zeichner" )})
    zeichner = Cstr(eval(0))
    Call uidoc.FieldSetText("Zeichner", zeichner)


    Im Debugger sehe ich, dass die Variable kst2 korrekt mit dem Wert "9020" gefüllt ist.


    Für Anregungen und Lösungen wäre ich sehr dankbar!

  • ALSO: In welcher Zeile kommt "Variant does not contain a container"?


    UND: Es mag zwar sein, dass Deine Variable kst2 richtig gefüllt ist, aber Du übergibst Du sie gar nicht in Deine Formel, die in einem völlig anderen Kontext läuft. Das hier wäre korrekt:


    Code
    eval = Evaluate({@DbLookup("" : "NoCache" ; "" : "" ; "de.view.kostenstellen" ; } & kst2 & {; "Zeichner" )})


    Oder so:

    Code
    eval = Evaluate({@DbLookup("" : "NoCache" ; "" : "" ; "de.view.kostenstellen" ; "} & kst & {"; "Zeichner" )})
  • Beide Varianten probiert, Fehler bleibt leider erhalten ...


    Er tritt in der Zeile nach der eval-Zuweisung auf, wenn aus der Variante eval ein String(zeichner) gemacht werden soll.


    eval ist jedoch komplett leer ?!

  • @DbLookup und @DbColumn fange ich gern mit einem @IsError vorne dran ab.
    Ist es ein Error, wirfst du einfach "Fehler" ins Array(0) und dein Code geht danach nicht auf die Bretter. Wirfst du einen definierten Wert ins erste Element kannst du hinterher drauf prüfen und den Fehler abfangen und behandeln

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Code
    eval = Evaluate({@DbLookup("Notes" : "NoCache" ; @DbName ; "de.view.kostenstellen" ; "} & kst & {"; "Zeichner" ;[FailSilent])})


    damit müsste in eval mind. ein leer String sein
    evtl mit

    Code
    if Isarray(eval) then
    zeichner = Cstr(eval(0))
    end  if


    ob überhaupt ein array retour gekommen ist