Foros del Web » Programando para Internet » ASP Clásico »

Urgente !!! Problemas con Update

Estas en el tema de Urgente !!! Problemas con Update en el foro de ASP Clásico en Foros del Web. Hola maestros tengo un problema con un UPDATE, resulta que me sa este error Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft ...
  #1 (permalink)  
Antiguo 12/08/2003, 11:33
 
Fecha de Ingreso: julio-2003
Ubicación: Santiago
Mensajes: 11
Antigüedad: 20 años, 10 meses
Puntos: 0
Urgente !!! Problemas con Update

Hola maestros
tengo un problema con un UPDATE, resulta que me sa este error

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Costo ='.

/tarifario/update_llamados.asp, line 11


El codigo de la pagina es el sgte


<%
Dim oConn,strSQL

Set oConn = Server.CreateObject("ADODB.Connection")

oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Tarifario.mdb"))

CostoActual = Request.QueryString("Costo")
CostoNuevo = Request.Form("Costo")
strSQL = "UPDATE Ingreso_llamados SET Costo = " & CostoNuevo & " where Costo = " & CostoActual
Set oConn = oConn.Execute(strSQL)
oConn.Close
set oConn = nothing

Response.Redirect("listado_llamados.asp")
%>


ojala me puedan ayudar gracias
  #2 (permalink)  
Antiguo 12/08/2003, 11:42
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Lo primero sería verificar que estas variables llegaran bien

CostoActual = Request.QueryString("Costo")
CostoNuevo = Request.Form("Costo")

Imprímelas con un response.write

La segunda sería que tus campos fueran de tipo texto, con lo cual necesiarías utilizar apóstrofes...

strSQL = "UPDATE Ingreso_llamados SET Costo = '" & CostoNuevo & "' where Costo = '" & CostoActual & "'"

Aunque para mi que una de las variables está llegando vacía

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 12/08/2003, 11:56
 
Fecha de Ingreso: julio-2003
Ubicación: Santiago
Mensajes: 11
Antigüedad: 20 años, 10 meses
Puntos: 0
...

Mira los campos son numericos
el response no funciona... sera por el error ?
  #4 (permalink)  
Antiguo 12/08/2003, 12:04
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Si bueno, haz el reponse.write de tus variables y comenta la SQL o inmediatamente después de hacer el response.write, pon un response.end para detener la ejecución de la secuencia de comandos...Ahora, veo que una de las variables la estás pidiendo por querystring, la otra por form, es correcto? una llega por querystring y la otra mediante tu forma?


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 13/08/2003, 10:11
 
Fecha de Ingreso: julio-2003
Ubicación: Santiago
Mensajes: 11
Antigüedad: 20 años, 10 meses
Puntos: 0
Aun me da el Error !!!

u_goldman es correcto lo que dices, una variable la recojo del Form y la otra del query, el valor que le asigno me lo toma bien, pero sigo con error....

OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/tarifario/update_llamados.asp, line 11


en esta pagina ingreso el valor
AGRTARIFA.ASP

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Agregar Tarifa</title>
</head>
<body>
<Form method="POST" action="update_llamados.asp?Valor=Costo">
<td> <input type="text" name="CostoNuevo" size="5"></td>
<INPUT TYPE="submit" VALUE="Grabar">
</FORM>
</body>
</html>


y aca proceso
UPDATE_LLAMADOS.ASP

<%
Dim oConn,strSQL

Set oConn = Server.CreateObject("ADODB.Connection")

oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Tarifario.mdb"))

CostoActual = Request.QueryString("Costo")
CostoNuevo = request.form("CostoNuevo")
strSQL = "UPDATE Ingreso_llamados SET Costo = '"&CostoNuevo&"' where Costo = '"&CostoActual&"'"
Set oConn = oConn.Execute(strSQL)
oConn.Close
set oConn = nothing

Response.Redirect("listado_llamados.asp")
%>



Ojala me puedan ayudar
Saludos
  #6 (permalink)  
Antiguo 13/08/2003, 10:37
 
Fecha de Ingreso: julio-2003
Ubicación: mi camioneta?
Mensajes: 87
Antigüedad: 20 años, 11 meses
Puntos: 0
2 cosas.

1- CostoActual = Request.QueryString("Costo")
No puede recoger nada puesto que tu estas pasando:
action="update_llamados.asp?Valor=Costo"

vaya... tu pasas Valor.

2- Una sugerencia:

Igual no soy experto... pero creo que algo asi yo lo he hecho de la siguiente manera:

el Form cambialo a metodo GET
y crea un input text de tipo hidden para 'Valor'.

Asi tu linea quedaria:
<Form method="get" action="update_llamados.asp">

y adentro añade:
input type="hidden" name="Valor" value= (el valor que tu necesites)


Asi en la pagina que recoge los valores... no te la complicas.

Saludos
  #7 (permalink)  
Antiguo 13/08/2003, 11:58
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Ese error, es de un tipo de dato incorrecto, estás tratando de ingresar un string a un numérico:

strSQL = "UPDATE Ingreso_llamados SET Costo = '"&CostoNuevo&"' where Costo = '"&CostoActual&"'"

Prueba así:

strSQL = "UPDATE Ingreso_llamados SET Costo = '"&CostoNuevo&"' where Costo = "&CostoActual

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 13/08/2003, 13:23
 
Fecha de Ingreso: julio-2003
Ubicación: Santiago
Mensajes: 11
Antigüedad: 20 años, 10 meses
Puntos: 0
???

Muchachos...
una buena y otra mala
ya no me da ningun error pero tampoco me graba el dato nuevo,
la verdad ya no se que hacer, primera vez que tengo que hacer algo con UPDATE y no se como lo solucionarlo ....
les copio el codigo nuevamene haber si ven algo.

<html>
<head>
<title>Agregar Tarifa</title>
</head>
<body>
<Form method="get" action="update_llamados.asp">

<td> <input type="text" name="CostoNuevo" size="5"></td>
<input type="hidden" name="Valor" value="CostoNuevo">
<INPUT TYPE="submit" VALUE="Grabar">
</FORM>
</body>
</html>




<%
Dim oConn,strSQL
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Tarifario.mdb"))
CostoActual = Request.QueryString("Costo")
CostoNuevo = request.form("CostoNuevo")
strSQL = "UPDATE Ingreso_llamados SET Costo = '"&CostoNuevo&"' where Costo = '"&CostoActual&"' "
Set oConn = oConn.Execute(strSQL)
set oConn = nothing
Response.Redirect("listado_llamados.asp")
oConn.Close
%>
  #9 (permalink)  
Antiguo 13/08/2003, 13:49
 
Fecha de Ingreso: julio-2003
Ubicación: mi camioneta?
Mensajes: 87
Antigüedad: 20 años, 11 meses
Puntos: 0
no entiendo cual es la idea de tu condicion:
where Costo = '"&CostoActual&"' "

en tu formulario no tienes nada que se llame 'Costo'
CostoActual = Request.QueryString("Costo")
CostoNuevo = request.form("CostoNuevo")

por ahi veo solo uno que se llama 'Valor'

Trata de organizar los nombres... y no te la compliques...
cuando usar el metodo GET en el form... todo lo puedes recoger por medio de Request.QueryString()

Organiza bien los nombres... y si me explicas como funciona la condicion.. chance y lo arreglamos
  #10 (permalink)  
Antiguo 13/08/2003, 14:13
 
Fecha de Ingreso: julio-2003
Ubicación: Santiago
Mensajes: 11
Antigüedad: 20 años, 10 meses
Puntos: 0
Información Aun no lo Entiendo !!!

Nacho
Como dije antes es la primera vez que uso un UPDATE, por ende nose muy bien como se usa ....y ese where Costo = '"&CostoActual&"' " lo puse por un codigo que encontre, pero al sacar el Where tampoco funciona...
eh tratado de ordenar por todos lados y no me resulta, lo unico que pude lograr que ya no me de error, pero no graba....
en vez de poner el Where..... tu que sugieres ?

Saludos
  #11 (permalink)  
