Autor Thema: Quellcode ... ich kapiers nicht  (Gelesen 3977 mal)

TomLudwig

  • Gast
Quellcode ... ich kapiers nicht
« am: 18.10.04 - 12:36:53 »
Hallo zusammen,

ich habe mir einen Beispielcode runter geladen aus der Sandbox. Leider steig ich nicht so ganz durch. Der Agent wird über einen Button im WEB aufgerufen.
Die entstehende HTML Seite wird in der Funktion BuildForm erstellt.
Kann mir jemand allgemein erklären was da gemacht wird??? Danke...


Dim windowTitle As String
   Dim DB As NotesDatabase
   Dim agentName As String
   
   Dim Session As New NotesSession
   Dim nabDB As NotesDatabase
   Dim View As NotesView, ViewDoc As NotesDocument
   Dim Doc As NotesDocument, noteName As NotesName
   Dim nabName As String
   Dim nabView As String
   
   windowTitle = "Titel"
   agentNames = Evaluate({@explode("} & Session.currentAgent.Name & {"; "|")} )
   agentName = Trim(agentNames( Ubound(agentNames) ))
   
   nabName = "names.nsf"
   nabView = "($People)"
   
   Set DB = Session.CurrentDatabase
   Set Doc = Session.DocumentContext
   
   If Doc Is Nothing Then
      ' For testing only.
      Set Doc = DB.CreateDocument
      doc.query_string = "OpenAgent&data"
   End If
   
   If Instr( Lcase(Doc.Query_String(0)), "&data") Then
      ' read the view and product a comma separated file
      Print "Content-Type: text/plain"  ' needed to make this a plain file
      
      'Open the NAB
      Set nabDB = Session.GetDatabase( DB.Server, nabName)
      Set View = nabDB.GetView( nabView )
      
      ' Output the header
      Print "Name,lastName,returnValue"
      Set ViewDoc = View.GetFirstDocument
      While Not ViewDoc Is Nothing
         Set noteName = New  NotesName( ViewDoc.Fullname(0) )
         Print noteName.common & "," & Ucase(ViewDoc.Lastname(0)) & "," & ViewDoc.Fullname(0)
         Set ViewDoc = View.GetNextDocument( ViewDoc )
      Wend
      
   Else
      
      Call BuildForm
      
   End If

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Quellcode ... ich kapiers nicht
« Antwort #1 am: 18.10.04 - 13:04:27 »
Also, wenn Du das aus dem Sandkasten hast, dann gibt es da bestimmt auch eine Beschreibung, was das Ding tut, wäre gut gewesen, wenn Du das mitgeliefert hättest.

Ansonsten, da werden die Namen aus dem lokalen Adressbuch ausgelesen und dargestellt (oder sollen wenigstens), soweit ich das verstehe
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

TomLudwig

  • Gast
Re: Quellcode ... ich kapiers nicht
« Antwort #2 am: 18.10.04 - 13:08:49 »
Sorry,
genau das soll das Teil machen. Aber ich kapier den Ablauf nicht.

Der DocumentContext gibt mir das aktuelle Dokument zurück.
Somit ist die erste IF-Abfrage sinnlos. Oder nicht?

Im IF-Fall der zweiten Abfrage werden die Namen irgendwo (wo auch immer) hingeschrieben. Aber nicht angezeigt.
Erst im Else-Fall wird das HTML-Dok erzeugt. Aber dennoch werden beim ersten Auffruf (IF-Fall) die Namen angezeigt.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Quellcode ... ich kapiers nicht
« Antwort #3 am: 18.10.04 - 13:35:53 »
DocumentContext gibt nicht das aktuelle Doc zurück, sondern eine temporäre Kopie davon und das auch nur in einer Web-Anwendung. Darüber hinaus findet man in dem Document auch die CGI-Variablen.

