Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Johnson am 21.11.08 - 18:31:06
-
Hallo zusammen,
im Designer findet man doch auf dem Reference Tab eine Liste mit allen Feldnamen der aktuell geöffneten Datenbank.
Gibt es eine Möglichkeit, per LS (meinetwegen auch mittels API) diese Lieste auszulesen?
Gruß Johnson
-
Du kannst die "forms" (NotesDatabase) durchlaufen und darin alle Felder abfragen.
-
Ja. Es gibt jedoch viele Felder, die nicht in der Form enthalten sind. Diese stehen ebenfalls in der Liste im Designer drin. Die sollte ich auch auslesen.
Hintergrund: Administratoren benötigen in einer Datenbank einen "Feldmanipulator". Sie wollen ebenfalls die möglichen Felder der ausgewählten Dokumente über eine Auswahlliste angeben.
Ich habe bereits versucht die Dokumente zu durchlaufen und alle Feldnamen auszulesen und in eine Liste zu packen. Nachteil an der Geschichte ist, dass die Performance darunter leidet, wennz.B. 500 Dokumente ausgewählt wurden.
-
Nimm doch von jeder Maske nur ein Dokument, welches Du durchsuchst. Damit schaffst Du bestimmt 98% aller Felder.
Ein anderer Weg wäre die Felder erst auszulesen, wenn der Admin die Felder ändern möchte.
-
Es gibt eine schöne Smarticonformel, die vom ausgewählten Dokument die enthaltenen Felder auflistet und direkt ändern läßt. Außerdem lassen sich neue Felder anlegen und einem Feldtyp zuordnen. Such mal nach FieldEdit - Du wirst fündig.
-
Da wirst Du nur mit API-Zugriffen weiterkommen. Stichworte sind dabei:
NSFDbItemDefTable
ITEM_DEFINITION
ITEM_DEFINITION_TABLE
Hintergrund: Administratoren benötigen in einer Datenbank einen "Feldmanipulator". Sie wollen ebenfalls die möglichen Felder der ausgewählten Dokumente über eine Auswahlliste angeben.
Was genau wollen Deine Admins da machen?? Event. gibt es da andere Wege, um ans Ziel zu kommen?!
Thomas
-
Ich dachte mir schon, dass es nur per API geht. Das stellt auch kein Problem dar, da wir die API auch an anderen Stellen bereits einsetzen.
Ab und zu kommt es vor, dass Fehler auftreten, wenn ein Feld falsch befüllt ist. Das Problem ist immer, dass wir einen eine Entwickler damit binden, einen Agenten zu schreiben, der ein Feld wieder berichtigt. Darum haben wir einen Feldmanipulator programmiert, der eigentlich nur eine Dialogbox anzeigt, in der man den Feldnamen und einen neuen Feldwert eintippt. Oft kam es zu Tippfehlern. Um diesem Feldmanipulator weiter zu optimieren, wollte ich jetzt eine Auswahlliste mit Feldnamen, die in der Datenbank enthalten sind, zur Verfügung stellen. Eben auch solche, die nicht in den Masken enthalten, sondern nur im Hintergrund in den Dokumenten sind. In der bisherigen Lösung gehe ich alle ausgewählten Dokumente durch, um die Feldnamen auszulesen. Dann kann es wieder sein, dass in den Dokumenten ein Feld fehlt und so nicht in der Auswahlliste erscheit.... usw. Ich habe an die Liste im Designer gedacht.
Ich werde mir also mal die FSFDbItemDefTable ansehen. Aber heute nicht mehr und dieses Wochenende auch nicht. Irgendwann ist mal Schluss.
Besten Dank für die Antworten und ein schönes WE
Johnson
-
Spar Dir den Aufwand - genau dafür nutze ich regelmäßig den FieldEdit.
Wers grafisch braucht (=kein Admin) nimmt Notefix http://www.openntf.org/Projects/pmt.nsf/ProjectHome?ReadForm&Query=NoteFIX (http://www.openntf.org/Projects/pmt.nsf/ProjectHome?ReadForm&Query=NoteFIX)
Es gibt das was Du suchst, fertig. Also warum das Rad neu erfinden ?
Ich nutze FieldEdit um Testfälle zielgerecht anzupassen, oder falls z.B. der AdminP mal wieder ein Dokument nicht angepasst hat, um das Leserfeld zu korrigieren.
Schönen Abend noch,
Axel