Domino 9 und frühere Versionen > Entwicklung
Beim verlassen eines Feldes Datensatz lesen
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