Modulo de Conexión en Access, Ado y VB 6.0

Hola soy Juan Diego quería saber cómo usar un módulo para conectar con access y usando ado, tengo el siguiente código:
/*------------------------------- código del módulo-----------------------------*/
Option Explicit
Public cnnADODB As New ADODB.Connection
Public Sub conexion()
    cnnADODB.Provider = "Microsoft.Jet.OLEDB.4.0"
    cnnADODB.ConnectionString = App.Path & "\Proyecto.mdb"
    cnnADODB.Open
End Sub
/*-----------------------------código del formulario----------------------------*/
acá hago una busqueda:
Private Sub txtcodigoproveedor_KeyPress(KeyAscii As Integer)
   If KeyAscii = 13 Then
        If Me.txtcodigoproveedor.Text = "" Then
            Me.txtcodigoproveedor.SetFocus
            Me.lblcartel.Caption = "Ingrese el Código del Proveedor Para Continuar"
        Else
            Me.lblcartel.Caption = ""
            Call conexion
            Set rstproveedores = cnnADODB.Execute("Select * From proveedores where codigoproveedor=" + Me.txtcodigoproveedor + "")

            If Not rstproveedores.EOF Then
                MsgBox ("El Proveedor ya existe")
                Me.txtcodigoproveedor.Text = ""
                Me.txtcodigoproveedor.SetFocus
            Else
                Me.txtnombreproveedor.SetFocus
                Me.lblcartel.Caption = ""
            End If
        End If
    End If
End Sub
Y me da el siguiente error:
Error 3704 en tiempo de ejecución "La Operación no está permitida sí el objeto está cerrado"
Y la verdad no sé cómo arreglarlo, intenté y intenté y no lo logré, y vengo a pedirte una mano.
¿Puedes ayudarme?, sí puedes contestar este mje te lo agradeceré
1

1 respuesta

1
Respuesta de
Estimado.
Es código parece a primera impresión bien, ahora, una causa general de errores y que veo que tu también lo haces es no cerrar nunca la base de datos, es decir, el error más común en usar OPEN, pero nunca CLOSE.
Otra cosa es saber en que momento haces esto tu, es decir, es el primer paso de tu programa o hay algún llamado anterior a la base.
Otro paso es hacer un seguimiento del proceso de ejecución, poniendo una interrupción antes del llamado a Call.
Otra cosa que veo es que después del OPEN no pones (), si así lo tienes en tu código está mal, por que lo estás llamando para que devuelva un dato (si está abierto o no) y no para que abra la base, si lo tienes sin () en tu código entonces hazlo.
Si te fui de ayuda, por favor valora y cierra la pregunta, así de esa manera, puedo ayudar a más personas.
Si tienes dudas me lo haces saber.
Saludos.
Eduardo.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Visual Basic o hacer tu propia pregunta: