Hallo Alle,
bin neu hier und hoffe ihr könnt mir bei einem Problem helfen:
Wir entwickeln zur Zeit für den Kunden X ein simples Webformular was mittels der Anmeldeinformationen Teils vorbefüllt werden soll.
Leider befinden sich die benötigten Informationen in einer anderen Datenbank auf einem anderen Server ohne eindeutige Schlüssel (Docid's etc). Die einzige Möglichkeit die Daten abzugreifen ist mittels einer Ansicht mit einer sortierten Spalte in der Anmeldenname und Organisation zusammengefügt werden. Um an die Daten zu kommen haben ich folgenden Code "gebastelt", glücklicherweise gibt mir der Code keinen Fehler aus, unglücklicherweise aber auch keine Daten. ^^
Der Code soll in diesem Bespiel lediglich die hinterlegte Telefonnummer aus dem Userdokument holen das anhand der Anmeldeinformationen in einer Ansicht gefunden wird. Habe ich hier irgendwo einen Fehler oder weiss jemand woran das Problem liegen könnte?
var name = session.createName(session.getEffectiveUserName());
var key = name.getCommon()+"/"+name.getOrganization();
var registerdb:NotesDatabase = session.getDatabase("<server>","<ordner>\register.nsf");
if (registerdb.isOpen()){
var regview:NotesView = registerdb.getView("ExportUserView3");
var doc:NotesDocument = regview.getDocumentByKey(key);
var phone = doc.getItemValue("OfficePhoneNumber");
return phone
}
<server> und <ordner> stellen den andern Server und die Datenbank dar.
Der angemeldete User hat auf die andere Datenbank Lese-Zugriff, ebenso auf das Dokument.
Danke bereits im Voraus. ::)
Hallo, nach langem hin und her habe ich eine Alternativlösung gefunden, die eigentl denkbar simpel ist.
Zuvor muss ich jedoch sagen es mir nachwievor schleierhaft ist warum ich nicht per ServerSide Script auf die Datenbank komme.
Der Lösungsansatz ist folgender:
- In der Ressourcendatenbank eine View erstellen deren erste sortierte Spalte den Suchkey beinhaltet (Nicht versteckt, nur einfache Selectformel)
- In der XPagesdatenbank in dem gewünschten Formular obige View als Datensatz einbinden. (Hier gabs mit der alten View Probleme)
- Im Vorgabewert des Feldes direkt auf die Einträge dieser View gehen um zu überprüfen ob es überhaupt lesbare Dokumente gibt
- wenn ja, in diesen Einträgen anhand des Schlüssels nach dem gewünschten Dokument suchen.
Im Code schaut das so aus:
var name = session.createName(session.getEffectiveUserName()); //aktueller Username
var key = @Text(name.getCommon())+"/"+@Text(name.getOrganization()); //wird als Key verwendet
var check = ViewImport.getAllEntries(); //ViewImport ist die als Datensatz angelegt View der Ressourcendb
if (check.getCount() != 0) {
var dc:NotesDocumentCollection = ViewImport.getAllDocumentsByKey(key); //Dokumente nach Key suchen
if (dc.getCount() != 0) {
var doc:NotesDocument = dc.getFirstDocument(); //Ersten Treffer verwenden
return @Text(doc.getItemValue("OfficePhoneNumber")) }
else return "No KeyMatches / "+check.getCount()+" ViewEntries" //CollectionCount = 0
}
else return "Error - No ViewEntries" //ViewCount = 0
Werde den Code jetzt verlagern damit direkt beim Laden des Dokumente mehrere Felder befüllt werden und ich nicht bei jedem Vorgabewert die Datenbank durchsuchen muss.
Danke nochmal für Eure Mühen und Hilfestellungen.
Mattias