Domino 9 und frühere Versionen > Entwicklung

Beim verlassen eines Feldes Datensatz lesen

<< < (4/5) > >>

aba:
@Meff

Das ist die Zeile die angemeckert wird.

Set searchDoc = searchView.GetDocumentByKey(inText)

Meff:
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 ;)

aba:
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??

aba:
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

Meff:
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.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln