No se inserta registro en tabla

Recurro a Vds., por si me podéis ayudar, hasta el día de ayer utilizaba esta instrucción para insertar datos en una tabla, pero hoy voy a utilizarla y no me inserta los datos en la tabla, no se que ha podido suceder, creo que la instrucción esta correcta, pero siempre hay un pero. Agradecería una orientación.

Private Sub cmdGuardar_Click()

On Error Resume Next

DoCmd. RunSQL "Insert Into TAltas (OFICIOS, NUMOFICIO, TIPODOCUMENTO, REALIZADO, Fecha, Hora, Turno, Policia, Conceptooficio, DELCONTRATACION, DELTRAFICO, DELVIAPUBLICA, DELOTRAS)" & _

"values (Nz(Form!txtOficio,""), Nz(Form!NUMOFICIO,""), Nz(Form!txtTipodocumento,""), Nz(Form!txtRealizado,""), Nz(Form!txtFecha,""), Nz(Form!txtHora,""), Nz(Form!txtTurno,"")" & _

"Nz(Form!txtCP,""), Nz(Form!cboConceptos,""), Nz(Form!verContratacion,""), Nz(Form!verTrafico,""), Nz(Form!verViapublica,""), Nz(Form!verOtras,""))"

MsgBox "Datos guardados correctamente", vbInformation, "Alta Oficio"

End Sub

1 Respuesta

Respuesta
2

Lo mejor que puedes hacer es eliminar o comentar la linea del "on error resume next", así, al intentar ejecutar esa SQL, te dirá que error se está produciendo y podrás intentar corregirlo.

También puedes usar Debug. Print para ver si la SQL que te genera el código es correcta o no, y probarla en una consulta-objeto (copias la SQL de la ventana inmediato, que puedes mostrar con Ctrl+G) y la pegas en la vista SQL de una nueva consulta.

Independientemente de lo anterior, hay un par de cosas que veo "mal" en tu SQL:

1º/ Entre el primer ")" y el "values" tiene que ir un espacio. Da igual que lo pongas a continuación del ")" o antes del "values", pero si no lo tienes (no se aprecia bien), ahs de ponerlo.

2º/ Está bien que uses Nz() para evitar errores de Nulos, pero has de tener en cuenta el tipo de campo y actuar en consecuencia, porque si das el valor "" (cadena vacía, valor de texto) a todos los campos, sin importar que sean numéricos o de fecha/hora, es probable que obtengas un error.

Si vas comentando el error que tienes, te podremos ayudar mejor.

Saludos!


Buenas tardes, ante todo agradecer la respuesta, el error que me aparece es el siguiente:

Por más que reviso la instrucción no veo el error. Un saludo

Pues yo tampoco lo veo... porque la sintaxis de la SQL parece correcta.

Prueba, no obstante a cambiar todas las comillas dobles dentro de los Nz() por comillas simples, es decir donde tengas ("") pon (''), a ver si suena la flauta.

Si no, otra cosa que puedes hacer es lo que te decía del Debug. Print: cambia el DoCmd. RunSQL por Debug. Print, pulsa el botón guardar, vuelve al editor de VBA, pulsa Ctrl+G y copia y pega aquí la SQL que te genera.

Hola y perdón por el retraso en contestar, hice todo lo que me dijiste, pero nada. Al final he optado por esta solución que no se si será la más ortodoxa pero me funciona. He suprimido Nz().

DoCmd.RunSQL "Insert Into TAltas(OFICIOS, NUMOFICIO, TIPODOCUMENTO, REALIZADO, Fecha, Hora, Turno, Policia, Conceptooficio,DELASESORIA,DELMULTAS,DELCONTRATACION,DELTRAFICO,DELVIAPUBLICA,DELOTRAS) values (Form!txtOficio,Form!txtNUMOFICIO,Form!txtTipodocumento,Form!txtRealizado,Form!txtFecha,Form!txtHora,Form!txtTurno,Form!txtCP,Form!cboConceptos,Form!verAsesoria,Form!verMultas,Form!verContratacion,Form!verTrafico,Form!verViapublica,Form!verOtras)"

Comentarte por si arroja alguna luz que los campos verAsesoria,verMultas,verContratacion,verTrafico,verViapublica y verOtras son casilla de verificación.

Un saludo y gracias por ayudarme

Las casillas de verificación pueden tomar dos valores Falso (o 0) y Verdadero (o -1), y probablemente por eso, al usar Nz y asignarle un valor "" si no tienen valor te diera el error. Una posibilidad sería Nz(Form! VerContratacion, 0), para que si no has marcado nada en la casilla (no es ni verdadera ni falsa), te lo inserte en la tabla como Falso.

De todos modos, si escribiendo la SQL sin hacer referencia "directa" a los valores del formulario te funciona, pues ya está, es tan válida como la otra.

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas