es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Answer

  1. Avatar for 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!

Comments are closed.