Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: black_jack am 03.03.07 - 07:08:19
-
Hallo,
ich arbeite mit AllDocs und soll an einem Standardformular eine Änderung durchführen. Allerdings habe ich von Lotus Notes Progammierung keine Ahnung. Ich programmiere aber seit einiger Zeit (ca. 16 Jahre) in anderen prozedualen Programmiersprachen.
Zum Problem:
Das Formular enthält div. Kopfdaten wie "Betreff", "Zuständig" usw.
Wenn das Formular ausgefüllt ist, kann man es über einen Button, der sich im Formular befindet, abspeichern.
Das Formular wird dann autom. in eine bestehende Verzeichnisstruktur eingefügt.
Jetzt soll ich in dieser Struktur weitere Verzeichnisse von A-Z erzeugen (habe ich) und die Formulare sollen autom. in Abhängigkeit vom Anfangsbuchstaben des Benutzernachnamens in das jeweilige Verzeichnis (A-Z) gespeichert werden.
Dummerweise kann ich im Quelltext zu dem Button nicht auf mein Feld "Betreff" (in dem steht direkt der Nachname) zugreifen.
Ich habe einfach mal einen Namen hardcodiert vorgegeben und mit left("Name", 1) den Buchstaben abgeschnitten und mit & einfach an den vorgegebenen Pfad gehängt. Der Teil klappt schon mal, aber ich komme ums verrecken nicht an den aktuellen Namen ran.
Ich habe in etwa sowas probiert:
DIM Betreff AS String
DIM doc AS NotesDocument
..
..
SET Betreff = doc.GetItemValue("Subject")
Habe den Quelltext leider auf dem Firmenrechner und komme Montag erst wieder ran :-(
Auf jeden Fall klappt das nicht, Subject ist immer leer.
Ich hoffe jemand hat eine Lösung.
Vielen Dank schon mal
-
wenn es nur um die Darstellung der Daten in der Ansicht geht, dann bist du mit left("Name", 1) schon auf dem richtigen Weg. Allerdings brauchst du die bestehenden Dokumente in keiner Weise zu verändern, um deren Darstellung zu ändern.
Erstelle eine neue Ansicht in der Datenbank ( idealerweise kopierst du deine bestehende Ansicht ) Benenne die Ansicht so um, daß es für dich passt ( bsp. CatByNameFirstLetter )
Vor die erste Spalte in der Ansicht fügst du eine neue Spalte ein ( Im Designer: Erstellen - neue Spalte einfügen )
Spaltenwert ist dein Feld "Betreff" ( warum eigentlich Betrefff, wenn dort der Name steht ?? )
Bei den Spalteneigenschaften wählst du im zweiten Reiter die Option "Kategorien" und gegebenen falls eine Sortierreihefolge.
Jetzt stellst du den Spaltenwert von "Feld" auf "Formel" um und schreibst als Formel dort ein:
@Left(Betreff;1)
rein.
Nun speichere die Ansicht und sieh dir das Ergebnis an ...
-
Hi,
ich will ja nicht das Dokument ändern, sondern nur den Quelltext zu dem Button, der das Dokument ablegt/archiviert/speichert.
Das Dokument soll jetzt nur eine Ebene tiefer abgelegt werden.
Was den Betreff anbelangt, dort wird aus Name, Datum usw. eine Betreffzeile gebastelt. Habe ich nicht gemacht, muss ich auch so hinnehmen.
Ich glaube ich parke das Thema mal bis Montag. Ich habe als absoluter Notesneuling vermutlich die falschen Vokabeln bei der Beschreibung des Problems benutzt.
Ich habe auf jeden Fall das Gefühl, wir reden aneinander vorbei.
Montag habe ich den Queltext und der spricht eine klarere Sprache als ich.
Auf jeden Fall schon mal Danke für die schnelle Reaktion
-
SET Betreff = doc.GetItemValue("Subject")
... ist eh Nudelteig, da "Betreff" in deinem Fall als String deklariert wird. Hier ist aber Variant als Typ gefragt.
So wie ich dein Ausgangsposting interpretiere scheinen bei dir / euch die Basics über den Aufbau einer Notes Datenbank zu fehlen ( nicht böse gemeint ... )
Hänge hier am Besten einmal einen Screenshot deiner "Verzeichnisse" rein. Dann lässt sich der Status Quo besser beurteilen ...
-
Ich habe in etwa sowas probiert:
DIM Betreff AS String
DIM doc AS NotesDocument
..
..
SET Betreff = doc.GetItemValue("Subject")
Wenn das dein Quellcode ist, dann hätte es Fehlermeldungen bereits beim Speichern geben müssen.
SET may only be used on class instance assignments
Bei Ausführen hättest du einen Type mismatch bekommen müssen.
Poste mal den gesamten Code und führe dir mal die Designer-Hilfe zu Gemüte und hier insbesondere die Klassen NotesUIWorkspace, NotesUIDocument und NotesDocument. Da findest du einiges an Infos wie man an Feldinhalte rankommt.
Axel
-
Und bei der ganzen Sache offen bleiben für alternative Ideen und fremden Rat - insbesondere zu Ulrichs Posting #1.
Bernhard
PS: Das ganze wäre eigentlich eine lohnende Sache für ein Training on the job - Ihr solltet darüber mal nachdenken
-
hallo zusammen,
ich bin immer mehr davon überzeugt, dass ich meine Frage zu früh gestellt habe. Das Codesegment habe ich aus der Erinnerung geschrieben.
Ich werde mich Montag wieder mit dem echten Code melden.
-
Hallo zusammen,
das Problem ist gelöst. Ich habe in einem anderen script gestöbert und bin fündig geworden.
die Zeile:
benutzer$ = doc.subject(0)
lieferte die gewünschte Zeile. Jetzt kann ich mit left(benutzer$, 1) den 1. Buchstaben abschneiden und in die Verzeichnisstruktur des Archivs einbauen.
Vielen Dank nochmal.
Wenn ich das öfter brauchen sollte, werde ich mir vorher ein Lotus-Script Seminar antuen.