Los Foros de ASPTutor.com
Home | Perfil | Registrarse | Temas Activos | Miembros | Buscar | FAQ
Usuario:
Password:
 Todos los Foros
 ASP
 Error MovePrevious con CursorType=3
 Foro Bloqueado  Tema Bloqueado


Autor Temas
eheras
Starting Member

España
23 Posts
Mensajes - 12 Sep 2002 :  11:20:22  Ver Perfil  Enviar Email
Ayuda, por favor.
No entiendo que es lo que pasa:
La conexión con la B.D. es la siguiente:

Const adOpenStatic = 3
Const adLockReadOnly = 1

Set con = Server.CreateObject("ADODB.Connection")
con.ConnectionString = "DSN=datos_inf;UID=pepe;PWD=algo"
con.Open
Set res_dic = Server.createobject("ADODB.Recordset")
sql= " SELECT....."

res_dic.CursorType = adOpenStatic
res_dic.LockType = adLockReadOnly
res_dic.Open sql,con
(....)

Al intentar hacer un 'res_dic.MovePrevious' aparece un error del tipo:

ADODB.Recordset error '800a0c93'

La operación no está permitida en este contexto.

Al intentar utilizar la propiedad 'RecordCount' me devuelve -1, como si el cursor estuviera definido 'adOpenForwardOnly', cuando no es asi.

Agradeceria enormemente cualquier ayuda o comentario. Grácias.

Edv.


Parsons
Moderator

España
1247 Posts
Posted - 12 Sep 2002 :  12:22:05  Ver perfil  Enviar e-mail  Visit Parsons's Homepage
Inténtalo poniendo todos los parámetros en el método Open.

"rsRecordset.Open strSQL,cnConexion,3"

Inicio Pagina

eheras
Starting Member

España
23 Posts
Posted - 12 Sep 2002 :  12:32:14  Ver perfil  Enviar e-mail
quote:

Inténtalo poniendo todos los parámetros en el método Open.

"rsRecordset.Open strSQL,cnConexion,3"



Gracias, ya lo he intentado pero no funciona.
Sigue dando el mismo error.
res_dic.Open sql,con,1,3

Edv.

Inicio Pagina

caparicio
Junior Member

Chile
384 Posts
Posted - 12 Sep 2002 :  17:34:56  Ver perfil  Enviar e-mail  Visit caparicio's Homepage
Hola :

Te cuento a mi me paso, lo mismo, pero con un motor de BD en particular, código que me funcionaba perfectamente, con SQL, luego con el nuevo motor no era posible hacer el RecordCount, entonces lo que hice fue hacer dos consultas seguidas una donde hacia un

select count(*) as cuenta from tabla

y con eso contaba el total de registros, luego hacia la consulta como corresponde.

Ojalá te sirva

Un saludo desde Chile,

Carlos Aparicio
caparicio@embonor.clInicio Pagina

ermana
Junior Member


263 Posts
Posted - 12 Sep 2002 :  19:40:24  Ver perfil  Enviar e-mail
Veamos ...
El codigo me funciona con una BBDD mia.
Entonces, quizás esté el error en la frase SQL, que además no vemos.
Porque no haces un resumen y pones un código completo?.
Saludos,
Enrique

Inicio Pagina

eheras
Starting Member

España
23 Posts
Posted - 13 Sep 2002 :  10:19:34  Ver perfil  Enviar e-mail
quote:

Hola :

Te cuento a mi me paso, lo mismo, pero con un motor de BD en particular, código que me funcionaba perfectamente, con SQL, luego con el nuevo motor no era posible hacer el RecordCount, entonces lo que hice fue hacer dos consultas seguidas una donde hacia un

select count(*) as cuenta from tabla

y con eso contaba el total de registros, luego hacia la consulta como corresponde.

Ojalá te sirva

Un saludo desde Chile,

Carlos Aparicio
caparicio@embonor.cl


Gracias Carlos. Verás, lo que ocurre es que en SQL soy un novato total (de hecho solo hace una semana que lo conozco), y lo mismo me ocurre con ASP.

Te agradecería que me explicaras un poco que es, más o menos, lo que quieres decir con:
"hacer dos consultas seguidas una donde hacia un
select count(*) as cuenta from tabla
y con eso contaba el total de registros, luego hacia la consulta como corresponde."

El motor de la B.D., por si te sirve de algo,
es Informix.
El código SQL completo te lo pongo un par de
mensajes más abajo.

Grácias otra vez.

Edv.

Inicio Pagina

eheras
Starting Member

España
23 Posts
Posted - 13 Sep 2002 :  10:51:35  Ver perfil  Enviar e-mail
quote:

Veamos ...
El codigo me funciona con una BBDD mia.
Entonces, quizás esté el error en la frase SQL, que además no vemos.
Porque no haces un resumen y pones un código completo?.
Saludos,
Enrique




Hola Enrique:

Muy bien, ahí va.
El código sql es:

sql= " SELECT year(fecha) as anyo ,month(fecha) as mes,servic.nomserv,identpres as tipo_prestacion, " &_
" count(*) as num_consultas, SUM(fecha - activida.fechaprog) as demora " &_
" FROM activida, prestac, servic " &_
" WHERE activida.codipres = prestac.codprest AND activida.servreal = servic.codserv " &_
" AND nomserv='" & servicio & "' " &_
" AND year(fecha)>='" & ano_act & "' AND activida.deradio='N' AND activida.realizada<>'N' " &_
" AND identpres in ('P','S') " &_
" group by 1,2,3,4 " &_
" order by 1,2,3,4 "

Explico, básicamente se trata de obtener el número de consultas realizadas al mes por servicio en un hospital (para el año en curso), tanto para primeras consultas (el paciente viene por primera vez) (tipo_prestacion=P), como para consultas sucesivas (el paciente ya ha pasado por consulta alguna vez) (tipo_prestacion=S). Los servicios son los habituales en un hospital (pediatría, digestivo, etc...). Los resultados son mostrados luego en una tabla generada en HTML.

Todo funciona bién y la tabla se muestra de forma correcta mientras que no intente moverme por el recordset hacia atras (p. ej:
res_dic.MovePrevious
Error:
"ADODB.Recordset error '800a0c93'
La operación no está permitida en este contexto"

ó res_dic.Move -1
Error:
"Microsoft OLE DB Provider for ODBC Drivers error '80040e24'
El conjunto de filas no admite recuperación hacia atrás")

. No, no intento moverme hacia atras desde el primer registro.

El motor de la B.D. es Informix.

Grácias por todo.

Edv.


Inicio Pagina

ermana
Junior Member


263 Posts
Posted - 13 Sep 2002 :  20:57:19  Ver perfil  Enviar e-mail
Edv,
No tengo Informix, lo siento.
Con Access si que aceptaba MoveNext y MovePrevious.
Será el Informix?.
Si lo pruebas con Access o SQL te falla?.
Siento no poder ayudar más.
Saludos,
Enrique

Inicio Pagina

ColJimmy
Starting Member

Colombia
7 Posts
Posted - 28 Dec 2007 :  22:59:00  Ver perfil  Enviar e-mail
Antes de abrir el recordset configura las propiedades de este asi:

rVista.CursorType = 3 rVista.CursorLocation = 2
rVista.LockType = 1

Att: Jimmy

jimmy v.v.Inicio Pagina

ColJimmy
Starting Member

Colombia
7 Posts
Posted - 28 Dec 2007 :  23:01:22  Ver perfil  Enviar e-mail
rvista es el nombre del recordset

jimmy v.v.Inicio Pagina

buho_nero
Moderator

España
1316 Posts
Posted - 31 Dec 2007 :  10:12:01  Ver perfil  Enviar e-mail
Cambia el cursor, el menos restrictivo es el Dinamic, que corresponde al código 2.

res_dic.CursorType = 2

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