Antiguo 13/08/2003, 14:27
Avatar de Don Graff  
Fecha de Ingreso: noviembre-2002
Ubicación: San Bernardo - Chile
Mensajes: 410
Antigüedad: 21 años, 6 meses
Puntos: 0
Re: ???

sip...el UPDATE esta bien (el Costo del WHERE se refiere al campo Costo de la tabla que se pretende actualizar)... ...

eso:
Set oConn = oConn.Execute(strSQL)

dejalo asi
oConn.Execute(strSQL)


y si los campos son numericos entonces tienes que dejar la sentencia SQL sin ' , asi:

strSQL = "UPDATE Ingreso_llamados SET Costo =" & CostoNuevo & " where Costo = "&CostoActual
__________________
:cool: Visita Zona Powers :cool:
  #12 (permalink)  
Antiguo 13/08/2003, 14:37
 
Fecha de Ingreso: julio-2003
Ubicación: mi camioneta?
Mensajes: 87
Antigüedad: 20 años, 11 meses
Puntos: 0
Mira.. yo creo que andas un poco confundido en la logica (no me lo tomes a mal).

Yo lo haria asi:
Aun no te entiendo lo que pretendes lograr con la aplicacion... entonces no veo bien la manera en que utilizas el Where... pero en mi experiencia es mas o menos esto lo que debes tomar en cuenta:

-Vas a actualizar el valor de un campo en una tabla.. por lo tanto necesitamos localizar el registro, ya sea por una CLAVE o caracteristica en algun(os) campo(s).

partiendo de eso:
tu pagina del formulario seria algo asi:

<form method="get" action="update_llamados.asp">

<td> <input type="text" name="CostoNuevo" size="5"></td>
<input type="hidden" name="clave" value=(aqui va el valor de la clave)>
<INPUT TYPE="submit" VALUE="Grabar">
</FORM>

Debo hacer mencion a otra cosa:
no veo que estes abriendo la base de datos en esa pagina... entonces, no puedes saber que registro estas actualizando... yo te recomendaria que obtuvieras el valor de la clave.. y despues lo actualices... en todo caso.. y para efecto de que veas como le podrias hacer... vamos a poner el valor de la clave manualmente... entonces tu campo Hidden diria asi:

<input type="hidden" name="clave" value="25">

Asignamos la clave 25 (y vamos a suponer que existe en tu tabla)

---
Ahora vamos a recoger los valores de 'Costonuevo' y 'clave'

en tu pagina update_llamados.asp

la manera de obtener los valores es:
CostoNuevo=Request.QueryString("CostoNuevo")Clave= Request.QueryString("clave")

¿ok?
Ahora... tu instruccion de Update deberia decir algo asi:
strSQL = "UPDATE Ingreso_llamados SET Costo = "&CostoNuevo&" where Clave = "&Clave

Lo estoy escribiendo sin probarlo.. asi que podria tener algun error por ahi....

Recuerda que basicamente la idea es que tienes que 'localizar' los registros que necesites actualizar (podria ser que tu WHERE te indique que varios cumplen con esa condicion.. tomalo en cuenta).

No soy un experto en ASP, apenas ando aprendiendo asi que si alguien sabe una mejor manera.. puede 'llamarme la atencion' con toda confianza... que ahorita estoy en etapa de que puedo corregir mis 'malas costumbres'

Saludos!!!
  #13 (permalink)  
Antiguo 21/08/2003, 19:30
 
Fecha de Ingreso: agosto-2003
Mensajes: 4
Antigüedad: 20 años, 9 meses
Puntos: 0
Busqueda

Que tal amigos... el unico problema que hay aqui, es esta linea:

<input type="hidden" name="Valor" value="CostoNuevo">

si esta tratando de hacer un update de datos numericos, tomando en la clausula where un numerico, el problema es que el valor de de la variable 'Valor', tanto en el QueryString, como en el request.form, es una cadena... si cambia 'CostoNuevo' por un numero, cualquiera, ya no va a tronar... me suena a que falta ahi un poco de logica en la pagina, a fin de que este campo tome el valor debido...

Ruddy
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:13.