Will man das Ding ohne Web testen, macht die erste If-Anfrage Sinn, denn so lässt sich die Sache imitieren, das ist auch der Sinn des Kommentares dabei.

Print geht in diesem Falle an den Browser raus, damit werden die Namen rausgeschrieben. Ich denke, Du solltest mal in der Designer-Hilfe nachlesen, wie die Agenten wirken, wenn sie im Web eingesetzt sind, das sind Basics hier.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re: Quellcode ... ich kapiers nicht
« Antwort #4 am: 18.10.04 - 13:49:06 »
Der Vollständigkeit halber:
Der Code befindet sich in dem Sandbox-Teil aus diesem Thread:

http://www.atnotes.de/index.php?topic=18865.0

doc muss das Dokument sein, in dem der Button für den Names Picker hinterlegt ist. Dort wird per Javascript der Agent aufgerufen.

Andreas

TomLudwig

  • Gast
Re: Quellcode ... ich kapiers nicht
« Antwort #5 am: 18.10.04 - 13:50:43 »
Ja genau, Glombi stimmt.

Ja gut, dann greift der else-Fall der zweiten IF-Abfrage nur wenn ich den Agenten im WEB starte. Aber woher holt er sich dann die Namen? Die werden ja nur im IF-Fall ausgelesen.

In der Funktion Build Form steht folgender Eintrag. Woher kommt die Datasource? Das sind nämlich die Namen im Else-Fall...

   Print |<table id="pickListTable" datasrc="#dsoPersonByLastName" style="height: 100%; width: 100%" cellspacing="0" datapagesize="15">|
   Print |  <tbody>|
   Print |    <TR>|
   Print |      <td bgcolor=white><a datafld="returnValue" onclick="returnName(this.href);"><span datafld="Name"></span></a></td>|
   Print |    </tr>|
   Print |  </tbody>|
   Print |</table>|

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Quellcode ... ich kapiers nicht
« Antwort #6 am: 18.10.04 - 13:55:56 »
Umgekehrt, das zweite If greift in jedem Falle, wenn auch das erste If greift, denn dort wird ja genau der String, nach dem gesucht wird, ins Doc und ins Feld geschrieben. Im Web-Fall greift das zweite If nur, wenn im Agentenaufruf der Parameter entsprechend gesetzt ist.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

TomLudwig

  • Gast
Re: Quellcode ... ich kapiers nicht
« Antwort #7 am: 18.10.04 - 14:44:22 »
Der Agent wird mit folgendem JavaScript Code aufgerufen:

   sReturnName = window.showModalDialog("addressbook?OpenAgent", null, sDialogOptions);

Von daher kann ich jetzt sagen, das nur der Else-Fall der zweiten IF-Abfrage greift.
Aber wo kommen dann meine Daten her? Aus der Datasrc dsoPersonByLastName ???

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Quellcode ... ich kapiers nicht
« Antwort #8 am: 18.10.04 - 14:49:55 »
Stimmt, mit dem Aufruf kommt er in den Else-Zweig. Und dort holt er sich die Daten offenbar mit

datasrc="#dsoPersonByLastName"

Und da kann ich Dir leider nicht weiterhelfen, ohne zu suchen :(
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

TomLudwig

  • Gast
Re: Quellcode ... ich kapiers nicht
« Antwort #9 am: 18.10.04 - 15:10:43 »
Hier die Lösung für alle dies interessiert ;)

   Print |<object id="dsoPersonByLastName" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">|
   Print |  <param name="DataURL" value="| & agentName & |?OpenAgent&data">|
   Print |  <param name="UseHeader" value="true">|
   Print |</object>|

Das ist der Teil in dem das Objekt dsoPersonByLastName erstellt wird. Mit der ZielURL wird der Agent noch einmal gestartet mit den Parametern, sodass die Namen aus dem Adressbuch ausgelesen werden.

Danke für eure Mithilfe beim Finden der Lösung !!!

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Quellcode ... ich kapiers nicht
« Antwort #10 am: 18.10.04 - 15:17:15 »
Habs vermutet, dass da noch ein Objekt aufgebaut wird ....
« Letzte Änderung: 18.10.04 - 16:59:11 von Semeaphoros »
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Marinero Atlántico

  • Gast
Re: Quellcode ... ich kapiers nicht
« Antwort #11 am: 18.10.04 - 16:58:47 »
Ich finde das schon ziemlich bemerkenswerten bis seltsamen code.
Das sind MS-Windows Script Components.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/leteleobject.asp

Zitat
Microsoft® Windows® Script Components provide you with an easy way to create COM components using scripting languages such as Microsoft® Visual Basic® Scripting Edition (VBScript) and Microsoft® JScript®. Use script components as COM components in applications such as Microsoft® Internet Information Services (IIS), Microsoft® Windows® Script Host, and any other application that can support COM components.

Hast du das mal mit Mozilla/Netscape ausprobiert? Glaub nicht dass das funktioniert.
Das ist jedenfalls ein callback auf den Server während die Webseite aufgebaut wird.
Hab ich in LoNo Programmierung so noch nicht gesehen.

Gruß Axel

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Quellcode ... ich kapiers nicht
« Antwort #12 am: 18.10.04 - 17:04:13 »
Stimmt, Axel, das steht aber auch schon im entsprechenden Artikel auf LDD:

Zitat
This version supports ONLY IE 4+ as it uses the data binding extensions that IE has.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

TomLudwig

  • Gast
Re: Quellcode ... ich kapiers nicht
« Antwort #13 am: 19.10.04 - 07:57:11 »
Ja, ich habs schon gelesen...
Aber wie kann man so was anders realisieren, sodass es auch in Netscape usw. läuft?

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Quellcode ... ich kapiers nicht
« Antwort #14 am: 19.10.04 - 08:34:04 »
Genau gleich, nur anders ...... :)

Man baut gleich beim ersten Aufruf die gesamte Seite auf, gibt etwas mehr Code, aber ist machbar. Oder man gibt die Daten in einen View und zeigt diesen View in einem Formular als embedded View an, mit der Auswahl wird es dann allerdings ein wenig trickreich, bei Mehrfachauswahlen. Jedenfalls führen da mehrere Wege ans Ziel.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

TomLudwig

  • Gast
Re: Quellcode ... ich kapiers nicht
« Antwort #15 am: 19.10.04 - 12:07:59 »
Ich kann die Einträge zwar in ein Feld schreiben und dort dann einen auswählen.
Aber wie bekomme ich dann wieder meinen Rückgabewert? Der hängt ja vom ausgeählten Namen ab.
Wenn ich alles in ein Array schreibe hab ich das Problem, das Namen doppelt vorkommen können.

Und eine eindeutige Nr. hat man ja in Notes leider nicht...

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Quellcode ... ich kapiers nicht
« Antwort #16 am: 19.10.04 - 13:08:24 »
Na ja, den Rückgabewert kann man sich ja schon in ein Feld schreiben lassen, oder mit JavaScript zusammensammeln. Wenn Du über eindeutige Nummern arbeiten willst, dann muss die DocumentUNID zu Hilfe genommen werden. Und wenn man das ganze über ein Form mit eingebettetem (sogenanntem schlafenden) Vieh löst, dann lässt sich das bei Betätigung von Submit über WebQuerySave wieder abfangen, oder man ruft über einen Link einen weiteren Agenten auf. Viele Wege führen nach Rom ....
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

TomLudwig

  • Gast
Re: Quellcode ... ich kapiers nicht
« Antwort #17 am: 19.10.04 - 15:30:46 »
Naja, bis ich nach Rom komme wirds wahrscheinlich noch ein wenig dauern. Ich probier mal ein paar Sachen aus. Wird schon werden :P

Danke noch mal an alle die mir so genial weiter geholfen haben. thx.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz