Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: PromITheus am 07.10.19 - 09:48:57

Titel: Kurios: Erster DBLookup auf persönliches Adressbuch gibt keine Daten
Beitrag von: PromITheus am 07.10.19 - 09:48:57
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"
Titel: Re: Kurios: Erster DBLookup auf persönliches Adressbuch gibt keine Daten
Beitrag von: Ralf_B am 07.10.19 - 12:07:23
Erweitere mal die DBLookup's um den Parameter "NoCache".
Ev. hilft das.
Titel: Re: Kurios: Erster DBLookup auf persönliches Adressbuch gibt keine Daten
Beitrag von: PromITheus am 07.10.19 - 12:32:02
Ich habe jeden einzelnen DBLookup jetzt mit "Notes":"NoCache" versehen.
Leider keine Änderung.

Beispiel:
_vorname := @DbLookup("Notes":"NoCache";"" : "names.nsf";"People";_person;"FirstName");
Titel: Re: Kurios: Erster DBLookup auf persönliches Adressbuch gibt keine Daten
Beitrag von: Peter Klett am 07.10.19 - 14:48:57
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
Titel: Re: Kurios: Erster DBLookup auf persönliches Adressbuch gibt keine Daten
Beitrag von: PromITheus am 07.10.19 - 15:01:18
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.

Titel: Re: Kurios: Erster DBLookup auf persönliches Adressbuch gibt keine Daten
Beitrag von: ghostmw am 07.10.19 - 15:11:55
... da der Fehler kein Text, sondern ein anderer Datentyp ist, solltest du  @Text (FELD) ausgeben lassen ... dann klappt's ;-)
Titel: Re: Kurios: Erster DBLookup auf persönliches Adressbuch gibt keine Daten
Beitrag von: Ralf_B am 07.10.19 - 15:35:44
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).
Titel: Re: Kurios: Erster DBLookup auf persönliches Adressbuch gibt keine Daten
Beitrag von: Ralf_B am 07.10.19 - 15:44:46
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
Titel: Re: Kurios: Erster DBLookup auf persönliches Adressbuch gibt keine Daten
Beitrag von: PromITheus am 07.10.19 - 17:03:14
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;