Los Foros de ASPTutor.com
Home | Perfil | Registrarse | Temas Activos | Miembros | Buscar | FAQ
Usuario:
Password:
 Todos los Foros
 ASP
 problemas con un UPDATE!!
 Foro Bloqueado  Tema Bloqueado


Autor Temas
Percival
Starting Member

España
21 Posts
Mensajes - 31 May 2004 :  19:11:05  Ver Perfil  Enviar Email
Hola amigos! estoy aprendiendo ASP a marchas forzadas, y ya consigo insertar y listar registros, pero me esta fallando el actualizar registros y me gustaría que me echarais una mano...

Tengo una base de datos access, con todos los campos de texto menos el de fecha que es formato fecha y el ID que es autonumerico. Cojo los datos del registro a actualizar con una lista desplegable en HTML donde aparecen los titulos, una vez seleccionado el titulo recupero el ID de ese registro y a continuacion pone un formulario para actualizar los datos de ese registro. Por ultimo, intento actualizar esos datos en la base de datos con el siguiente código:

<%
'Declaración de variables
Dim objConnection
Dim objRecordset
Dim ACTUALIZAR
Dim titulo
Dim fecha
Dim lugar
Dim telefono
Dim web
Dim borrado
Dim id

id = Session ("idunico")
titulo = Session("titulo")
fecha = Session("fecha")
lugar = Session("lugar")
telefono = Session("telefono")
web = Session("web")
borrado = Session("borrado")


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


objConnection.Open "Driver={Microsoft Access Driver (*.mdb)};" & "DBQ=" & Server.mappath("actividades.mdb")


sSQL="UPDATE cursos SET titulo='" & titulo & "', fecha='" & fecha & "', lugar='" & lugar & "', telefono='" & telefono & "', web='" & web & "', borrado='" & borrado & "' WHERE id='" & id & "'"
objConnection.Execute sSQL

objConnection.Close
set objConnection=nothing
%>

Y me sale el siguiente error:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Controlador ODBC Microsoft Access] No coinciden los tipos de datos en la expresión de criterios.
/webred/intranet/modicurso3.asp, línea 82

Dicha línea es "objConnection.Execute sSQL"

Alguna idea de donde puede estar el fallo?

Graciasss

buho_nero
Moderator

España
1316 Posts
Posted - 31 May 2004 :  19:25:20  Ver perfil  Enviar e-mail
Depende de los tipos de los campos en la tabla, con esa sentencia indicas que todos son de tipo texto (incluso el autonumérico) y me parece raro que así sea.
Los valores de un campo texto van entre comillas simples, las fechas entre # (creo recordar que Access sí, pero no todos los gestores, algunos usan las comillas simples) y los tipo numérico sin nada.

Inicio Pagina

Percival
Starting Member

España
21 Posts
Posted - 31 May 2004 :  19:44:06  Ver perfil  Enviar e-mail
Aja, no sabia eso... me podrias corregir la sentencia UPDATE con la sintaxis exacta, para que me haga una idea?

Muchas graciassss!


Inicio Pagina

buho_nero
Moderator

España
1316 Posts
Posted - 01 Jun 2004 :  09:53:50  Ver perfil  Enviar e-mail
sSQL="UPDATE cursos SET titulo='" & titulo & "', fecha=#" & fecha & "#, lugar='" & lugar & "', telefono='" & telefono & "', web='" & web & "', borrado=" & borrado & " WHERE id=" & id

Todo depende de los tipos de los campos, estoy tomando "fecha" de tipo date e "id" como numérico, el resto tipo texto.
El campo "borrado" quizá sea un boolean, hace mucho tiempo que no uso Access, espero que te lo confirme alguien con esto mas fresco, pero puedes usar una variable ASP booleana o tomarlo como numérico (creo que es -1,0) pero no me hagas mucho caso, todo esto sin las comillas.

Inicio Pagina

Percival
Starting Member

España
21 Posts
Posted - 01 Jun 2004 :  13:28:22  Ver perfil  Enviar e-mail
Hola Buho_nero!

HE probado lo que me has dicho, lo unico que me equivoque y es el campo "borrado" el de tipo fecha, el "fecha" es texto... el "ID" en cambio es del tipo autonumérico.... pero me sigue dando errores!

"Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis en la fecha en la expresión de consulta '##'."

El código exacto es este:

sSQL="UPDATE cursos SET titulo='" & titulo & "', fecha='" & fecha & "', lugar='" & lugar & "', telefono='" & telefono & "', web='" & web & "', borrado=#" & borrado & "# WHERE id= "& id

¿Alguna idea???

Graciasss


Inicio Pagina

buho_nero
Moderator

España
1316 Posts
Posted - 01 Jun 2004 :  14:06:35  Ver perfil  Enviar e-mail
Usa comillas en lugar de #, quizá sea eso y te estoy mareando de mala manera (no es mi intención)

Inicio Pagina

Percival
Starting Member

España
21 Posts
Posted - 02 Jun 2004 :  17:20:53  Ver perfil  Enviar e-mail
Nada, sigue sin funcionar... ahora dice que:

Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis en la instrucción UPDATE.

Siendo la instrucción SQL:

sSQL="UPDATE cursos SET titulo='" & titulo & "', fecha='" & fecha & "', lugar='" & lugar & "', telefono='" & telefono & "', web='" & web & "', borrado= " & borrado & " WHERE id=" & id

Francamente, no entiendo por qué en ningún sitio del tutorial viene como manejar las variables ASP en sentencias SQL pa evitarnos estos quebraderos de cabeza tan tontos...

Alguna idea?

Gracias!


Inicio Pagina

Carlitos
Moderator

Chile
881 Posts
Posted - 02 Jun 2004 :  17:31:11  Ver perfil  Enviar e-mail
Hola:
Has visto tu query ...
response.write("sql:"&sSQL&"<br>")
Tal vez estas pasando algun dato en blanco!!!(sin valor) y en tu tabla lo tienes como obligatorio.
ademas podrias ver el formato de las variables insertadas!!!
Sino copia el query del response.write y haz la consulta directamente en el motor de Datos ya sea Access(como una consulta) o en SQL (usando el analizador de consultas)
Ahora si no te funciona la consulta en el motor de datos, entonces el problema no seria del ASP sino de tu query!

Atte. Carlitos

Carlitos ayuda a sus amigos!!Inicio Pagina

   
 Foro Bloqueado  Tema Bloqueado
Ir a:
Los Foros de ASPTutor.com Los Foros de ASPTutor.com
Ir al principio de la Página

 Imprimir Tema
 

Descargas de manuales¦ Ejemplos de código ¦ Artículos mas visitados ¦ Envía tu articulo ¦ Foros ¦
  Libro de visitas ¦Crea un enlace con ASPTutor 
 

    © 2001-Hasta hoy  Pedro Rufo Martín  contactar