URGENTE: variable tipo object o de bloque with no esta establecida
Saludos amigos del foro, tengo un problema en este punto: es una aplicacion en vb 6.0 con una conexion a una bd en access, tengo una funcion en un modulo de clase q tiene el siguiente codigo:
Function Query(ByVal cod As String) As ADODB.Recordset
Dim sql As String
On Error GoTo UnError
sql = "select codcli,nomcli from Clientes where CODCLI='" & cod & "'"
Set Query = cn.Execute(sql)
Exit Function
UnError:
MsgBox Err.Description, vbInformation
End Function
Y esta a su ves es llamada en el formulario con el boton consultar de la siguiente forma:
Private Sub cmdConsultar_Click()
Dim obj As clsClientes
Dim rs As ADODB.Recordset
Dim resp As String
Set obj = New clsClientes
resp = InputBox("Ingrese codigo a buscar", "Buscar")
Set rs = New ADODB.Recordset
Call Conecta
Set rs = obj.Query(resp)
If rs.EOF = True Then
MsgBox "El cliente no existe", vbInformation
Else
txtCod = rs!codcli
txtNom = rs!nomcli
End If
rs.Close
Call Cierra
Set rs = Nothing
Set obj = Nothing
End Sub
Ahora el problema es que cuando pulso el boton consultar e ingreso el dato en el inputbox acepto y me arroja el error: variable tipo object o de bloque with no esta establecida en la linea donde empieza el If con el rs.EOF esta linea se resalta en amarillo.
No se como llegar al asunto de esto asi que solicito su ayuda para resolver este problema, espero consideren mi mensaje, GRACIAS.
Function Query(ByVal cod As String) As ADODB.Recordset
Dim sql As String
On Error GoTo UnError
sql = "select codcli,nomcli from Clientes where CODCLI='" & cod & "'"
Set Query = cn.Execute(sql)
Exit Function
UnError:
MsgBox Err.Description, vbInformation
End Function
Y esta a su ves es llamada en el formulario con el boton consultar de la siguiente forma:
Private Sub cmdConsultar_Click()
Dim obj As clsClientes
Dim rs As ADODB.Recordset
Dim resp As String
Set obj = New clsClientes
resp = InputBox("Ingrese codigo a buscar", "Buscar")
Set rs = New ADODB.Recordset
Call Conecta
Set rs = obj.Query(resp)
If rs.EOF = True Then
MsgBox "El cliente no existe", vbInformation
Else
txtCod = rs!codcli
txtNom = rs!nomcli
End If
rs.Close
Call Cierra
Set rs = Nothing
Set obj = Nothing
End Sub
Ahora el problema es que cuando pulso el boton consultar e ingreso el dato en el inputbox acepto y me arroja el error: variable tipo object o de bloque with no esta establecida en la linea donde empieza el If con el rs.EOF esta linea se resalta en amarillo.
No se como llegar al asunto de esto asi que solicito su ayuda para resolver este problema, espero consideren mi mensaje, GRACIAS.
No veo errores en tu código, prueba lo siguiente, en la funcion, escribe asÃ
Set Query = New ADODB.Recordset
Set Query = cn.Execute(sql)
Saludos
Set Query = New ADODB.Recordset
Set Query = cn.Execute(sql)
Saludos
Gracias por la observacion, pero ahora el error es el siguiente: la operacion no esta permitida si el objeto esta cerrado en la fila If rs.EOF = True Then justo se resalta en amarillo.
Aunque la aplicacion si funciona si agrego la funcion en el General del formulario y la llamo con el boton de esta manera:
Function consultar(ByVal cod As String) As ADODB.Recordset
Dim sql As String
On Error GoTo UnError
sql = "select codigo,nombre from Clientes where codigo='" & cod & "'"
Set consultar = New ADODB.Recordset
Set consultar = cn.Execute(sql)
Exit Function
UnError:
MsgBox Err.Description, vbInformation
End Function
Y en el boton:
Private Sub cmdMostrar_Click()
Dim rs1 As ADODB.Recordset, resp As String
Set rs1 = New ADODB.Recordset
resp = InputBox("Ingrese codigo", "Buscar")
Call conecta
Set rs1 = consultar(resp)
If rs1.EOF = True Then
MsgBox "No se encontro", vbInformation, "Mensaje"
Else
txtCod.Text = rs1!codigo
txtNom.Text = rs1!nombre
End If
rs1.Close
Call cierra
Set rs1 = Nothing
End Sub
Aqui segui tu consejo y con esta codificacion si funciona de todas maneras quisiera que funcionara usando el modulo de clase, SALUDOS Y GRACIAS.
Aunque la aplicacion si funciona si agrego la funcion en el General del formulario y la llamo con el boton de esta manera:
Function consultar(ByVal cod As String) As ADODB.Recordset
Dim sql As String
On Error GoTo UnError
sql = "select codigo,nombre from Clientes where codigo='" & cod & "'"
Set consultar = New ADODB.Recordset
Set consultar = cn.Execute(sql)
Exit Function
UnError:
MsgBox Err.Description, vbInformation
End Function
Y en el boton:
Private Sub cmdMostrar_Click()
Dim rs1 As ADODB.Recordset, resp As String
Set rs1 = New ADODB.Recordset
resp = InputBox("Ingrese codigo", "Buscar")
Call conecta
Set rs1 = consultar(resp)
If rs1.EOF = True Then
MsgBox "No se encontro", vbInformation, "Mensaje"
Else
txtCod.Text = rs1!codigo
txtNom.Text = rs1!nombre
End If
rs1.Close
Call cierra
Set rs1 = Nothing
End Sub
Aqui segui tu consejo y con esta codificacion si funciona de todas maneras quisiera que funcionara usando el modulo de clase, SALUDOS Y GRACIAS.