Autor Thema: Kurios: Erster DBLookup auf persönliches Adressbuch gibt keine Daten  (Gelesen 3994 mal)

Offline PromITheus

  • Aktives Mitglied
  • ***
  • Beiträge: 137
Hallo zusammen,

wurde der Notesclient neu gestartet bringt ein @DBLookup auf das lokale names.nsf beim ersten Ausführen den Fehler:

FEHLER: Eintrag im Index nicht gefunden, oder der Index ist für die Ansicht nicht aufgebaut

Beim zweiten und weiteren Ausführen liefert er die gewünschten Daten. Sobald der Client neu gestartet wird, tritt der Fehler wieder einmal auf!


Details:
Der Benutzer drückt einen Button in einem Dokument. Per Agent öffnet sich zunächst eine @Picklist die Ansicht "People" aus dem names.nsf.
Der Benutzer wählt eine Person aus. Anschließend werden verschiedene Daten der ausgewählten Person per DBLookups abgefragt und in ein Dokument eingetragen.


Ausschnitte des Codes:
REM {Gewünschte Person auswählen};
_person := @PickList([Custom] : [Single];"":"names.nsf";"People";"Person auswählen";"Bitte wählen Sie die Person aus:";6);

REM {Die Daten auslesen};
_vorname := @DbLookup("Notes":"";"" : "names.nsf";"People";_person;"FirstName");
_nachname := @DbLookup("";"" : "names.nsf";"People";_person;"LastName");
_tel := @DbLookup("";"" : "names.nsf";"People";_person;"OfficePhoneNumber");
_mobil := @DbLookup("";"" : "names.nsf";"People";_person;"CellPhoneNumber");
_mail := @DbLookup("";"" : "names.nsf";"People";_person;"MailAddress");
_firma := @DbLookup("";"" : "names.nsf";"People";_person;"CompanyName");
_beruf := @DbLookup("";"" : "names.nsf";"People";_person;"JobTitle");
_dokid := @DbLookup("";"" : "names.nsf";"People";_person;1;[ReturnDocumentUniqueID] );

REM {Textstring zusammensetzen};
_daten := "##cVorname#" + _vorname + "||" +_
+ "##cNachname#" + _nachname + "||" +_
+ "##cName#" + _nachname +", " + _vorname  + "||" +_
+ "##cTel#" + _tel + "||" +_
+ "##cTelweitere#" + _mobil + "||" +_
+  "##cMail#" + _mail + "||" + _
+  "##cUnternehmen#" + _firma + "||" + _
+  "##cBemerkung#" + _beruf + "||"  + _
+  "##cDokID#" + @Text(_dokid) + "||";

FIELD cPersonDatenPAdress := _daten;

In das Feld "cPersonDatenPAdress" wird die Fehlermeldung geschrieben: "FEHLER: Eintrag im Index nicht gefunden, oder der Index ist für die Ansicht nicht aufgebaut"
Gruß Marcel

Offline Ralf_B

  • Aktives Mitglied
  • ***
  • Beiträge: 144
  • Geschlecht: Männlich
Erweitere mal die DBLookup's um den Parameter "NoCache".
Ev. hilft das.

Offline PromITheus

  • Aktives Mitglied
  • ***
  • Beiträge: 137
Ich habe jeden einzelnen DBLookup jetzt mit "Notes":"NoCache" versehen.
Leider keine Änderung.

Beispiel:
_vorname := @DbLookup("Notes":"NoCache";"" : "names.nsf";"People";_person;"FirstName");
Gruß Marcel

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Der Fehler könnte theoretisch auch in der Picklist stecken. Ich würde nach Setzen von _person das mal ausgeben lassen. Ist _person richtig gefüllt, steckt das Problem in den nachfolgenden Lookups. Ist _person falsch gefüllt - z.B. leer - ist die Fehlermeldung der Lookups korrekt und Du kannst Dich auf die Picklist konzentrieren

Offline PromITheus

  • Aktives Mitglied
  • ***
  • Beiträge: 137
In der Richtung war ich schon unterwegs. Der Prompt von _person nach dem Picklist gibt immer die korrekte Person (einen Wert) zurück.

Der Fehler tritt also immer erst mit dem ersten DBLookup auf.

Ich habe bereits einen weiteren Prompt nach dem ersten DBLookup eingebaut.
Wenn der Fehler auftritt kann ich mir den Rückgabewert vom DBLookup aber nicht per Prompt anzeigen lassen. Der Prompt kommt dann erst gar nicht.

Gruß Marcel

Offline ghostmw

  • Aktives Mitglied
  • ***
  • Beiträge: 201
  • Geschlecht: Männlich
    • BELOS - Raum+Ressourcenmanagement unter Lotus Notes
... da der Fehler kein Text, sondern ein anderer Datentyp ist, solltest du  @Text (FELD) ausgeben lassen ... dann klappt's ;-)
Grüße
Marco Weller
Lotus Domino / Lotus Notes seit 1996 (ab 4.5x)

Offline Ralf_B

  • Aktives Mitglied
  • ***
  • Beiträge: 144
  • Geschlecht: Männlich
Ich hab das mal nachvollzogen.

Entweder die Picklist ändern :
_person := @PickList([Custom] : [Single];"":"names.nsf";"($PeopleGroupsFlat)";"Person auswählen";"Bitte wählen Sie die Person aus:";2);

Oder den Suchnamen aus der Picklist anpassen.
Bei Deinem Code wird nach ~Nachname. Vorname~ gesucht, es sollte aber ~Nachmane , Vorname~ sein (Leerstelle).

Offline Ralf_B

  • Aktives Mitglied
  • ***
  • Beiträge: 144
  • Geschlecht: Männlich
REM {Gewünschte Person auswählen};
_person := @PickList([Custom] : [Single];"":"names.nsf";"($PeopleGroupsFlat)";"Person auswählen";"Bitte wählen Sie die Person aus:";2);
@Prompt([Ok];"_person"; @Text(_person));

REM {Die Daten auslesen};
_vorname := @DbLookup("":"NoCache";"" : "names.nsf";"$PeopleGroupsFlat";_person;"FirstName");
_nachname := @DbLookup("";"" : "names.nsf";"$PeopleGroupsFlat";_person;"LastName");
_tel := @DbLookup("";"" : "names.nsf";"$PeopleGroupsFlat";_person;"OfficePhoneNumber");
_mobil := @DbLookup("";"" : "names.nsf";"$PeopleGroupsFlat";_person;"CellPhoneNumber");
_mail := @DbLookup("";"" : "names.nsf";"$PeopleGroupsFlat";_person;"MailAddress");
_firma := @DbLookup("";"" : "names.nsf";"$PeopleGroupsFlat";_person;"CompanyName");
_beruf := @DbLookup("";"" : "names.nsf";"$PeopleGroupsFlat";_person;"JobTitle");
_dokid := @DbLookup("";"" : "names.nsf";"$PeopleGroupsFlat";_person;1;[ReturnDocumentUniqueID] );

@Prompt([Ok];"_vorname"; @Text(_vorname));
@Prompt([Ok];"_nachname"; @Text(_nachname));
@Prompt([Ok];"_tel"; @Text(_tel));
@Prompt([Ok];"_mobil"; @Text(_mobil));
@Prompt([Ok];"_mail"; @Text(_mail));
@Prompt([Ok];"_firma"; @Text(_firma));
@Prompt([Ok];"_beruf"; @Text(_beruf));
@Prompt([Ok];"_dokid"; @Text(_dokid));


REM {Textstring zusammensetzen};
_daten := "##cVorname#" + _vorname + "||" +_
+ "##cNachname#" + _nachname + "||" +_
+ "##cName#" + _nachname +", " + _vorname  + "||" +_
+ "##cTel#" + _tel + "||" +_
+ "##cTelweitere#" + _mobil + "||" +_
+  "##cMail#" + _mail + "||" + _
+  "##cUnternehmen#" + _firma + "||" + _
+  "##cBemerkung#" + _beruf + "||"  + _
+  "##cDokID#" + @Text(_dokid) + "||";

FIELD cPersonDatenPAdress := _daten;
@True

Offline PromITheus

  • Aktives Mitglied
  • ***
  • Beiträge: 137
Du hast Recht Ralf_B, der Rückgabewert der Picklist war der Auslöser!
Trotzdem ist es für mich kurios, das Notes die Leerzeichen, mal so, mal so im gleichen Code interpretiert.

Ich habe nun verschiedene Varianten ausprobiert. Die Ansicht People ist für das Auswahlfenster mein Favorit (Optik und angezeigte Daten). Sie allein zu verwenden hat bei meinen Testläufen, trotz Übergabe anderer Spaltenwerte, zu Problemen geführt.

Ich habe nun eine Kombination aus der Ansicht "People" (für Auswahlfenster) und "($PeopleGroupsFlat)" (für DBLookup) verwendet. Das scheint zuverlässig die richtigen Ergebnisse zu liefern. Code, falls es interessiert, siehe unten.

Danke für eure Mithilfe, dieses Forum ist wie immer Gold wert!  :)


REM {Gewünschte Person auswählen};
_person := @PickList([Custom] : [Single];"":"names.nsf";"People";"Person auswählen";"Bitte wählen Sie die Person aus:";3);

REM {Die Daten auslesen};
_vorname := @DbLookup("Notes":"NoCache";"" : "names.nsf";"($PeopleGroupsFlat)";_person;"FirstName");
_nachname := @DbLookup("Notes":"NoCache";"" : "names.nsf";"($PeopleGroupsFlat)";_person;"LastName");
_tel := @DbLookup("Notes":"NoCache";"" : "names.nsf";"($PeopleGroupsFlat)";_person;"OfficePhoneNumber");
_mobil := @DbLookup("Notes":"NoCache";"" : "names.nsf";"($PeopleGroupsFlat)";_person;"CellPhoneNumber");
_mail := @DbLookup("Notes":"NoCache";"" : "names.nsf";"($PeopleGroupsFlat)";_person;"MailAddress");
_firma := @DbLookup("Notes":"NoCache";"" : "names.nsf";"($PeopleGroupsFlat)";_person;"CompanyName");
_beruf := @DbLookup("Notes":"NoCache";"" : "names.nsf";"($PeopleGroupsFlat)";_person;"JobTitle");
_dokid := @DbLookup("Notes":"NoCache";"" : "names.nsf";"($PeopleGroupsFlat)";_person;1;[ReturnDocumentUniqueID] );

REM {Textstring zusammensetzen};
_daten := "##cVorname#" + _vorname + "||" +_
+ "##cNachname#" + _nachname + "||" +_
+ "##cName#" + _nachname +", " + _vorname  + "||" +_
+ "##cTel#" + _tel + "||" +_
+ "##cTelweitere#" + _mobil + "||" +_
+  "##cMail#" + _mail + "||" + _
+  "##cUnternehmen#" + _firma + "||" + _
+  "##cBemerkung#" + _beruf + "||"  + _
+  "##cDokID#" + @Text(_dokid) + "||";

FIELD cPersonDatenPAdress := _daten;
« Letzte Änderung: 07.10.19 - 17:04:47 von PromITheus »
Gruß Marcel

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz