No inserta registros en una tabla access

Todos necesito un poco de ayuda en un apartado que no se como solucionar el problema.

Tengo un proceso en el que he de insertar registros en una tabla, la cual en otros apartados recibe perfectamente las nuevas inserciones de datos y en este no lo hace.

Estoy haciendo la inserción a través de INSERT INTO y no me da ningún tipo de error, pero los datos no quedan ensertados en la misma.

Necesito averiguar el motivo por el cual no realiza este paso y si hay alguna manera de poder localizar la causa por el que no hace la inserción correspondiente.

2 respuestas

Respuesta
1

Se me ocurren estos posibles motivos para que no se te inserten los datos:

1) Que se infrinja alguna regla de validación, o de unicicidad de clave.

2) Que haya algún error de tipo de datos en algún campo.

3) Que no haya datos que insertar

En cuanto a que no te muestre mensajes de error, lo más probable es que hayas desactivado los avisos, ya sea en las propiedades de Access, por medio de una macro o con la instrucción DoCmd.SetWarnings False antes de la ejecución de la SQL.

No tengo desactivados los mensajes en este apartado.

Como puedo averiguar si infrinje alguna regla en los datos en el proceso que estoy realizando o me pueda faltar algún dato.

he intentado colocar literales en vez de los datos y me hace lo mismo no los inserta nada en la tabla.

Prueba lo que te sugiere Jacinto, una vez que tengas creada la SQl, usa Debug. Print para verla en la ventana inmediato. Luego pega esa SQL en el diseño de la consulta y mira a ver si te salta algún error.

No se como realizar este proceso de Debuj, ya lo había solicitado antes que me indicase como realizarlo porque nunca lo había hecho esto.

¿Qué código tienes actualmente?

¿Te refieres a la instruccon que estoy utilizando para esta inserción?

Sí, me refiero a que me digas que es lo que tienes para hacer la inserción, el código completo.

Podría mandarte si lo ves oportuno la aplicación con el trozo donde se esta generando este error que no inserta los apuntes.

Pues o me pones aquí el código, o me la mandas(este es mi correo: [email protected]), otra cosa es perder el tiempo, porque adivino no soy...

Te he mandado un correo con la aplicación

Me esta dando problemas del envío. Te adjunto el código que estoy usando mientas intento madarte de nuevo el programa:

For b = 1 To Meses - 1
CurrentDb.Execute "INSERT INTO  [APUNTESCOMPRASGASTOSPAGOS] (IdComGas,Vencimiento,Importe,EstadoPago) VALUES ('" & Me.IdComprasGastos & "',#" & Format(DateAdd("m", b, Me.[FechaFactura]), "mm/dd/yyyy") & "#,'" & Me.Importe & "','N')"
Next b

Lo primero que veo es que a IdComGas y a Importe, no le debes poner las comillas simples, porque no son valores de texto:

CurrentDb.Execute "INSERT INTO  [APUNTESCOMPRASGASTOSPAGOS] (IdComGas,Vencimiento,Importe,EstadoPago) VALUES (" & Me.IdComprasGastos & ",#" & Format(DateAdd("m", b, Me.[FechaFactura]), "mm/dd/yyyy") & "#," & Me.Importe & ",'N')"

Lo que te comentábamos del debug. Print es tan simple como sustituir CurrentDb. Execute por Debug. Print

Cuando tenga un rato miro tu bd

Gracias, por todo, espero a que me digas algo

La BD que envías no sirve, pues las tablas están vinculadas a una BD externa que no adjuntas.

De todas formas, con lo dicho en la respuesta anterior, ya tienes lo necesario para que vayas comprobando alguna cosa

Te he mandado las tablas que trabajan en ese proceso vinculadas en el escritorio

A mi la BD que me mandaste me inserta los datos correctamente...

Te los inserta en la Tabla: APUNTESCOMPRASGASTOSPAGOS, si es así, a crees que pueda ser debido lo que me ocurre, porque a mi no me inserta ni un solo apunte.

Revisando bien tu BD, tienes un error muy gordo (si la BD completa es lo que me enviaste), porque intentas ingresar registros en APUNTESCOMPRASGASTOSPAGOS sin que exista el registro previamente en APUNTESCOMPRASGASTOS.

Si haces lo del debug. Print (que deberías aprender, porque es muy útil), verás que te coge como IdComprasGastos el valor 33 (que viene de MAESTROCOMPRASGASTOS), pero en APUNTESCOMPRASGASTOS no hay ningún registro que tenga un IdComGas de valor 33, siendo éste el cmapo que relaciona las tablas en negrita del primer párrafo.

Conclusión, o tienes mal diseñada la BD, o has de revisar los códigos para usar los campos correctos

Revisare el código como me indicas.

Realmente tienes razón no hago con anterioridad el apunte en la tabla de la cabecera de los apuntes intento insertar los vencimientos si haber insertado previamente el registro en la tabla principal aunque esta después si queda bien insertada.

Intentare aprender el debuj.Print como me aconsejas.

Muchas gracias por toda tu ayuda.

Ejemplo para el botón del año con el debug. Print:

Private Sub Comando38_Click()
'Insertar por AÑOS'
Me.Referencia = NumFactura
Me.Porcentaje = IVACOMPRAS
Me.FechaFactura = Inicial
Me.FechaContable = Inicial

For b = 1 To Ejercicios - 1
CurrentDb.Execute "INSERT INTO [APUNTESCOMPRASGASTOSPAGOS] (IdComGas,Vencimiento,Importe,EstadoPago) VALUES ('" & Me.IdComprasGastos & "',#" & Format(DateAdd("yyyy", 6 * (b), Me.[FechaFactura]), "mm/dd/yyyy") & "#,'" & Me.Importe & "','N')"
Debug.Print "INSERT INTO [APUNTESCOMPRASGASTOSPAGOS] (IdComGas,Vencimiento,Importe,EstadoPago) VALUES ('" & Me.IdComprasGastos & "',#" & Format(DateAdd("yyyy", 6 * (b), Me.[FechaFactura]), "mm/dd/yyyy") & "#,'" & Me.Importe & "','N')"
Next b

'Refrescar Datos
Me.Ejercicios = 0
Me.Inicial = " "
DoCmd.GoToRecord , , acNewRec
End Sub

Para ver la venta inmediato (donde te "imprime" las SQL), solo has de pulsar Ctrl+G en el editor de VBA, o marcar la opción en el menu.

Respuesta
1

Pedro: Si tienes otras consultas que te funcionan es que ya has hecho prácticas.

Mira en los criterios e inspecciona lo que te devuelve la consulta.

Después de la sentencia SQL, le pones un Debug. Print TuConsulta

Visualiza la ventana de inmediato, y con un punto de Interrupción donde quieras ejecuta el paso a paso y ves lo que te devuelve la consulta. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas