Campos en consulta = destino. Igual no anda.

Al hacer un INSERT desde Visual Basic me devuelve el siguiente error:
Run-time error '3346'
Number of query values and destination fields aren't the same.

El código
precioFinal = CCur(preciounitario)
MsgBox (precioFinal) '' Lo uso para verificar la existencia
MsgBox (id) '' Idem comentario anterior
SQL = "INSERT INTO nueva (id_producto,precio) VALUES (" & id & " ," & precioFinal & ")"
BDD. Execute SQL


Si la variable preciofinal es entera no hay problemas y inserta en la tabla.
Si la variable preciofinal tiene decimales no inserta en la tabla y devuelve el error.
Es como que 'desaparece' la variable, aunque me la muestra sin problemas y con decimales al usar el msgbox.
En la base de datos el campo precio está definido como Moneda formato Estándar.

1 Respuesta

Respuesta
1
Pues creo que tu problema, es que el numero de valores de la insert (inserción no son los mismos que la tabla consulta, eso te dice el problema 3346..
O también verificando esto tienes que poner campos del mismo formato en las mismas celdas a la que quieres insertar.. al poner otro valor con otro formato esta no la toma en cuenta..
Fíjate en los valores de los campos y ve si son iguales o si no cambialos para que sean iguales, otra forma seria que hagas la consulta sin declarar los campos en la tabla colo así
inset into table
values(campos_null, campos_si, camposnull, campos_si)
Te explico lo que quiero decir hacer una inserción con todos los campos los campos que no quieres le pones un null y lo campos que si lo nombras..
Bueno espero haberte ayudado..
Gracias por tu respuesta, revisé lo que me dijiste y no pude, pero seguí probando hasta darme cuenta que me faltaban comillas simples para encerrar a la variable:
SQL = "INSERT INTO nueva (id_producto,precio) VALUES (" & id & " ,'" & precioFinal & "')"
Quedaría así.
El problema era que la sentencia SQL no tomaba los valores decimales si no los encerraba con comillas simples.
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas