Autor Thema: leere Werte von dblookup abfangen  (Gelesen 3634 mal)

Offline sloe

  • Aktives Mitglied
  • ***
  • Beiträge: 175
  • Geschlecht: Männlich
  • Never stop a running admin...
leere Werte von dblookup abfangen
« am: 01.09.04 - 17:33:41 »
Hallo zusammen,

ich habe ein berechnetes Feld (SucheNach) mit Mitarbeiternamen. In diesem Feld verwende ich folgende Formel um die Tätigkeit aus einer anderen Datenbank auszulesen:
@DbLookup("":"NoCache"; DBServer:DBPfad; DBView; SucheNach; 2);
In Spalte 2 steht die Tätigkeit des Mitarbeiters in der Ansicht.

Funktioniert soweit bei vorhandenen Mitarbeitern -> alle Tätigkeiten werden angezeigt. Ist aber ein Mitarbeiter nicht erfasst, bleiben seine Tätigkeit und alle nachfolgenden leer. Ich brauche aber die nachfolgenden Tätigkeiten in der Reihe der Mitarbeiter.
Wenn ich es über das Feld der Maske versuche:

@DbLookup("":"NoCache"; DBServer:DBPfad; DBView; SucheNach; MATaetigkeit);

bekomme ich nur noch die Fehlermeldung:
FEHLER: Serverfehler: Eintrag im Index nicht gefunden

Ich möchte diese Fehlermeldung oder die leeren Werte durch "nicht erfasst" ersetzen.

Gibt es eine Möglichkeit über Listen und @Replace oder @IsError an die Sache ranzukommen?

Gruß
sloe
Gruß
sloe

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:leere Werte von dblookup abfangen
« Antwort #1 am: 01.09.04 - 17:37:03 »
Jo, ganz simpel:

