Problema con una consulta insert

Hola pues tengo una bd en la que tengo una tabla facturas con los campos:idfactura, idcliente, fechafactura, iva, cobrado, notas, conceptorecibo. Esta tabla esta relacionada con otras de la bd.
Pues bien la consulta que hago es la siguiente:
valor = CInt(Combo2.Text)
strPath = "c:\facturacionvb\"
Set db = OpenDatabase_(strPath& "bd1.mdb")
str = "insert into facturas_(iva,conceptorecibo) values (" & valor_ & ",'" & concepto.Text & "');"
db.Execute str
db.Close
El resultado y de aquí mi pregunta es que no me introduce ningún campo, si bien si voy a access y agrego manualmente un registro el idautonumero me refleja como si antes hubiera algún registro ya agregado.
La consulta la he probado en una tabla simple(sin relaciones) y funciona perfectamente.
¿Dónde puede estar el problema? Tengo casi parada la aplicación por este problema, he probado a realizar la inserción a través del recorset pero nada, me pasa igual
Un saludo, gracias
Respuesta
1
Yo lo que suelo hacer en estos casos es:
Debug. Print str
Después vas a Access y ejecutas *exactamente* la misma consulta que estabas antes lanzando desde VB.
De esta forma, en el caso de que la consulta genere un error, access te informará de ello.
Bueno ya lo he hecho y me da los siguientes errores :uno que es imposible insertar porque tiene algún campo nulo y el otro un error de integridad referencial.
La bd esta hecha en access con relaciones,¿Si elimino las relaciones para programar la aplicación en visual que consecuencias puede tener? Me refiero a que en access son necesarias las relaciones para mostrar subformularios... ¿pero en visual se puede trabajar con la bd con las mismas tablas pero sin ninguna relación entre ellas y cuando vayas a recuperar o mostrar datos hacedlo por sql pidiendo campos de otras tablas?
Ah se me olvidaba la bd esta vacía,
Bien, pues la cosa tiene fácil solución.
Si te dice que no puede insertar un campo nulo, es porque uno de los campos de esa tabla lo has diseñado como 'Requerido=si'. Por tanto, ese campo deberás insertarlo desde la SQL. Revísate si efectivamente todos los campos que has marcado como requeridos son necesarios.
Respecto a las relaciones, el segundo error, es debido a que esa tabla tiene una relación con otra, y necesita tener un registro relacionado. Hay que tener cuidado al diseñar las relaciones, porque puede darse el caso de que AMBAS tablas necesiten un campo común y que no puedas empezar a insertar en ninguna de las dos.
Eliminar las relaciones es la forma de evitarte estos problemas, claro que estás desaprovechando todas las ventajas que tiene mantener una bbdd relacional.
Yo te aconsejaría que revisaras el diseño que has hecho, y que pienses en que tablas has de empezar a insertar registros.
Por ejemplo, si tienes una tabla empleados (idempleado, nombre, iddepartamento) y otra tabla departamentos (iddepartamento, nombredepartamento) relacionadas por el campo iddepartamento, NUNCA podrás dar de alta un empleado si no tienes departamentos. Quizás tu caso es algo parecido.
Suerte!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas