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

Alguien sabe por que da este error?

Estas en el tema de Alguien sabe por que da este error? en el foro de ASP Clásico en Foros del Web. Microsoft OLE DB Provider for ODBC Drivers error '80040e21' La operación de múltiples pasos de OLE DB generó errores. Compruebe los valores de estado de ...
  #1 (permalink)  
Antiguo 29/07/2002, 19:27
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 22 años, 10 meses
Puntos: 0
Alguien sabe por que da este error?

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

La operación de múltiples pasos de OLE DB generó errores. Compruebe los valores de estado de OLE DB si es posible. No se realizó ningún trabajo.

.../registro/registro2.asp, line 71

line 71:
RS_registro.AddNew
  #2 (permalink)  
Antiguo 29/07/2002, 19:55
 
Fecha de Ingreso: mayo-2001
Mensajes: 452
Antigüedad: 23 años, 11 meses
Puntos: 1
Re: Alguien sabe por que da este error?

Probablemente no creaste el objeto con los parametros adecuados, o la bd esta en un directorio que NO TIENE PERMISOS DE ESCRITURA. O la BD tiene la propiedad de solo lectura.
  #3 (permalink)  
Antiguo 29/07/2002, 21:36
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Alguien sabe por que da este error?

con la bd nunca tuve problemas, y no le estoy definiendo ninguna propiedad al RS, que esta pasando??????????????
  #4 (permalink)  
Antiguo 29/07/2002, 22:07
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Alguien sabe por que da este error?

Voy a romper todo!
Llegue hasta lo mas simple y no se que pasa que no anda:
Cuando quiero inserta con insert into me anda lo mas bien, pero cuando hago esto:

1- <%@LANGUAGE="VBSCRIPT"%>
2- <!--#include file="../includes/conexion_mysql.asp" -->
3- <%
4- SQL = "select * from mydb.usuarios where id = 'bla'" (vacio)
5- set RS = Server.CreateObject("ADODB.Recordset")
6- RS.open SQL, conn
7- RS.AddNew
8- RS("nick") = "eee"
9- RS.Update
10- RS.close
11- set RS = nothing
12- conn.close
13- set conn = nothing
14- %>

me sale el error:

ADODB.Recordset error '800a0cb3'

El objeto o proveedor no puede ejecutar la operación requerida.

...x.asp, line 7

si hago:

1- <%@LANGUAGE="VBSCRIPT"%>
2- <!--#include file="../includes/conexion_mysql.asp" -->
3- <%
4- SQL = "select * from mydb.usuarios where id = '1'"
5- set RS = Server.CreateObject("ADODB.Recordset")
6- RS.open SQL, conn
7- response.write RS("nick")
8- RS.close
9- set RS = nothing
10- conn.close
11- set conn = nothing
12- %>

me imprime el nick lo mas bien

Que esta pasando, yo ya habia hecho pruebas como estas y siempre me habia andado, en un par de minutos rompo todo
  #5 (permalink)  
Antiguo 29/07/2002, 22:33
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: Alguien sabe por que da este error?

Nooo!!! para, loco! no rompas nada... avisame que vamos los dos y rompemos todo a dúo

Jeje.. no se, pero esta línea no me gusta nada:

Código:
4- SQL = "select * from mydb.usuarios where id = 'bla'" (vacio)
Si ID es un campo numérico, tratá de hacer esto:

Código:
4- SQL = "select * from mydb.usuarios where id = 99999999" (o un número que no exista, pero sin los apóstrofes)

no se si es eso, pero me arriesgo
  #6 (permalink)  
Antiguo 30/07/2002, 00:19
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Alguien sabe por que da este error?

Mira, hice una pequeña pagina en donde sucede todo, sin ningun include, a ver si alguien ve el error.
Haciendo esto, cuando saco el addnew y solo consulto un RS existente tengo acceso a el, lo puedo leer, pero no puedo ni crear ni hacer update, siempre me pasa esto:

<%@LANGUAGE="VBSCRIPT"%>
<% Option Explicit %>
<%
dim SQL, RS, conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.ConnectionString = "Driver={MySQL ODBC 3.51 DRIVER};SERVER=localhost;DATABASE=mydb;UID=usuario ; PASSWORD=pwd"
SQL = "select * from mydb.usuarios where id = 99999"
set RS = Server.CreateObject("ADODB.Recordset")
conn.open
RS.open SQL, conn
RS.Addnew
RS("campo")=0
RS.Update
RS.close
set RS = nothing
conn.close
set conn = nothing
%>

ADODB.Recordset error '800a0cb3'

El objeto o proveedor no puede ejecutar la operación requerida.

...x.asp, line 11
  #7 (permalink)  
Antiguo 30/07/2002, 01:07
 
