No coinciden los tipos de datos en la expresión de criterios.

Jose
23 de Junio del 2004
Hola a todos, mi problema es el siguiente:

Necesito updatear una base de datos Access, desde un formulario de una pagina asp que recoge valores iniciales a través de una consulta. El problema es que cuando modificas y ejecutas el update me sale el error:

No coinciden los tipos de datos en la expresión de criterios.

El codigo es el siguiente:

<%
Dim cerror
Dim csolucion
Dim ccategoria
Dim cid
Dim sqltxt
cerror=request.form("error")
cerror=replace(cerror, "'", "''")
csolucion=request.form("solucion")
csolucion=replace(csolucion, "'", "''")
ccategoria=request.form("categoria")
ccategoria=replace(ccategoria, "'", "''")
cid=request.form("id")
set rs=createobject("ADODB.Recordset")
sqltxt = "UPDATE DATOS SET DATOS.ERROR = '"&cerror&"' , DATOS.SOLUCION = '"&csolucion&"', DATOS.CATEGORIA = '"&ccategoria&"' WHERE (DATOS.ID='"&cid&"')"
rs.open sqltxt, "DSN=BD"%>

Agradeceria alguna ayuda.

Un saludo.

nsg
23 de Junio del 2004
cuando el campo es numerico se pondria entre comillas dobles, cuando es fecha tb y cuando no son ninguno de estos tipos se ponen entre comillas dobles y simples.

nsg
23 de Junio del 2004
suponiendo que datos.error, datos.solucion y datos.categoria sean texto y datos.id sea numerico sería asi:
sqltxt= "UPDATE DATOS SET DATOS.ERROR = ' "& cerror & " ' , DATOS.SOLUCION = ' " & csolucion & " ', DATOS.CATEGORIA = ' " & ccategoria & " ' WHERE DATOS.ID=" & cid

Jose
23 de Junio del 2004
Muchas gracias a todos, ya he solucionado el problema. He puesto el codigo que me habeis dicho y seguia fallando. Se ha corregido cuando en las opciones de campo en access he cambiado las propiedades de ID de "Entero largo" a "Id. de replica".

Insisto, gracias.

Saludos.

Mikel
23 de Junio del 2004
Tal cual tienes generada la sentencia SQL pasas todos los datos a introducir en los campos y el campo id del WHERE entre comillas. Por el error que te da me da la impresión de que alguno de esos datos no es de tipo caracter. ¿El id no sera numerico? Si no es así, ¿No es numerico alguno de los otros campos?

Espero haberte ayudado. Saludos desde Euskal Herria.

Mikel

Jose
23 de Junio del 2004
Lo primero muchas gracias Mikel, efectivamente el campo ID es numérico (autonumérico). Le he cambiado el tipo a texto y funciona perfectamente. Pero claro no me sirve como solución porque quiero que cdo se dé de alta se autonumere solo. Siendo autonumérico como completo el WHERE ???
Muchas graicas. Salu2

Mikel
23 de Junio del 2004
Donde tienes puesto esto:

WHERE (DATOS.ID='"&cid&"')"

pon esto otro:

WHERE (DATOS.ID="&cid&")"

De esta manera le pasas el valor que quieres buscar en el ID sin comillas y por lo tanto te lo tomara como numerico.

Saludos.

Mikel


Jose
23 de Junio del 2004
Gracias de nuevo Mikel, eso ya lo hice pero obtengo un error:
Error de sintaxis (falta operador) en la expresión de consulta \'DATOS.ID=\'. Por eso le pongo las comillas simples ...
No se me ocurre nada, y no puedo poner el ID a texto porque necesito que se autonumere.
Alguna idea ...

Muchas gracias de nuevo.