@If (@IsError (@DbLookup("":"NoCache"; DBServer:DBPfad; DBView; SucheNach; MATaetigkeit); "Nicht erfasst"; @DbLookup("":"NoCache"; DBServer:DBPfad; DBView; SucheNach; MATaetigkeit));

HTH,
Bernhard

Offline sloe

  • Aktives Mitglied
  • ***
  • Beiträge: 175
  • Geschlecht: Männlich
  • Never stop a running admin...
Re:leere Werte von dblookup abfangen
« Antwort #2 am: 01.09.04 - 17:45:34 »
Hi,

ja, dachte ich auch, aber dann steht nur "Nicht erfasst" im berechneten Feld und die restlichen Werte schmeißt er weg.

Gruß
sloe
Gruß
sloe

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:leere Werte von dblookup abfangen
« Antwort #3 am: 01.09.04 - 17:52:17 »
Na ja, wenn Du Mehrfachwerte haben willst, dann hast Du so keine Chance, denn das Wegwerfen passiert ja genau in dem Moment, in dem er den Wert nicht zurückbekommt, also nicht an der Stelle, in der Liste, wo das Problem auftritt, sondern die gesamte Liste kommt schon gar nicht zurück. Da musst Du entweder die Ansicht, aus der Du dies ausliesest, so ändern, dass Du dieses "Nicht erfasst" aus der Ansicht nehmen kannst oder wenn Du aufs Dokument greifst, muss das eben da drin stehen.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:leere Werte von dblookup abfangen
« Antwort #4 am: 01.09.04 - 17:52:38 »
Dann machst Du noch irgendeinen anderen Fehler. Dieses
@If (@IsError (@dbLookup); Reaktion; @dbLookup)
ist wirklich Standard.

Bernhard

Offline sloe

  • Aktives Mitglied
  • ***
  • Beiträge: 175
  • Geschlecht: Männlich
  • Never stop a running admin...
Re:leere Werte von dblookup abfangen
« Antwort #5 am: 01.09.04 - 18:08:58 »
@koehlerbv
Nee, das Verhalten stimmt schon. Bei @If (@IsError (@dbLookup); Reaktion; @dbLookup) findet er anscheinend in den Werten einen Fehler und dann kommt die Reaktion. Ich brauch die Reaktion aber nur bei nicht vorhandene Werten, also:
Verkauf
Einkauf
FEHLER/leer -> nicht erfasst
EDV
etc.

@Semeaphoros
Zitat
Da musst Du entweder die Ansicht, aus der Du dies ausliesest, so ändern, dass Du dieses "Nicht erfasst" aus der Ansicht nehmen kannst
heißt, ich müßte alle Mitarbeiter erst mal erfassen, auch wenn sie noch keine Tätigkeit haben?
Ich wollte jetzt eigentlich keine 800 Dokumente erstellen, in denen "nicht erfasst" als Standardauswahl drin steht. Genau genommen sollte die DB mit den Tätigkeiten per mail von Antragsstellern gefüllt werden. seufz.
Gibt es denn keine Möglichkeit, die Werte in eine Liste einzulesen und die leeren/fehlerhaften Einträge zu filtern?

Gruß
sloe
Gruß
sloe

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:leere Werte von dblookup abfangen
« Antwort #6 am: 01.09.04 - 18:24:38 »
So ganz steige ich da noch nicht durch: Was steht denn in der einen und was in der anderen Datenbank ?
Und: Warum nimmst Du kein LotusScript zur Lösung dieser Aufgabe ? Andererseits sollen ja Deine Kollegen die eine DB "per Mail" füllen - da ist dann ja sowieso LS angesagt.

Beschreibe das gewünschte Verfahren doch mal bitte etwas genauer.

Bernhard
« Letzte Änderung: 01.09.04 - 18:27:07 von koehlerbv »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:leere Werte von dblookup abfangen
« Antwort #7 am: 01.09.04 - 18:25:04 »
Ach, die sind noch nicht einmal erfasst .... dblookup ist ganz schlecht im Kaffeesatzlesen. Diese Liste müsste man dann wohl irgendwie zusammenbasteln, das ist keine Standardfunktion. Scheint mir ein Fall für LotusScript zu sein in dem Falle.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline sloe

  • Aktives Mitglied
  • ***
  • Beiträge: 175
  • Geschlecht: Männlich
  • Never stop a running admin...
Re:leere Werte von dblookup abfangen
« Antwort #8 am: 01.09.04 - 18:38:14 »
Hi,
je länger ich an dem Ding herumwurschtele, desto eher scheint LS die bessere Wahl zu sein. Dabei habe ich so auf einen Drei-Zeiler gehofft...  :P

@Bernhard
Die Ausfüll-Anwendung ist nicht so der Hammer. Dokument zum ausfüllen per SendTo-Feld an Mail-In-DB senden, kein großer Hit. Die ankommenden Dokumente werden dann zentral nachbearbeitet und wandern danach per Button in meine Suchansicht.

Unter Strich muß ich mir jetzt überlegen, wie ich per LS die Anzahl der Werte aus dem Feld der Mitarbeiternamen auslese, mit For-Schleife per GetDocumentByKey die Werte auslese und wieder in mein Feld presse.

Naja, ich glaube, da mach ich lieber morgen weiter. Vielen Dank für Eure Hilfe und wenn ich morgen nicht weiterkomme, melde ich mich oder setze das Ding hier auf erledigt.
Schönen Abend noch.
Gruß
sloe
Gruß
sloe

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:leere Werte von dblookup abfangen
« Antwort #9 am: 01.09.04 - 18:42:48 »
Jo, den Ansatz dafür hast Du ja offensichtlich bereits.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re:leere Werte von dblookup abfangen
« Antwort #10 am: 02.09.04 - 10:05:28 »
Leute, Leute... nicht immer so beschränkt denken... ;D

Sein Problem ist folgendes:

Mitarbeiter im Dok:

Hans Wurst
Tido Test
Tante Käthe

in der Lookup- Ansicht gibt es aber nur

Hans Wurst
Tante Käthe

Der lookup liefert dann natürlich für ALLE einen Error...

Aber dem ist tatsächlich mit einem zweizeiler beizukommen:
in SucheNach stehen die oben genannten drei Mitarbeiter:

alleLkpMitarbeiter := @DBColumn( "" : "NoCache" ; "" ; "SeineAnsicht" ; 1 );

neuesSucheNach := @KeyWords( sucheNach ; alleLkpMitarbeiter ; "" );

@DBLookup( ...... ; neuesSucheNach ; .... )

in neuesSucheNach stehen nur die Mitarbeiter, für die es wirklich Werte gibt...

jetzt muss man das alles nur noch ordentlich zusammensetzen
{mitarbeiterOhneSuche := @Trim( @Replace( SucheNach ; neuesSucheNach ; "" ) )}

und fertig ist die Wurst.

Das einzige Problem, das auftreten kann ist das, dass er zu viele Mitarbeiter hat, und der DBColumn über die 32k Grenze kommt... dann kommt er nämlich um Script wirklich nicht mehr herum...

HTH
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Glombi

  • Gast
Re:leere Werte von dblookup abfangen
« Antwort #11 am: 02.09.04 - 10:20:36 »
Ist eigentlich die Verwendung von Mehrfachwerten als Schlüssel offiziell supportet? Ich weiß, es geht und habe es auch schon mal gemacht, aber in der R6 Hilfe steht zum Key:
key
Text. Determines which document is actually read in order to retrieve a value. A document's key is the value displayed in the first sorted column within the view. See "Specifying a key."

Also "Text" und nicht "Text or Text list". Sollte uns das zu Denken geben  ???

Andreas

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:leere Werte von dblookup abfangen
« Antwort #12 am: 02.09.04 - 10:25:55 »
Guter Hinweis, das sollte tatsächlich zum Nachdenken anregen.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re:leere Werte von dblookup abfangen
« Antwort #13 am: 02.09.04 - 10:51:30 »
tja... auch nach mehrfachem lesen der Hilfe zu DBLookup konnte ich weder ein Indiz FÜR noch GEGEN Mehrfachwerte finden...

Ich WEISS, dass das seit ich denken kann schon immer funktioniert hat.. ich hoffe nur, dass das auch supportet wird.... denn sonst könnten bei R7 viele viele meiner Datenbanken auf die Schnauze fallen (wenn es IBM einfällt, das plötzlich nicht mehr zu supporten...)

aber HALT: Die Knowledgebase rettet mich (mal wieder) im Artikel 1088821 stehen Fragen und Antworten zu DBLookup, unter anderem diese:

3.   Can you Lookup using multiple keywords?
Yes, by separating the multiple keywords by a colon.  Also, you can reference a field which contains multiple keywords, as long as that field has "Allow Multi-Values" checked ON.

Gott sei Dank...
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Glombi

  • Gast
Re:leere Werte von dblookup abfangen
« Antwort #14 am: 02.09.04 - 11:00:41 »
Der Artikel ist mir doch glatt durch die Lappen gegangen. Stellt sich die Frage, warum die Hilfe nicht aktualisiert wird? Vergessen oder vertraut man dem nicht so ganz ;D

Kann ich mich - wenn es "hart auf hart kommt" - vor Gericht auf die KBASE berufen   ???

Andreas
« Letzte Änderung: 02.09.04 - 11:01:05 von Glombi »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:leere Werte von dblookup abfangen
« Antwort #15 am: 02.09.04 - 11:03:57 »
Nachdem in der KBase immer wieder mal Hinweise auf arbeitende aber nicht supportete Workarounds gegeben werden, dürfte es schwierig sein, sich verpflichtend auf die KBase zu beruffen - meine  Einschätzung. Allerdings kann ich mir nicht vorstellen, dass es IBM in diesem Falle darauf anlegen wird, einen grossen Teil der Kundschaft mit einer derart einschneidenden Veränderung zu vergraulen.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re:leere Werte von dblookup abfangen
« Antwort #16 am: 02.09.04 - 11:10:37 »
Hier noch eine kleine Verfeinerung von Tode's Code, in dem eine Schwäche von @Keywords umschifft wird:

LDD

Ansonsten ist es ein Feature, so meine Sichtweise.

Andreas
« Letzte Änderung: 02.09.04 - 11:10:55 von Glombi »

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re:leere Werte von dblookup abfangen
« Antwort #17 am: 02.09.04 - 11:30:30 »
@Glombi: Diese Verfeinerung ist nur DANN nötig, wenn man die Designer- Hilfe nicht sorgfältig liest...

@Keywords( Textliste1 ; Textliste2 ; Trennzeichen )

Wenn Sie kein Trennzeichen angeben, werden folgende Trennzeichen verwendet:
?. ,!;:[](){}"<> (Fragezeichen, Punkt, Leerzeichen, Komma, Ausrufezeichen, Semikolon, Doppelpunkt, eckige Klammern, runde Klammern, geschweifte Klammern, Anführungszeichen und spitze Klammern).
Ein "leeres" Trennzeichen, dargestellt durch eine leere Zeichenfolge (""), weist die Funktion an, keine Trennzeichen zu verwenden.

und wenn Du jetzt mein Post beachtest, dann siehst Du, dass da
@KeyWords( sucheNach ; alleLkpMitarbeiter ; "" );
steht... ;D

Also keine Notwendigkeit einer weiteren Vergewaltigung der Werte durch ReplaceSubstring.
Ganz abgesehen davon halte ich "+++" nicht unbedingt für geeignet... das wird doch ab und an Verwendet, um wichtige Passagen zu markieren (zumindet bei uns im Haus) also z.B. im Subject:

+++Wichtiger Newsletter+++

dann lieber "~~~" o.ä.

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline sloe

  • Aktives Mitglied
  • ***
  • Beiträge: 175
  • Geschlecht: Männlich
  • Never stop a running admin...
Re:leere Werte von dblookup abfangen
« Antwort #18 am: 02.09.04 - 12:09:11 »
Hallo zusammen,
schön, wenn man eine ordentliche Diskussion zusammen kriegt.
Habe es jetzt mit LS erledigt, funzt auch.  :D
Aber zur Verständnis eine Frage an Tode:

sucheNach enthält die zu suchenden Mitarbeiter (MA) aus dem Dok.

Das hier liefert mir alle erfassten MAs:
alleLkpMitarbeiter := @DBColumn( "" : "NoCache" ; DBServer:DBPfad ; DBView ; 1 );

Das liefert alle MA aus dem Dok, die erfasst sind:
neuesSucheNach := @KeyWords( sucheNach ; alleLkpMitarbeiter ; "" );

Das liefert die zugehörigen Tätigkeiten der MA aus dem Dok, die erfasst sind:
@DbLookup("":"NoCache"; DBServer:DBPfad; DBView; neuesSucheNach; 2);

Das liefert mir alle MA ohne Erfassung
mitarbeiterOhneSuche := @Trim( @Replace( sucheNach;neuesSucheNach; "" ) )

Aber wie kriege ich daraus die Liste?
Hans Wurst -> Einkauf
Tido Test -> "nicht erfasst"
Tante Käthe -> Verkauf

Muß jetzt keine Energie reinfließen, läuft ja, aber interessieren würde es mich halt.

Gruß
sloe
Gruß
sloe

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:leere Werte von dblookup abfangen
« Antwort #19 am: 02.09.04 - 12:14:53 »
Heisst, Du möchtest es wieder in der ursprünglichen Reihenfolge, da müsste man dann noch mit Replace dahinter, um die ursprüngliche Reihenfolge für die Tätigkeiten wieder herzustellen
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz