Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: mastertom am 04.01.03 - 11:43:18
-
Hallo,
ich stehe vor folgendem grundsätzlichem Problem:
eine Notes-Datenbank soll ins Web gestellt werden (klar, will jeder). Nun gibt es aber Befehle, die überhaupt nicht im WEB funktionieren. Wie kann ich diese mit welcher Technik am besten umwandeln.
Konkret:
a) Beim Öffnen einer Maske wird gefragt, welcher Typ von Maske genutzt werden soll (mit @Prompt). Nach Auswahl des Wertes wird die Maske (immer die gleiche) geöffnet, entsprechende Teilmasken geladen und andere Felder berechnet.
Wie kann dieses im WEB funktionieren. Der wichtigste Punkt ist das Öffnen der eigentlichen Maske mit Übergabe der Werte. Wie bekomme ich hier eine Werteübergabe hin?
b) Vor dem "Abschließen" des Dokuments im WEB müssen einige Informationen vom User eingeholt werden, die nacheinander abgefragt werden und aufeinander aufbauen. Also z.B.
Art des Autos? Kombi / Limusine ---> Wenn Kombi dann mit oder ohne Dachreling, wenn Limusine dann 2 oder 4 Türen usw.... erst nach Eingabe dieser Infos soll das Dokument dann im Backend weiterverwurstelt werden (das ist dann wieder kein Problem).
Wie bekomme ich diese genannten Usereingaben SICHER im Web durchgeführt? Welche Techniken stehen zur Verfügung, wie werden Werte/Variablen/Parameter an Masken übergeben?
Ich hoffe, meine Darstellung war einigermassen schlüssig und nun bin ich neugierig auf Eure Antworten.
-
Hi mastertom...
... genügend Stoff für einen Grundkurs in Webprogrammierung ;D
... In der Maske gibt es Events, mit denen du beim Starten und Beenden des Dokumentes Agenten starten kannst...
... mit session.DocumentContext kannst du Dokumente aus dem Browser initialisieren...
... ansonsten gibt es auch noch JavaScript, mit dem einiges möglich ist...
ata
-
Danke erst einmal für die Antwort ;-)
... jetzt muss ich mal scharf nachdenken:
Wenn ich mit session.DocumentContext arbeite... welche Werte kann ich im Web abfragen?
Beispiel: Ich stehe z.B. im Web auf einem Dokument und via Klick wird ein anderes Dokument geöffnet. Kann ich mit session.DocumentContext (des neuen Dokuments) auch noch Werte vom aufrufenden Dokument übernehmen und im neuen Dokument hinterlegen? Wenn ja, hast Du ein kurzes Sample?
-
das geht indem Du im Link die ParentUNID des zugrundeliegenden Doc mitgibst, womit Du dann die Daten aus dem Quelldokument dem neuen Doc übergeben kannst.
Hierzu dieser Link:
http://www.atnotes.de/index.php?board=7;action=display;threadid=1998 (weiter unten ist dann die Befehlssynatx für den URL String)
-
Hmm... also Feldvererbung via URL-Übergabe... nicht dumm das!
Muss ich gleich mal probieren ;-)
Noch andere Ansätze?
;D
-
nicht ganz Feldvererbung wie typischerweise im klass. HTML die Weitergabe von Variablen in der URL, da Notes in der URL nur die Doc-ID des ParentDocs benötigt. Der Rest - also Zugriff auf die Feldinhalte des ParentDocs - läuft Dominoseitig intern ab. Dazu braucht man eben keine Feldinhalte in der URL weiterzugeben.
-
Jetzt hab ich mir nen Wolf probiert und stehe noch immer auf der Leitung: Ich beschreib mal:
a) Dokument mit Feldwerten befüllen
b) Andere Form geöffnet mit folgendem Code:
@Command([FileSave]);
UNID:=@Text(@DocumentUniqueID );
@URLOpen("/"+@ReplaceSubstring(@Subset(@DbName; -1);" ";"+")+"/HTML4?OpenForm&UNID="+UNID)
c:) Das Zieldokument ist so programmiert, dass es die Feldwerte vom aufrufenden Dokument übernimmt, im Notes klappt die Übernahme auch
-------------------------
Was passiert:
1) Feld im Zieldokument wird nicht wie in Notes befüllt (sollte das funktionieren???)
---------------------
Was kann ich machen?
Mit welchem Code kann ich im WebQueryOpen des Zieldokumentes auf das Ursprungsdokument und deren Felder verweisen? Bitte ein kurzer Beispielcode...
Sorry für mein "Nichtverstehen" ... und das am Wochenende ::)
-
Vergleich das mal bitte ganz genau mit der unteren Kochanleitung vaD dem letzten Teil bzgl. der Feldformeln UND achte darauf als Paremeter "PARENTUNID=" zu verwenden...das ist nicht zu ersetzen durch "Rumpelstilzchen", sondern ein feststehender Begriff, mit dem Domino angewiesen wird, Werte zu übernehmen.
ParentUNID = EindeutigeIDNummer
wobei EindeutigeIDNummer die Dokument-ID des übergeordneten Dokuments ist, die in Antwortmasken verwendet wird, oder wenn die Maskeneigenschaft "Formeln übernehmen Werte aus gewähltem Dokument" ausgewählt ist.
Syntax
http://Host/Datenbank/MaskenUniverselleID?OpenForm&ParentUNID
Beispiel
http://www.quecksilber.com/produkte.nsf/40aa91d55cle4c8285256363004dc9e0?OpenForm&ParentUNID=6bc72a92613fd6bf852563de001f1a25
UND
Felder erstellen, die Werte übernehmen
Ein Feld kann Werte aus einem anderen Dokument derselben Datenbank oder aus einem anderen Feld derselben Maske übernehmen. Ein Feld, das einen Wert von einem Feld in derselben Maske übernimmt, muß ein berechnetes Feld sein, das unter oder rechts neben dem Feld plaziert wird, aus dem es den Wert übernimmt. Verwenden Sie den Namen des Feldes, dessen Wert verwendet werden soll, als Wert für die Feldformel. In der Maske selbst muß die Eigenschaft "Feldwerte übernehmen" nicht eingestellt sein. Um den Feldwert von einer anderen Maske zu übernehmen, muß der Benutzer eines Notes Clients diese Maske auswählen, und ein Web-Benutzer muß die Maske öffnen oder im URL-Befehl, zum Beispiel http://server/db.nsf/InheritanceForm?OpenForm&ParentUNID=6b87e303374b19148525639a00506656, darauf verweisen.
So erstellen Sie ein Feld, das Werte aus anderen Dokumenten übernimmt
Erstellen Sie Felder, die Informationen von einem anderen Dokument übernehmen, um Benutzern unnötige Eingaben zu ersparen oder zusammengehörige Dokumente konsistent zu halten. Öffnen Sie die Maske.
1. Wählen Sie "Gestaltung - Eigenschaften: Maske".
2. (Optional) Um Endbenutzern das Hauptdokument in der Dokumentvorschau des Notes Clients anzuzeigen, klicken Sie auf das Register "Vorgaben", wählen Sie "Beim Öffnen: Kontextfenster anzeigen" und anschließend "Hauptdokument".
3. Wählen Sie "Beim Erstellen: Formeln übernehmen Werte aus gewähltem Dokument".
4. Erstellen Sie die Felder, die Werte übernehmen sollten.
5. Schreiben Sie einen Standardwert oder eine Feldberechnungsformel für jedes Feld, das den Feldnamen des Hauptdokuments als Wert verwendet. Um z. B. den Wert des Feldes "VollstName" zu übernehmen, benutzen Sie "VollstName" als Formel in dem Feld, das den Wert übernimmt.
Beispiel: Adreßinformationen übernehmen
In einer Kundenkontakt-Anwendung werden Informationen in einer Briefmaske durch Übernahme aus einem Firmenprofil-Dokument kopiert. Das Firmenprofil enthält außer dem Namen und Adreßfeldern ein verborgenes Feld namens "VollstName". Die Brief-Maske übernimmt die Werte für den Namen und die Adreßfelder für den Adreßblock und benutzt das Feld "VollstName" für die Grußformel.
Wenn der Benutzer eines Notes Clients ein Firmenprofil markiert und "Erstellen Brief" wählt, sind im Brief bereits der Name und die Adresse des Empfängers sowie die korrekte Grußformel enthalten.
Wenn Web-Benutzer das Firmenprofil-Dokument öffnen und auf eine Schaltfläche klicken, um einen Brief zu erstellen, sind im Brief bereits der Name und die Adresse des Empfängers sowie die korrekte Grußformel enthalten.
-
Jetzt hat es geklappt... mein Fehler war wirklich die UNID anstelle der ParentUNID zu übergeben!! JEtzt bin ich 1000 Schritte weiter!
Vielen Dank!!!!
-
Das Einzige Problem sehe ich allerdings, dass das aufrufende Dokument zwingend eine DocID besitzten muss.. also bereits abgespeichert sein muss.
Was mache ich, wenn ich ein Dokument (z.B. via Navigator) aufrufe und gleich mit Werten belegen möchte? Muss ich dann doch eher wieder über die "Krücke" Java Scirpt gehen?