Fecha de Ingreso: enero-2002
Ubicación: Yerba Buena - Tucumán
Mensajes: 259
Antigüedad: 23 años, 3 meses
Puntos: 0
Re: Alguien sabe por que da este error?

Estoy casi seguro de que es por el tipo de cursor que estas usando (necesitas que sea dinámico para poder hacer inserciones o actualizaciones)... Prová poniendo esto cuando abrís el Recordset:

rs.Open SQL, oConn, 1, 2

Saludos :cantar:

<center><font face=Verdana size=2>Webmaster de [/CODE]<A href="http://www.salirxtucuman.com.ar" target="_blank"><img src="http://www.efrance.fr/salirxtucuman/images/titulo.gif" border=0 align="absmiddle"></a></center>
  #8 (permalink)  
Antiguo 30/07/2002, 01:18
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Alguien sabe por que da este error?

Venia a decir que ya lo habia solucionado y me encontre con un alma caritativa, gracias CABEZOTA!
La verdad, podria jurar que las propiedades de cursor y escritura que estoy usando ahora ya las habia probado, de verdad, no se porque ahora me anda. No use lo que me decis sino
adOpenForwardOnly y adLockOptimistic
y funciona bien (creo que serian 0,3)
Imagino que con lo que propones debe andar igual, Pero no quiero ni tocarlo, ni lo voy a volver a mirar, porque si toco y vuelve a fallar me las corto.
  #9 (permalink)  
Antiguo 30/07/2002, 02:00
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Alguien sabe por que da este error?

MALDICION!
Es increible, ya no se que hacer.
Lo anterior me funciono, si, pero solo cuando inserto datos en campos numericos de MySQL, cuando quiero insertar una cadena en una campo varchar, por ej RS_registro(&quot;campo&quot;)=&quot;FFF&quot; me tira el endemoniado error y no me crea el nuevo registro.
El error es el siguiente y apunta a la linea del AddNew:
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

La operación de múltiples pasos de OLE DB generó errores. Compruebe los valores de estado de OLE DB si es posible. No se realizó ningún trabajo.

Alguien que me ayude a romper la PC por favor!
  #10 (permalink)  
Antiguo 30/07/2002, 03:36
 
Fecha de Ingreso: enero-2002
Ubicación: madrid
Mensajes: 263
Antigüedad: 23 años, 3 meses
Puntos: 0
Re: Alguien sabe por que da este error?

Ese error creo que puede dar por varias razones, pero a mi siempre me ha dado por incompatibilidad entre el tipo de datos (el campo tiene un tamaño menor que la cadena asignada, o bien son de diferente tipo).

Saludos
  #11 (permalink)  
Antiguo 30/07/2002, 03:52
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Alguien sabe por que da este error?

no es el caso, estoy incertando en un campo del tipo VARCHAR de 50 caracteres por ejemplo la cadena &quot;a&quot; y me da ese error.

POR FAVOR ALGUIEN QUE SEPA QUE SIGNIFICA ESTO, YO YA NO SE QUE HACER, REINSTALE EL PWS PORQUE ME PARECIO QUE EL OLE DB TENIA QUE VER CON EL. NO SE VOY A FORMATEAR Y PONER WIN 2000.

AYUDA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  #12 (permalink)  
Antiguo 30/07/2002, 13:50
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Alguien sabe por que da este error?

Estoy mas cerca del error, pero cada vez entiendo menos
Si uso conn.ConnectionString = &quot;Driver={MySQL ODBC 3.51 DRIVER};SERVER=localhost;DATABASE=mydb;UID=usuario ; PWD=pwd&quot;

me tira el error de ole db, pero si uso dsn asi:

&quot;dsn=dsnmysql;uid=user;pwd=pwd;&quot;

inserta lo mas bien

PERO NECESITO USAR LA OTRA CADENA; EN EL SERVER NO PUEDO USAR DSN; QUE PASA?
  #13 (permalink)  
Antiguo 30/07/2002, 14:37
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Alguien sabe por que da este error?

que pesado soy no?
Lo que pasa es que estuve 2 dias seguidos casi las 24 horas rompiendome la cabeza para entender que estaba pasando.
YA LO SOLUCIONE (aparentemente) POR COMPLETO!

Quedara como una especie de tip para el que le pase lo mismo.

El tema fue el siguiente, con DSN no hay problema, pero si se define la conexion sin DSN hay un parametro llamado OPTION que controla el tipo de cursores que se pueden manejar (o algo asi). En el sitio de MySQL explican para que sirven varios palores de esta propiedad, pero yo use uno de un ejemplo de ahi mismo que no esta explicado para que sirve.

Amigos, cuando no usen DSN en MySQL, agreguen el OPTION a la declaracion de conexion de esta forma:
&quot;DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=mydb;USER=user;P ASSWORD=pwd;OPTION=35;&quot;

HASTA LUEGO ;)
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




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