Autor Thema: Java: Neues Dokument aus Applet heraus erstellen  (Gelesen 1603 mal)

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Java: Neues Dokument aus Applet heraus erstellen
« am: 16.09.02 - 13:09:09 »
Hallo!

Ich habe ein Java-Applet in eine Notes-Datenbank eingebunden. Nun möchte ich, dass bei einem Doppelklick ein neues Dokument mit einer bestimmten Maske erstellt wird, also so etwas wie @Command([Compose]).

Das mit mit dem Doppelklick funktioniert wunderbar, ich bräuchte nur noch diese bestimmte Funktion, um ein neues Dokument zu erstellen. Es wäre auch sehr hilfreich zu wissen, welche Klassen ich in die Applet-Klasse einbinden muss, damit ich diese Funktion verwenden kann.

Schönen Gruß
Manuel
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline Markus

  • Frischling
  • *
  • Beiträge: 29
  • I love YaBB 1G - SP1!
Re: Java: Neues Dokument aus Applet heraus erstell
« Antwort #1 am: 16.09.02 - 14:16:23 »
Hallo Manuel,

warum rufst Du nicht per versteckter Schaltfläche mit @Command([ToolsRunMakro],...) und "return _doClick('DieseNummerFindetSichImQuellCode')" oder per URL-Kommando einen Agenten auf, erstellst Dein Dokument und schickst es zum Browser?

Gruss
Markus
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Java: Neues Dokument aus Applet heraus erstell
« Antwort #2 am: 16.09.02 - 14:31:45 »
Hallo Markus!

Danke für deine Antwort, aber ... ???

Meine Datenbank befindet sich nicht im Web. Ist 'ne ganz normale Notes-DB. Und wie kann ich eine versteckte Schaltfläche durch das Java-Applet aufrufen? Geht das überhaupt? Ich kenne mich leider damit zu wenig aus.

Habe mittlerweile eine Möglichkeit gefunden, ein neues Dokument zu erstellen. Der Funktionssyntax lautet

public Document createDocument() throws NotesException

Im Code sieht das dann folgendermaßen aus:
doc = dbNotes.createDocument() ;

Die Maske, mit der das Dokument erstellt wird, kann so festgelegt werden:
doc.replaceItemValue("Form","Mask1" ) ;


Dieser Prozess läuft jedoch im Hintergrund, ohne das der User etwas mitbekommt. Ich bräuchte jetzt nur noch eine Funktion, die es ermöglicht, diese gerade eben erstellte Maske dem User anzuzeigen. Jemand eine Idee?

lg
Manuel
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline Markus

  • Frischling
  • *
  • Beiträge: 29
  • I love YaBB 1G - SP1!
Re: Java: Neues Dokument aus Applet heraus erstell
« Antwort #3 am: 16.09.02 - 14:53:59 »
Hallo Manuel,

entschuldige, ich hatte Dich etwas missverstanden. Mit welchem Befehl Du aus dem Java-Code, dass Dokument ins Frontend bringen kannst, weiss ich ehrlich gesagt nicht. Wühl Dich mal durch die Hilfe, da existiert bestimmt etwas. Ansonsten kannst Du über die Run-Methode, auch einen Agenten aufrufen, der dies für Dich erledigt. Dies ist aber wahrscheinlich die umständlichere Variante ...

Gruss
Markus
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re:Java: Neues Dokument aus Applet heraus erstellen
« Antwort #4 am: 26.11.02 - 15:47:54 »
Hallo nochmal

Hab jetzt wieder mal an diesem Problem gebastelt und eine ganz annehmbare Lösung gefunden. Hier ist der Code, wie ich es nun anstelle. Die wichtigen Zeilen habe ich fett markiert.
Mit createDocument() wird also ein neues Dokument erstellt (analog zur Script-Methode). Als nächstes wird die Maske 'MReservation' zugeweisen und die Methode computeWithForm() ausgeführt.
Die Zeile mit der save-Methode lassen wir mal ausser acht.

Anschließend wird die URL des Dokuments ausgelesen und mittels showDocument(docURL) wird das Dokument geöffnet.


             Applet applet;
            Session session = null;
            Database dbNotes;
            Document doc;
         
          applet = opt.getApplet();
         
          try {
             NotesThread.sinitThread();
               session = NotesFactory.createSession() ;
               dbNotes = session.getDatabase(applet.getParameter("Server"),
                                               applet.getParameter("Database")) ;
                                               
               // neues Dokument
               doc = dbNotes.createDocument();
               // Maske
               doc.replaceItemValue("Form","MReservation" ) ;
               // ... hier werden noch weitere Felder befüllt ...
               
               boolean computed = doc.computeWithForm(true, false);
               boolean saved = doc.save();
                             
               // URL des Dokuments
               URL docURL = null ;
          try {
             docURL = new URL(doc.getURL()) ;
          }
          catch( Exception ex ) {}
          // Dokument öffnen
               applet.getAppletContext().showDocument(docURL);
            }
            catch(Exception e1)  {
           e1.printStackTrace();
            }
            finally
           {
            NotesThread.stermThread();
           }


Wenn das Dokument vor dem Öffnen nicht gespeichert wurde erscheint die Fehlermeldung "Das in der Verknüpfung angegebene Dokument wurde in der verknüpften Datenbank nicht gefunden." Wenn ich es hingegen speichere funktioniert alles wunderbar und das Dokument wird geöffnet, ohne weitere Probleme. Nur ist es eben ziemlich lästig wenn das Dokument bereits vorher gespeichert wird. Wenn sich nun der User entscheidet doch keine Änderungen am Dokument vorzunehmen und es sozusagen brach liegen lässt dann gibt es "Dokument-Leichen" in der Datenbank. Diese müssten dann zB mit einem Agenten gelöscht werden. Meine Frage lautet also: Muss ich denn das neue Dokument wirklich vorher speichern, bevor es geöffnet wird? Gibt es denn keine andere Lösung(en)?

Es ist natürlich keine allzugroße Tragik wenn ich einen Agenten laufen lasse, der mir alle "Leichen" aus der Datenbank löscht. Nur vielleicht geht's auch anders?

Schöne Grüße
Manuel
V 5.0.2c | Windows 2000

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz