wie bei mehreren @dblookup Zuordnung nicht verlieren?

  • Hallo,


    ich hoffe, ich bekomme nochmals eure Unterstützung.


    Ich benötige den Inhalt mehrerer Felder eines Dokuments.
    Mittels @Dblookup kann ich mir zwar jedes Feld holen, aber jenachdem was in dem Feld enthalten ist, erzeugt der @Dblookup unterschiedliche Anzahl an Ergebnissen.
    So habe ich bspw. 2 Felder, im ersten steht der Name des Dokuments und im 2. eine größere Liste von Personen


    Code
    _rules_names := @DbLookup("":"NoCache"; _server:_rules_db; _rules_view; ""; "Name"; [FailSilent]:[PartialMatch]);
    _rules_plist := @DbLookup("":"NoCache"; _server:_rules_db; _rules_view; ""; "SourceList"; [FailSilent]:[PartialMatch]);


    Der erste Lookup gibt mir 71 Einträge zurück, der 2. aber 212.
    Wie kann ich jetzt die Zuordnung behalten, denn ich möchte als Ergebnis alle die Namen von _rules_names anzeigen, wo @UserName im Feld SourceList enthalten ist.


    Praktisch wäre gewesen, wenn beide @Dblookup dieselbe Anzahl zurückgeben würden und die Personenliste als Inhalt zurückgegeben wird und nicht jeder Eintrag des Feldes einzeln.


    LG Peter

  • Ich habe für solche Fälle immer spezielle "Lookup"-Ansichten, die mir in den Spalten schon alles Notwendige anzeigen.


    @Username ist aber eine fiese Sache aufgrund der notwendigen Ansichtsaktualisierungen, bzw. der von Notes nicht von sich aus vorgenommenen Aktualisierungen.
    Vielleicht wären Leserfelder eine gangbare Alternative?

    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

  • Ich weiß nicht, inwiefern mir das helfen könnte, wenn ich in einer eigenen View in einer Spalte den Namen und in der anderen Spalte die Liste der Personen hätte.
    Damit habe ich doch auch nichts gewonnen, oder?
    Allenfalls müsste ich beide Informationen in eine Spalte / Feld packen und anschließend wieder auseinander extrahieren.

  • Gibts denn keine Möglichkeit, dass ich das Ergebnis vom @Lookup wieder der Anzahl gefundener Einträge zuordnen kann?
    Z.B. indem ich einen eigenen Delimiter angeben könnte? Es ist einfach sehr ärgerlich, wenn ich bei bspw. 3 Dokumenten 15 Einträge zurückbekomme, nur weil im ersten Dokument 2, im zweiten 4 und im dritten 9 Einträge in einem Feld vorkommen.

  • Um was geht es dir? Willst du wissen, welcher User welche Regel(n) aktiv hat?
    Dann würde das doch genau so passen: die erste Spalte zeigt die Usernamen, die zweite Spalte die aktiven Regeln. Über diese View kannst du drüberiterieren und auswerten wie gewünscht.


    Hier, wie in deinem anderen Thread, gilt: wenn du ein Stückchen mehr Informationen lieferst, was dein Plan ist, ist es u.U. für uns auch einfacher, dir einen passenden Lösungsansatz vorzuschlagen.

    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

  • Ich verstehe noch immer nicht, wo der Unterschied besteht, ob ich über @dblookup eine Spalte oder ein Feld anspreche.
    Das Ergebnis ist die Summe aller Inhalte als Liste, ohne nachvollziehen zu können, welcher Inhalt aus welchem Dokument kam.


    Sorry, wenn ich zu sehr abstrahiere und daher zu wenig Informationen liefere. ||

    • Offizieller Beitrag

    das Ansprechen eines Feldes ist langsamer, das dafür das Dokument geöffnet werden muss. Geht es direkt über die Ansicht, wird der Wert aus dem Ansichtsindex genommen.


    Aber noch besser ist es nur einen DBLookup / DBColumn zu nehmen. Dies geht dann über eine eigene Spalte, beid er die Felder als ein String hinterlegt werden.
    z.B.

    Code
    trenner := "#####";trenner_mehrfachwerte := "&&&&&";@Implode(Feld1; trenner_mehrfachwerte) + trenner + @Implode(Feld2; trenner_mehrfachwerte)


    In einem Feld (berechnet zur Anzeige) wird dann mit einem DBLookup / DBColumn genau diese Spalte wieder ausgelesen.
    Mit @Explode und @Word oder @Left oder @Right kann dann auf die einzelnen Werte zugegriffen werden.
    z.B.:

    Code
    trenner := "#####";
    trenner_mehrfachwerte := "&&&&&";
    wert := @DBLookup(...);
    liste := @Explode(wert; trenner);
    @Trim(@Unique(@Expolode(@Word(liste, 1);trenner_mehrfachwerte)))


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein