Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: aba am 10.01.03 - 14:46:22

Titel: Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 14:46:22
Ich möchte beim verlassen eines Feldes einen Datensatz aus einer anderen Datenbank lesen.

Jetzt weiß ich leider nicht mit welchem Event das funktioniert!!

Kann mir da jemand helfen???
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: Meff am 10.01.03 - 14:48:41
Der Event heist "Exiting".

Meff ;)
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 14:50:59
Ok danke! Das hab ich gefunden.
Ich hatte vorher einen Button mit folgendem Befehl.

@SetField( "name"; @DbLookup("" : "NoCache" ; "" : "INOMETA-01!!SIM2 crm 2.0 Adressen.nsf" ; "(kuerzel)"  ; kürzel ; 2 ));
@SetField( "unit"; @DbLookup("" : "NoCache" ; "" : "INOMETA-01!!SIM2 crm 2.0 Adressen.nsf" ; "(kuerzel)"  ; kürzel ; 3 ))

wie baue ich das in diesen Event ein????
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: Meff am 10.01.03 - 14:58:19
Hi aba,

leider kannst Du in diesem Event nur mit Script arbeiten.

Meff ;)
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 14:59:49
Ja das denke ich mir aber da kann mir nicht zufäälig Meff oder jemand helfen. Da ich mit Script leider noch nicht bewandert bin!!
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: Meff am 10.01.03 - 15:03:11
Fangen wir doch einmal von hinten an. Was willst Du eigentlich machen ? Wenn ich die Formel richtig interpretiere, dann schreibst Du in zwei Felder (name und unit) zwei Werte aus einem View. Kann man das nicht schon früher machen ?

Meff ;)
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 15:11:38
Also ich habe einen Urlaubsantrag. Die User tragen in diesem Feld ein Kürzel ein. Dieses Kürzel ist in einer Datenbank"SIM2 crm 2.0 Adressen.nsf" hinterlegt sowie auch die beiden Aussagen Unit + Name, die dann ausgelesen werden sollen. Augenblicklich funktioniert das onclick auf einem Button. Aber die User wollen nicht immer auf diesen Button klicken!! Deshalb wenn man diese Feld verlässt sollen diese Daten gelesen werden!!!
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: Meff am 10.01.03 - 15:13:56
Das Problem mit dem Event "Exiting" ist meiner Meinung nach, dass der Anwender halt wirklich das Feld verlassen muss, d.h. der Focus muss verlagert werden. Oft gibt ein Anwender was in ein Feld ein und wartet dann, dass irgendetwas passiert und hier liegt dann der Hase begraben.

Meff
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 15:16:54
Das stimmt allerdings muß er das Feld verlassen, da er noch Daten wie z.B. von wann bis wann er Urlaub beantragen möchte, eintragen muß. Die User bekommen allerdings auch eine Arbeitsanweisung dazu und wer lesen kann ist klar im Vorteil(sagt mien Chef immer)
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: Meff am 10.01.03 - 15:26:35
Hi aba,

hier ein Beispiel für den Event :

Dim session As New NotesSession
   Dim uiWs As New NotesUIWorkspace
   Dim uiDoc As NotesUIDocument
   Dim curDb As NotesDatabase, searchDb As NotesDatabase
   Dim searchView As NotesView   
   Dim searchDoc As NotesDocument
   Dim i As Integer   
   Dim inText As String
   
   Set curDb = session.CurrentDatabase
   Set searchDb = New NotesDatabase(curDb.Server, "names.nsf") <-- Hier einfach den DB Namen einsetzten
   Set searchView = searchDb.GetView("$VIMPeople") <-- Hier kommt der Name des Views rein
   Set uiDoc = uiWs.CurrentDocument
   
   inText = uiDoc.FieldGetText("Test") <-- Name des Feldes mit dem Suchwert
   
   Set searchDoc = searchView.GetDocumentByKey(inText)
   
   Call uiDoc.FieldSetText("Test1", searchDoc.MailFile(0)) <-- Erster Wert ist das Feld, in welches geschrieben werden soll, zweiter Wert ist der zu schreibene Wert. Das musst Du einfach zweimal machen

Meff ;)
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 15:39:01
Hallo Meff,

vorab schon mal vielen Dank für die Mühe!

Aber leider habe ich noch zwei Fragen.

1.Welches ist die View ( bezogen auf die Formel die ich oben aufgeführt habe?

2.Set searchDoc = searchView.GetDocumentByKey(inText)
   Muß in Klammern "inText" durch etwas ersetzt werden??

3.Call uiDoc.FieldSetText( "name", searchDoc.MailFile("" : "NoCache" ; "" : "INOMETA-01!!SIM2 crm 2.0 Adressen.nsf" ; "(kuerzel)"  ; kürzel ; 2 ))
so??

Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: Meff am 10.01.03 - 16:01:43
Nö, nö,

1. Der Viewname ist (wenn ich Deine Formel richtig verstanden habe) "(kuerzel)".

2. "inText" ist nichts anderes als das Keyword, welches aus dem Feld gelesen wird, in welches der Anwender sein Namenskürzel eingibt.

3. Call uiDoc.FieldSetText("name", searchDoc.das Feld, welches in der 2. Spalte der Ansicht (kuerzel) steht. Die (0) wird benötigt, damit der erste Wert des Feldes genommen wird.


Meff ;)
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 16:18:04
Super die Formel sieht schon mal gut aus ( ohne Fehler )

Allerdings wenn ich jetzt teste und aus dem rausgehen, kommt folgende Fehlermeldung "Object variable not set"

Watn dat?????
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 16:29:28
Hallo Meff,

ich glaub ich hab noch etwas wichtiges verschwiegen.

Die Feldnamen(2. Spalte der Ansicht (kuerzel) befindet sich wiedrum in einer dritten Datenbank. Die muß ich dann doch bestimmt auch noch bekannt geben, oder???
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: Meff am 10.01.03 - 16:30:08
Wann kommt die Fehlermeldung ?

Mache doch mal folgendes : Über File - Tools kannst Du den Script Debuger einschalten. Dann gehst Du in das Feld, trägst einen Wert ein und verlässt das Feld. Sobald Du das Feld verlässt, springt der Debuger an. Schleife dann einfach durch die einzelnen Befehle und schaue, wo der Fehler generiert wird.

Meff
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 16:40:31
@Meff

Das ist die Zeile die angemeckert wird.

Set searchDoc = searchView.GetDocumentByKey(inText)
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: Meff am 10.01.03 - 16:53:47
Du machst doch in Deiner Formel einen @Dblookup auf den View, d.h. in der ersten indizierten Spalte steht der Suchwert, ergo kann hier nicht der Fehler liegen.

Suchst Du auch in der richtigen Datenbank ? Die Variable "SearchDb" steht für die Datenbank "Adressen.nsf". Ansonsten findet der Lookup einfach das Zieldokument nicht. Du solltest eh ne Fehlerroutine einbauen, falls der Anwender was falsches eingeben hat.
Das ganze sieht dann so aus :

   On Error Goto ScriptError
   Dim session As New NotesSession
   Dim uiWs As New NotesUIWorkspace
   Dim uiDoc As NotesUIDocument
   Dim curDb As NotesDatabase, searchDb As NotesDatabase
   Dim searchView As NotesView  
   Dim searchDoc As NotesDocument
   Dim i As Integer  
   Dim inText As String
   
   Set curDb = session.CurrentDatabase
   Set searchDb = New NotesDatabase(curDb.Server, "names.nsf") <-- Hier einfach den DB Namen einsetzten
   Set searchView = searchDb.GetView("$VIMPeople") <-- Hier kommt der Name des Views rein
   Set uiDoc = uiWs.CurrentDocument
   
   inText = uiDoc.FieldGetText("Test") <-- Name des Feldes mit dem Suchwert
   
   Set searchDoc = searchView.GetDocumentByKey(inText)
   
   Call uiDoc.FieldSetText("Test1", searchDoc.MailFile(0)) <-- Erster Wert ist das Feld, in welches geschrieben werden soll, zweiter Wert ist der zu schreibene Wert. Das musst Du einfach zweimal machen
 Exit Sub

  ScriptError:
  Messagebox"Bitte wiederholen Sie Ihre Eingabe. Bei der Verarbeitung ist ein Fehler aufgetreten.", 0+64, "Fehler"
  call uiDoc.GotoField("Feldname")


Meff ;)
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 17:02:23
Die SearchDB heißt bei mir nicht "Adressen.nsf" wie kann ich das änder??

Einfach antsatt SearchDB etwas schreiben oder dahinter den richtigen Namen der Datenbank??
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 17:04:18
Meine Formel sieht jetzt so aus!!

Sub Exiting(Source As Field)
   On Error Goto ScriptError
   Dim session As New NotesSession
   Dim uiWs As New NotesUIWorkspace
   Dim uiDoc As NotesUIDocument
   Dim curDb As NotesDatabase, searchDb As NotesDatabase
   Dim searchView As NotesView  
   Dim searchDoc As NotesDocument
   Dim i As Integer  
   Dim inText As String
   
   Set curDb = session.CurrentDatabase
   Set searchDb = New NotesDatabase(curDb.Server, "inometav.nsf")
   Set searchDb = New NotesDatabase(curDb.Server, "SIM2 crm 2.0 Adressen.nsf")
   Set searchView = searchDb.GetView("kuerzel")
   Set uiDoc = uiWs.CurrentDocument
   
   inText = uiDoc.FieldGetText("kürzel")
   
   Set searchDoc = searchView.GetDocumentByKey(inText)
   
   Call uiDoc.FieldSetText("name", searchDoc.Kürzel(0))
   
   Call uiDoc.FieldSetText("unit", searchDoc.Kürzel(0))
   
End Sub
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: Meff am 10.01.03 - 17:10:31
Set searchDb = New NotesDatabase(curDb.Server, "inometav.nsf")
Set searchDb = New NotesDatabase(curDb.Server, "SIM2 crm 2.0 Adressen.nsf")

Wie heist den die Datenbank jetzt ? Zuerst belegst Du die Variable "searchDb" mit der Datenbank "inometav.nsf" und anschliessend mit der "SIM2 crm 2.0 Adressen.nsf". Der Syntax ist ganz einfach "Set 'VariablenName' (=in unserem Fall searchDb) = New NotesDatabase('Datenbankserver', 'Datenbankfilename'). SearchDb ist die Datenbank, in welcher Du Suchen willst, also nicht die aktuelle Datenbank in welcher Du arbeitest !!

Call uiDoc.FieldSetText("name", searchDoc.Kürzel(0))
   
Call uiDoc.FieldSetText("unit", searchDoc.Kürzel(0))

Du setzt also sowohl in das Feld 'name' als auch in 'unit' des geöffeten Dokumentes den Wert im Feld 'Kürzel' des Dokumentes aus der Suchdatenbank. Wenn ich mir Deine Formel anschaue, dann verwendest Du aber zwei unterschiedliche Spaltenwerte und in denen dürfte ja eigentlich auch nichts anderes stehen, als zwei verschiedene Feldwerte.

Meff ;)

P.S.: Vielleicht schickst Du mir einfach mal eine Kopie der beiden Datenbanken, ich schaue mir das mal an und baue Dir den Script ein.
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: aba am 10.01.03 - 17:16:27
Alles klar Mail schon unterwegs.

Ich poste nachträglich selbstverständlich hier die Lösung!!!

Schönes Wochenende
Titel: Re:Beim verlassen eines Feldes Datensatz lesen
Beitrag von: Meff am 10.01.03 - 17:42:22
War doch ziemlich langwierig, aber zwischenzeitlich wurde das Problem gelöst, daher der Daumen hoch.