Acceso a Access 2007 desde Visual Basic 6, error al ingresar datos

Espero me ayuden con esto:

.- Estos realizando una programa para ingresar productos en una base de datos (llamada BDTraiding), en una tabla llamada PRODUCTOS y poseo como clave principal la columna ITEM, el enlace entre Access y VB ya lo realice por lo que me muestra en el Userform el DataGrid lo que pueda llenar desde Access, ahora al tratar de realizar la macro para que me agregue desde el programa me arroja un error, voy a colocar las imagenes de la secuencia de lo que les comento y el código como lo tengo escrito, espero me ayuden.

1 Respuesta

Respuesta
1

José Antonio. Esta bien ilustrado tu caso, pero sería bueno que dijeras el error, el el numero del error de la línea donde se detiene el programa.

Pero viéndolo bien, creo que te falta establecer la ruta a la base de datos. Algo como esto:

Dim sPathBase As String
sPathBase = "C:\MIBASE\BDTraiding.MDB"

O, Si la base de datos está actualmente abierta, puedes escribir:
Set CN = CurrentDb 

Gracias Richard por responder, el numero de error se ve en la tercera imagen igual se lo coloco aquí -2147217904(80040e10), y la imagen que le coloco abajo es donde declaro la ubicación de la bd en el LOAD del Form.

la cual esta ubicada en la misma carpeta del proyecto.

Saludos y gracias por su aporte.

Ok. Disculpa. No me fijé en el número de error. Pero el error tal vez sea porque estás intentando crear un SQL de consulta condicionado (WHERE) con txtitem y no lo encuentra en la columna ITEM del recorset, o el txtitem está vacío, u otra cosa. El problema debe estar en el control txtitem.

Porque no intentas crear el SQL sin el WHERE, ¿y vas probando poco a poco para ver?

También, encontré esta sugerencia de los muchachos de Microsoft:

CAUSA

Este error se produce sólo con Microsoft Access cuando uno de los nombres de columna especificados en una instrucción select no existe en la tabla que se consulta.

RESOLUCIÓN

Quitar los nombres de columna no válida de la instrucción select.

https://support.microsoft.com/es-es/kb/216425

Gracias Richard por la ayuda, no te preocupes en las primeras pense que salía muy pequeño el error tranquilo... te cuento soy aprendiz en esto de programar y siempre me ha gustado... de hecho lo hacia en excel pero se me quedo pequeño y ahora estoy con access.

Eso que arroja Microsoft ya lo habia leído y me salio la duda de que porque el nombre de la columna si en el datagrid me refleja mis datos normalmente (Imagen 2),

Lo que creo sucede en  mi ignorancia novata, es que no se si habría que declarar en alguna parte u opción del textbox que va relacionado con la BD y a que columna debe referir.

Es lo que me tiene el proyecto detenido sin poder avanzar.

Agradecido de antemano.

Con todo y que estas nuevo, se nota un buen nivel de organización y conocimientos básicos de los métodos y propiedades del Modelo ADO. Por lo que valoro mucho eso y te animo a seguir probando estos casos:

  1. Prueba crear una rutina Errores para que pases a la siguiente línea de programa después de las líneas del DIM:
On Error GoTo AdoError

Luego, antes del final del SUB, coloca esto:

 AdoError:
 On Error Resume Next

LA línea anterior hará que error anterior no detenga el programa y pase a la siguiente línea después tbl. Open, que es:

If tbl.EOF = TRUE AND tbl.BOF = TRUE Then

2. Ahora, en esta línea: If tbl.EOF = TRUE AND tbl.BOF = TRUE Then, encuentré un error. Nunca podrá ser verdadera, porque es imposible que el cursor de datos esté al mismo tiempo al final "y" (AND) al principio del Recordset. Para llegar al final del Recordset o Tabla Tienes que usar tbl.MoveNext, para ir cambiando al siguiente registro.

3. Necesitas un ciclo para recorrer el resordset desde el principio BOF, hasta el final EOF

4. Para poner el cursor de datos al principio del Recordset usa:

Tbl. MoveFirst

5. Para recorrerlo usa un Bucle:

Tbl. MoveFirst
Do While Not tbl.EOF
    If tbl.Item("ITEM") = txtitem.Text Then
        MsgBox "Ya existe el producto"
    Else
    tbl.AddNew
    ' Aqui añades los nuevos valores del nuevo Registro
    tbl.Update
    End If
    tbl.MoveNext
Loop

Bueno Jose Antonio, es todo lo que puedo hacer por ti. Espero que resuelvas el problema. Pero estoy casi seguro que con la rutina de captura de errores:

On Error GoTo AdoError
 AdoError:
       On Error Resume Next

Vas a salir de esa linea de error y entrar en otro, pero ya la habrás superado

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas