Error de objeto no establecido en LotusScript.
Estoy tratando de obtener la entrada del usuario y reemplazar el valor ingresado por el usuario en un campo en particular. He intentado el siguiente código pero obtengo un “Error de variable de objeto no establecida”. No estoy seguro de dónde me estoy equivocando. Por favor, ayúdame a resolver este error. Gracias de antemano.
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim item As NotesItem
Set db = session.CurrentDatabase
rfield = Inputbox("introducir nombre")
If rfield = "" Then
Exit Sub
End If
nval = Inputbox("Ingresar el propósito")
Call doc.ReplaceItemValue(Cstr(rfield), "Nombre")
Call doc.ReplaceItemValue(Cstr(nval),"Propósito")
Call doc.Save(False,True)
End Sub
davy.ai
Hay algunos problemas con el código proporcionado que pueden causar el error “Variable de objeto no definida”. Una de las principales razones es que la variable ‘doc’ no se asigna a ningún objeto de documento antes de intentar acceder a él.
Para resolver el error, debes agregar el siguiente código después de establecer la variable ‘db’:
Set doc = Source.Document
Esto asignará el objeto de documento actual a la variable ‘doc’, que luego se puede usar para reemplazar los valores de los campos.
Además, asegúrate de que los nombres de los campos (por ejemplo, “Name” y “Purpose”) pasados al método ReplaceItemValue sean correctos y coincidan con los campos del formulario.
El código corregido debería verse así:
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim item As NotesItem
Set db = session.CurrentDatabase
Set doc = Source.Document
rfield = Inputbox("Ingrese el nombre")
If rfield = "" Then
Exit Sub
End If
nval = Inputbox("Ingrese el propósito")
Call doc.ReplaceItemValue(Cstr(rfield), doc.GetItemValue("Name")(0))
Call doc.ReplaceItemValue(Cstr(nval), doc.GetItemValue("Purpose")(0))
Call doc.Save(False,True)
End Sub
He agregado el código para recuperar el documento actual utilizando la propiedad ‘Source.Document’ y también he actualizado el primer método ReplaceItemValue para usar doc.GetItemValue(“Name”)(0) para obtener el valor del campo “Name”.
¡Espero que esto ayude!