Problemas al modificar un registro de MySQL desde ASP

02/02/2004 - 11:27 por indasc | Informe spam
Tengo una aplicacion en ASP con una base de datos en MySQL a la que
conecto atraves de un ODBC.

El problema que tengo esta al modificar un registro.

El fallo que me muestra es:
(0x80040E21)
La operación de múltiples pasos de OLE DB generó errores. Compruebe
los valores de estado de OLE DB si es posible

El codigo que lo genera es:

ID=request.form("ID")
Nombre=request.form("Nombre")
...

set BD=createobject("ADODB.Connection")
set Datos=createobject("ADODB.Recordset")

BD.Open "BD","Usuario","Password"

if err.Description <>"" then
Response.Write "Error en la conexion con la Base de Datos<BR>"
Response.Write err.Description
else
Datos.Open "SELECT * FROM Tabla WHERE ID=" & ID,BD,3,3
with Datos
if Nombre="" then Nombre=" "
.Fields("Nombre")=Nombre
...
.Update
end with
Datos.Close
BD.Close
end if


Gracias y un saludo a todos.

Preguntas similare

Leer las respuestas

#1 danicastillo
02/02/2004 - 16:49 | Informe spam
aparte de lo que ha comentado (aunque estoy deacuerdo con Benjamin, casi
seguro que es por la forma de abrir) comprueba que no estes olvidando algun
campo q tengas declarado como requerido en la base de datos


-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"Benjamin Porter" escribió en el mensaje
news:
En primer lugar, tengo la impresión de que tu recordset lo estarías


abiendo
sin permiso de lectura. En general, para claridad de codigo además,
recomiendo siempre abrir el recordset declarando sus propiedades:

set Datos=createobject("ADODB.Recordset")
datos.activeconnection½
datos.LockType=3
datos.Cursortype=3
datos.source="SELECT * FROM Tabla WHERE ID=" & ID,BD,3,3
datos.Open

(Nota: no me quedó muy claro la condicion de este "select" que haces... a


lo
mejor estoy equivocado de acuerdo al criterio que buscas, pero si lo que
buscas es que ID sea igual a uno de varios valores, lo correcto sería


esto:
SELECT * FROM Tabla WHERE ID in (" & ID & "," & "BD" & "," & "3" & "," &


"3
& ")"


En segundo lugar, puede ser que estés asignando a un campo un valor que
dicho campo no soporta.

> if Nombre="" then Nombre=" "
> .Fields("Nombre")=Nombre

Eso me da las sospechas que te menciono (a mi me ha pasado).
Finalmente, chequea los permisos del usuario que abre la base de datos


para
escribir en ella.




Atentamente
_____________________
Benjamin Porter

(Evidentemente sin el ".punto")






"inda" escribió en el mensaje
news:
> Tengo una aplicacion en ASP con una base de datos en MySQL a la que
> conecto atraves de un ODBC.
>
> El problema que tengo esta al modificar un registro.
>
> El fallo que me muestra es:
> (0x80040E21)
> La operación de múltiples pasos de OLE DB generó errores. Compruebe
> los valores de estado de OLE DB si es posible
>
> El codigo que lo genera es:
>
> ID=request.form("ID")
> Nombre=request.form("Nombre")
> ...
>
> set BD=createobject("ADODB.Connection")
> set Datos=createobject("ADODB.Recordset")
>
> BD.Open "BD","Usuario","Password"
>
> if err.Description <>"" then
> Response.Write "Error en la conexion con la Base de Datos<BR>"
> Response.Write err.Description
> else
> Datos.Open "SELECT * FROM Tabla WHERE ID=" & ID,BD,3,3
> with Datos
> if Nombre="" then Nombre=" "
> .Fields("Nombre")=Nombre
> ...
> .Update
> end with
> Datos.Close
> BD.Close
> end if
>
>
> Gracias y un saludo a todos.


Respuesta Responder a este mensaje
#2 Benjamin Porter
02/02/2004 - 17:26 | Informe spam
En primer lugar, tengo la impresión de que tu recordset lo estarías abiendo
sin permiso de lectura. En general, para claridad de codigo además,
recomiendo siempre abrir el recordset declarando sus propiedades:

set Datos=createobject("ADODB.Recordset")
datos.activeconnection½
datos.LockType=3
datos.Cursortype=3
datos.source="SELECT * FROM Tabla WHERE ID=" & ID,BD,3,3
datos.Open

(Nota: no me quedó muy claro la condicion de este "select" que haces... a lo
mejor estoy equivocado de acuerdo al criterio que buscas, pero si lo que
buscas es que ID sea igual a uno de varios valores, lo correcto sería esto:
SELECT * FROM Tabla WHERE ID in (" & ID & "," & "BD" & "," & "3" & "," & "3
& ")"


En segundo lugar, puede ser que estés asignando a un campo un valor que
dicho campo no soporta.

if Nombre="" then Nombre=" "
.Fields("Nombre")=Nombre



Eso me da las sospechas que te menciono (a mi me ha pasado).
Finalmente, chequea los permisos del usuario que abre la base de datos para
escribir en ella.




Atentamente
_____________________
Benjamin Porter

(Evidentemente sin el ".punto")






"inda" escribió en el mensaje
news:
Tengo una aplicacion en ASP con una base de datos en MySQL a la que
conecto atraves de un ODBC.

El problema que tengo esta al modificar un registro.

El fallo que me muestra es:
(0x80040E21)
La operación de múltiples pasos de OLE DB generó errores. Compruebe
los valores de estado de OLE DB si es posible

El codigo que lo genera es:

ID=request.form("ID")
Nombre=request.form("Nombre")
...

set BD=createobject("ADODB.Connection")
set Datos=createobject("ADODB.Recordset")

BD.Open "BD","Usuario","Password"

if err.Description <>"" then
Response.Write "Error en la conexion con la Base de Datos<BR>"
Response.Write err.Description
else
Datos.Open "SELECT * FROM Tabla WHERE ID=" & ID,BD,3,3
with Datos
if Nombre="" then Nombre=" "
.Fields("Nombre")=Nombre
...
.Update
end with
Datos.Close
BD.Close
end if


Gracias y un saludo a todos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida