Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Ozan am 07.04.09 - 09:35:10
-
Hallo,
möchte mit JS im Web ein Agent ausführen. In der Serverkonsole sehe ich aber folgende Fehlermeldung "Objekt variable not set" und im Web wird angezeigt "Agent done".
Das ganze funktioniert problemlos wenn ich das Agent mit "@Command([ToolsRunMacro]; "agent1")" starte. Daher meine Frage, muss ich eventuell anders deklarien?
Hier Code:
Sub Initialize
Dim ses As New notessession
Dim webdoc As notesdocument
Set webdoc = ses.DocumentContext
Dim status As String
Dim suche As String
suche =Right(webdoc.Query_String(0),6)
Dim db As NotesDatabase
Dim PersonView As NotesView
Dim PersonDC As NotesDocumentCollection
Dim PersonDoc As NotesDocument
Set db = ses.CurrentDatabase
Set PersonView = db.GetView( "refCode" )
Set PersonDC = PersonView.GetAllDocumentsByKey(suche, True)
If PersonDC.count <> 0 Then ***hier steht der Agent mit Objekt variable not set. ***
Set PersonDoc = PersonDC.GetFirstDocument
....
....
Gruss
Ozan
-
Seufz!
Warum kommt eigentlich kaum jemand auf die Idee, nach einem Get..... zu überprüfen, ob die Methode auch was zurückgeliefert hat?
Ich vermute mal, dass der Benutzer, unter dem der Agent über das Web ausgeführt wird (Anonymous, angemeldeter User oder der User, der in den Eigenschaften angegeben wurde) entweder keinen Zugriff auf die View oder die Dokumente in der View haben wird.
Weiters finde ich es "mutig", dass Du die Parameter für die Suche ungeprüft aus dem Query-String nimmst. Das sollte man nicht tun.
-
Ist alles Richtig befüllt?
Prüfe auch an den entsprechenden Zuweisungen auf Nothing usw.
Ok, wieder mal zu langsam...
-
@André: Man kann es ja gar nicht oft genug sagen ...
-
;D ;D ;D
Wenn man immer Zweiter ist, kann man irgendwann auch Erster werden
Jetzt warte ich noch auf ein Statement von Werner 8)
-
Hallo
@André
Jetzt warte ich noch auf ein Statement von Werner 8)
Bitte heute "etwas lansamer mit den jungen Pferden" - ich habe seit Freitag wenig geschlafen, aber im unterschied zu meinen jungen Kollegen, wo das an dem/den Kind/ern liegt, liegt es bei mir an der Arbeit.
Aber ab morgen wird alles besser ....
Gruß aus dem sonnigen Nürnberg nach Wien (1.) und Neuss (2.) und den Rest der Welt.
Werner
-
Hallo,
tatsächlich liegt das problem an der suchstring. Der war nehmlich Nothing weil ich per JS die Linkleiste verändere und zwar hinten mit OpenAgent.
Da hat der dann natürlich nach "nAgent" gesucht. :-X
Unverzeibarer Fehler von mir.
Das problem was ich jetzt habe ist dass die im Web-Formular angegebene infos nicht gespeichert werden weil der Agent-Aufruf per JS eine neue Seite hervorruft und die Felder die im Web ausgefüllt worden sind gar nicht mehr zu finden sind.
Wie kann ich hier vorgehen?
Gruss
Ozan
-
Gibt es keine Möglichkeit die Felder mit zu schleusen? Oder per JS zu setzen?
Ozan
-
XPages / Ajax ...
-
oha ... da kenne ich mich überhaupt nicht aus.
Was ich erreichen will ist :
Wenn der User im WEB Formular Felder nicht ausfüllt soll er nur ein Hinweis bekommen dass die Felder nicht ausgefüllt worden sind. Wenn er trotzdem weiter machen will soll dann der Agent ausgeführt werden der die Eingaben vom User speichert.
Ich hatte mir das mit ein confirm Befehl von JS überlegt gehabt, da komme ich leider nicht weiter weil mit der Agentaufruf "OpenAgent" die Eingaben weg sind.
Kennt jemand vielleicht eine andere Lösung?
Gruss
Ozan
-
Also wenn Du schon was neues auf 8 entwickelst, dann würde ich das gleich mit XPages machen. Musst halt ein wenig lernen.
Ansonsten z.B. http://www.codestore.net/store.nsf/unid/BLOG-20060523?OpenDocument oder http://lmgtfy.com/?q=Lotus+Notes+form+validation+web
-
Das was dort steht habe ich bereits umgesetzt und zwar habe ich ein Feld in der WEB Maske angelegt, den lade ich im Bereich Html-Body, dort schreibe ich wie z.b :
@If(Warnung = "";
"";
" onLoad=\"alert('" + Warnung + "')\"
" )
Das funktioniert auch, aber der zwingt eine Eingabe damit die Flichtfelder ausgefüllt werden.
kontrollfelder := @If(Nachname="";"Bitte füllen sie die Pflichtfelder aus...";"");
ThisWarnung0 := @Trim( kontrollfelder ) ;
ThisWarnung1 := @Implode( ThisWarnung0 ; "\\n") ;
@If( ThisWarnung1 = "" ;
@Do(
@Command([ToolsRunMacro]; "speichern")
)
;
@Do(
@SetField( "Warnung" ; ThisWarnung1 );
@Command([ViewRefreshFields])
)
)
Ich will ja hier nur ein Info einblenden mit dem nicht ausgefüllten Feldern, wenn der User OK anklickt dann soll ein Agent per @Command aufgerufen werden, wenn der User Abbrechen klickt dann soll kein Agent ausgeführt werden.
Ist es eigentlich überhaupt möglich mit der Formel Sprache von Notes, eine Abfrage-Fenster im Web anzuzeigen und jenachdem was der User anklickt(true oder false) ein Agent auszuführen?
Ozan