Autor Thema: DBLookup key problem  (Gelesen 1238 mal)

Offline Micha

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
  • Not(es) macht erfinderisch
DBLookup key problem
« am: 18.09.03 - 11:53:45 »
Ich hab folgende Formel in einem berechnet Feld:
FIELD people := people;
key := people;
View := "PeopleLookup";
emailLookup := @If(@IsError(@DbLookup("" : "NoCache"; ""; View; Key ; 2));"";@DbLookup("" : "NoCache"; ""; View; Key ; 2));
list := @Trim(emailLookup);
@If (list =""; @Return("");list);
key2 := "PeopleEmailLookup";
namesLookup := @If(@IsError(@DbLookup("" : "NoCache"; ""; key2 ; list ; 2));"";@DbLookup("" : "NoCache"; ""; key2; list ; 2));
@Trim(nameslookup)
In dem Feld people stehen mehrere Personen in einer Liste.
nun möchte ich dass alle Personen den eine emailadresse zugeordnet ist, in diesem Feld erscheinen.
In der ersten Ansicht stehen in der ersten Spalte die namen der Personen sortiert.
In der zweiten Spalte stehen ihre email Adressen.
Einige Personen haben keine emailadresse und diese sollen dann auch nicht ausgewählt werden.
Nur leider hört der lookup genau mit der gefundenen Person die keine email hat auf und liest die weiteren nicht aus.
Wie kann ich dafür sorgen das die einfach übersprungen wird?
Bitte Hilfe und vielen Dank

Micha
5.0.5 Designer und Client
Win NT 4.0

Offline joringel

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
Re:DBLookup key problem
« Antwort #1 am: 18.09.03 - 15:29:01 »
Das DBLookup bricht die Ergebnisliste tatsächlich mit dem ersten 'Fehler' (Entry not found...) ab. Ich würde anders vorgehen:

1. baue Dir eine Ansicht (hier: 'peopleWithEmail'), die in der ersten Spalte die Namen der Personen _MIT_ EMail-Adressen enthält (Selektionsformel: email != "" ...)
2. verwende folgende Formel in Deinem Feld:

rem "Liste aller Namen mit Email einlesen und Leerzeichen im Namen durch '#' ersetzen";
temp1 := @ReplaceSubstring(@DbColumn("":"nochache"; ""; "peopleWithEmail"; 1);" "; "#");

rem "Liste der gesuchten Namen aus Feld 'people' lesen und Leerzeichen im Namen durch '#' ersetzen";
temp2 := @ReplaceSubstring(people; " "; "#");

rem "Schnittmenge von temp1 und temp2 bilden";
temp3 := @Keywords(temp1; temp2);

rem "'#' in Schnittmenge wieder durch Leerzeichen ersetzen";
@ReplaceSubstring(temp3; "#"; " ")

Das @ReplaceSubstring ist notwendig, wenn die Namen Leerzeichen enthalten, da @Keywords dann etwas 'eigenartig' reagiert - wär ja sonst zu einfach ;-)

Gruss Joringel
Nenne nie einen Server 'Lokal'...

Offline Micha

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
  • Not(es) macht erfinderisch
Re:DBLookup key problem
« Antwort #2 am: 19.09.03 - 09:40:07 »
Erstmal vielen Dank für den Lösungsvorschlag.
Leider geht das so nicht, bzw. ich habe etwas falsch verstanden.
Ich habe die formel so eingetragen und die Ansicht erstellt.
In der Ansicht steht nun in der erste Spalte:
Müller HansCN=HansMüller/abc/........
in meinem people Feld steht nur Müller Hans
replace macht nun nur Müller#Hans daraus.
Dadurch kommt natürlich mit @keywords keine Schnittmenge heraus.
Als Ergebnis benötige ich ja die emailadressen.
Weiß noch jemand was?

Micha
5.0.5 Designer und Client
Win NT 4.0

Offline Micha

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
  • Not(es) macht erfinderisch
Re:DBLookup key problem
« Antwort #3 am: 19.09.03 - 11:17:47 »
Nun meine nächste Version
FIELD people := people;
alleNamen := @DbColumn("":"nochache"; ""; "peopleWithEmail"; 1);
feldNamen := people;
schnittNamen = @Keywords(@ReplaceSubstring(alleNamen; " ";"#"); @ReplaceSubstring(feldNamen;  " ";"#"));
key :=@ReplaceSubstring(schnittNamen; "#"; " ");
email := @DbLookup("" : "NoCache"; ""; "peopleWithEmail"; key ; 2);
@Trim(email)
bei alle namen und feldnamen sind mehrere doppelte in gleicher form vorhanden:
z.B.
alleNamen = "Müller Hans" "Schmidt Karl"
und feldnamen = "Schmidt Karl"
trotzdem bleibt schnittNamen immer leer  :-[

Danke für die Antworten

Micha
5.0.5 Designer und Client
Win NT 4.0

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:DBLookup key problem
« Antwort #4 am: 19.09.03 - 21:46:23 »
... mag sein, daß ich mit meinem angeschlagenen Magen gerade etwas auf der Leitung stehe...

... du möchtest wissen, ob die Namen, die in der Liste "People" stehen eine gültige E-Mailadress haben - ist das richtig so?

... eins ist mir nocht klar. Stehen die Namen dort als CommonName? Ist sichergestellt, daß es keine gemeinsamen CommonNames gibt?

"Hans Müller" könnte es in der OU "PRODUKTION" geben, aber auch in der OU "VERWALTUNG"...

... daher sollten in dem Feld People nach Möglichkeit hierarchische Namen stehen....

... mit einem @Unique kannst du nun aus allen Dokumenten die doppelten Namen filtern - was übrig bleibt ist der kleinste Nenner...

ata



Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz