Pregunta sql

Hola smanero, estoy haciendo una aplicación en access2000 y me sucede una cosa que no encuentro explicación, a ver si tu me lo puedes aclarar, yo tengo el siguiente código en visual basic:
msgbox(Dato1)
DoCmd.RunSQL "INSERT INTO GraficaPorcentajes (fecha,[Urkulu%],[Aixola%],[Barrendiola%],[Ibaieder%],[Lareo%],[Arriaran%] ) " & _
' "VALUES(Dato1,Urku,Aixo,Barre,Ibai,Lare,Arri);"
Todos los datos values los tengo, pero al ejecutarla me saca un mensaje diciendo introduzca el valor del parámetro Dato1 y para los demás valores no me saca nada, si quito para que no me meta la fecha, me introduce correctamente los datos en la tabla, y si en vez e poner Dato1 pongo #4/4/99# me introduce también los datos,¿por qué?
Muchas gracias por ayudarme.

1 respuesta

Respuesta
1
Estás intentando hacer un insert 'a pelo' y me parece que es la 1ª vez ¿me equivoco?, bueno para empezar en la clausula Values deben ser datos, es decir, si quieres que el campo [Urkulu%] tenga el valor Urku, en la clausula Values deberás poner 'Urku'. En este caso entiendo que todos los datos son fijos excepto Dato1 que es una fecha que tienes en el formulario ¿es así?, bueno pues debes de codificar así:
DoCmd.RunSQL "INSERT INTO GraficaPorcentajes (fecha,[Urkulu%],[Aixola%],[Barrendiola%],[Ibaieder%],[Lareo%],[Arriaran%] ) " & _
"VALUES(Formularios.xxx.Dato1,'Urku','Aixo','Barre','Ibai','Lare','Arri');"
NUNCA TRABAJES CON #4/5/99# pues nunca sabrás si estas metiendo 5 de abril o 4 de mayo. Te recomiendo que te hagas esta consulta desde diseño de consultas y mires el SQL (debe coincidir con el que tu pongas 'a mano') y no olvides que en Access HAY QUE TENER MUCHO CUIDADO CON LAS FECHAS.
Los datos Urku, Aixo,... no son datos 'Urku'... sino que son variables que las tengo en visual basic, al igual que la fecha, si pongo esta consulta me introduce bien los valores:
DoCmd.RunSQL "INSERT INTO GraficaPorcentajes ([Urkulu%],[Aixola%],[Barrendiola%],[Ibaieder%],[Lareo%],[Arriaran%] ) " & _
' "VALUES(Urku,Aixo,Barre,Ibai,Lare,Arri);"
No se porque pero hago un msgbox de Dato1 y me da la fecha que quierola variable.
No se como:
DoCmd.RunSQL "INSERT INTO GraficaPorcentajes ([Urkulu%],[Aixola%],[Barrendiola%],[Ibaieder%],[Lareo%],[Arriaran%] ) " & _
' "VALUES(Urku,Aixo,Barre,Ibai,Lare,Arri);"
puede funcionarte, pues poner
'
delante de values significa desactivar y tendría que darte un error. Supongo que tendrás:
DoCmd.RunSQL "INSERT INTO GraficaPorcentajes ([Urkulu%],[Aixola%],[Barrendiola%],[Ibaieder%],[Lareo%],[Arriaran%] ) " & _
"VALUES(Urku, Aixo, Barre, Ibai, Lare, Arri);"
Y cuando la ejecutes te irá pidiendo estás variables, aunque las tengas en VB el valor que te introducirá sera el que teclees, bien, pues si pones fecha tecléala sin #, es decir, si quieres 7 de mayo de 2001 pones:
7/5/2001 o 07/05/2001
Y compueba que te la coge, aunque sigo pensando que capturar tantos datos por pantalla y grabarlos directamente será fuente de errores. Yo haría un formulario donde metieran esos campos y luego insertaría, pero eso tú sabrás las razones.
No me pedía más que la fecha, no los datos Urku... al final he cambiado la consulta así:
DoCmd.RunSQL "INSERT INTO GraficaPorcentajes ( fecha,[Urkulu%],[Aixola%],[Barrendiola%],[Ibaieder%],[Lareo%],[Arriaran%] ) " & _
"SELECT Formularios!Formulario1!FechaIni AS Expr1,Urku,Aixo,Barre,Ibai,Lare,Arri;"
Me funciona bien, muchas gracias por tua ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas