Visual Basic 6.0

Hola! Tengo un problema, estoy hacien do un programa en VB6.0 con Access 2007 que me permita guardar datos en la base de datos y me sale el siguiente error: "Variable de tipo Object o la variable de bloque With no está establecida"
elcodigo es el siguiente:
Private Sub Command5_Click()
On Error GoTo ControlError:
   Conexion.Open CadenaConexion
   CadenaSql = "Insert Into Personal(codigo,Nombres,Apellido,DocdeIdentidad,Tipo,Edad,FechadeNacimiento,Domicilio,Telefono,E-Mail,Taller,Categoria) " & _
               "Values(" & Text8 & ",'" & Text1 & "','" & _
               Text6 & "','" & Text2 & "','" & _
               Combo2 & "','" & Combo1 & "','" & _
               Text7 & "','" & Text3 & "','" & _
               Text4 & "','" & Text5 & "','" & _
               Combo4 & "','" & Combo3 & "')"
   If (Text8 <> "" And Text1 <> "" And Text6 <> "" And Text2 <> "" And Combo2 <> "" And Combo1 <> "" And Text7 <> "" And Text3 <> "" And Text4 <> "" And Text5 <> "" And Combo4 <> "" And Combo3 <> "") Then
      If (IsDate(Text7)) Then
         Conexion.Execute CadenaSql
         MsgBox "El dato fue guardado correctamente."
         txtcodigo.Text = ""
         TxtApellidos.Text = ""
         TxtNombres.Text = ""
         TxtFechaNacimiento = ""
         txtcodigo.SetFocus
      Else
         MsgBox "La fecha ingresada no es valida."
      End If
   Else
      MsgBox "Uno o mas campos estan vacios"
   End If
   If Conexion.State = adStateOpen Then
   Conexion.Close
   End If
ControlError:
   If Conexion.State = adStateOpen Then      <<<<ACA ME SALE EL ERROR
      Conexion.Close
   End If
   Select Case Err.Number
      Case -2147467259
         MsgBox "Ese dato se encuentra repetido"
   End Select
End Sub
Espero que me puedan ayudar se los agradecería muchísimo!
Gracias
1

1 Respuesta

165.725 pts. Más de 35 años en la informática y más de 20 trabajando...
Supongo que este código no estará sólo sino que será parte de un programa más completo.
En primer lugar veo que no tienes definida la variable 'Conexion'. Supongo que al ejecutarse entrará en la linea de "Conexión.Open' y se irá al apartado de los errores.
Si fuese así, el problema se resolvería declarando la variable (siempre es aconsejable declarar todas las variables para evitar errores).
Pon "Dim Conexion As New ADODB.Connection" detras de la línea "Private Sub Command5_Click()".
Espero que con eso se resuelva pero insisto en que debes definir todas las variables.
Hola desde ya le agradezco que se haya preocupado de mi problema!
Tengo todas las variables definidas me olvide de aclarar eso en la pregunta anterior:
Public Conexion As ADODB.Connection
Public Registros As ADODB.Recordset
Public Ruta As String
Public CadenaConexion As String
Public CadenaSql As String

Private Sub Command5_Click()
On Error GoTo ControlError:
   Conexion.Open CadenaConexion
   CadenaSql = "Insert Into Personal(codigo,Nombres,Apellido,DocdeIdentidad,Tipo,Edad,FechadeNacimiento,Domicilio,Telefono,E-Mail,Taller,Categoria) " & _
               "Values(" & Text8 & ",'" & Text1 & "','" & _
               Text6 & "','" & Text2 & "','" & _
               Combo2 & "','" & Combo1 & "','" & _
               Text7 & "','" & Text3 & "','" & _
               Text4 & "','" & Text5 & "','" & _
               Combo4 & "','" & Combo3 & "')"
   If (Text8 <> "" And Text1 <> "" And Text6 <> "" And Text2 <> "" And Combo2 <> "" And Combo1 <> "" And Text7 <> "" And Text3 <> "" And Text4 <> "" And Text5 <> "" And Combo4 <> "" And Combo3 <> "") Then
      If (IsDate(Text7)) Then
         Conexion.Execute CadenaSql
         MsgBox "El dato fue guardado correctamente."
         txtcodigo.Text = ""
         TxtApellidos.Text = ""
         TxtNombres.Text = ""
         TxtFechaNacimiento = ""
         txtcodigo.SetFocus
      Else
         MsgBox "La fecha ingresada no es valida."
      End If
   Else
      MsgBox "Uno o mas campos estan vacios"
   End If
   If Conexion.State = adStateOpen Then
   Conexion.Close
   End If
ControlError:
   If Conexion.State = adStateOpen Then    <<<<<ACA ME SALE EL ERROR
      Conexion.Close
   End If
   Select Case Err.Number
      Case -2147467259
         MsgBox "Ese dato se encuentra repetido"
   End Select
End Sub

El Error me dice: "Variable de tipo Object o la variable de bloque With no está establecida"
Espero que me puedas ayudar, tengo que terminar este trabajo para poder rendir un examen, desde ya te agradezco!


Definela como "NEW ADODB.Connection". Con la palabra "NEW".
Si no le pones eso en la instrucción DIM, tendrías que poner la siguiente instrucción antes de abrir la conexión:
Set Conexion = NEW ADODB:Connection
Hola, no entendí mucho lo que me quisiste explicar! Me lo podrías arreglar vos y me lo copias acá si no es mucha molestia !. Disculpa lo que pasa que soy nuevo en esto. Gracias
En lugar de poner:
Dim Conexion as ADOBD.Connection
... pon la siguiente línea:
Dim Conexion as New ADOBD.Connection

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas