Hola a todos !!!!
Existe alguna función para contar los registros que devuelve una consulta?????
Gracias de antemano!!!!
| |||
Sí, Teri, muchas gracias. Quiero hacerlo en SQL Server. Consulta1 sería una variable?? Lo pregunto porque me interesa almacenar el reultado para escribir el número de registros. Gracias por la ayuda !!!!! ![]() |
| ||||
Sí, tienes razón, si en la consulta que realiza trabaja con RecordSet también es una posiblildad que se me olvidó mencionar. ![]() Si la consulta sólo es para saber el numero de registros unicamente (contador visitas...etc) lo mejor es una de las otras 2. Salu2!
__________________ Francesc Mula Calleja Hay mucho por ver todavía... |
| |||
Muchísimas gracias a los dos por vuestras respuestas !!!!!!!!!!!!!!!!!!! ![]() Con recordcount no me funciona. Tengo una consulta que guardo en un registro: SQLQuery = "SELECT Autor, Titulo, ISBN FROM Biblioteca "& SQLQuery & " ORDER BY Autor, Titulo" Set oRs = oConn.Execute(SQLQuery) y al escribir <%response.write oRs.recordcount%> el resultado es siempre -1. ¿Sabéis por qué puede ser? Última edición por Liz26; 16/04/2003 a las 02:20 |
| ||||
Bueno Lizz... Para utilizar éste último comando "RecordCount" debes utilizar el tipo de conexión a la base de datos RECORDSET. Es un poco diferente al que utilizas, es diferente. Léete este link y comprenderás: http://www.aspfacil.com/articulos/040401.asp Si utilizas el tipo de conexión que mostras en el post, sin recordset y por lo tanto: set rs = conn.execute(SQL)... no podrás utilizar RecordCount Si utilizas una conexión con recordset declarandola: Set Conn=Server.Createobject("ADODB.Connection") RS.Open SQL, Conn Si podrías utilizarlo... Suerte, leiendo el link unas veces se entiende ![]()
__________________ Francesc Mula Calleja Hay mucho por ver todavía... Última edición por Fr@Nc3$c0; 16/04/2003 a las 18:13 |
| ||||
Tienes la solucion del recordcount aqui :http://www.aspfacil.com/vertruco.asp?id=3 como ya habia comentado u_goldman ![]() El problema es que un cursor de tipo adCursorForwardOnly (valor 0) solo permite moverse hacia adelante. Y RecordCount lo que hace es ir al final del recordset y volver al principio. Si no puede volver devolverá un -1. Así que lo que hay que hacer es poner un CursorType que permita moverse adelante y atrás por el Recordset. ![]() |
| ||||
Me refiero a que si el no utiliza RECORDSET para su conexión no podrá utilizar ese comando que está destinado a dicho comando, ¿no? Según he entendido de sus posts, no utiliza RECORDSET Set Conn=Server.Createobject("ADODB.Connection") RS.Open....... Abre la conexion de otra manera, sin recordset. Saludos.
__________________ Francesc Mula Calleja Hay mucho por ver todavía... |
| ||||
Hay alternativas para una conexión RecordSet, éstas son simples y por ejemplo no se puede hacer tantas cosas como con ellas o tan fáciles. Ejemplo de paginar y etc. Saludos.
__________________ Francesc Mula Calleja Hay mucho por ver todavía... |
| ||||
Perdona Fr@Nc3$c0, pero ¿que alternativas son esas? Que yo sepa la unica forma de recorrer las filas de una tabla (los registros) es usando el objeto recorset aunque despues almacenes las variables usando GETROWS u otro tipo de matriz y cierres la conexion para liberar recursos. |
| ||||
Hola: Creo que luego de esta discusión el uso del recordcount quedará clarisimo para todos. Aqui hay un articulo mas a fondo sobre eso: http://www.vb-faq.com/Articles/Greener/reccount.asp Lo que francisco dice es que podemos obtener una instancia de un RECORDSET de varias formas: - a traves de un connection.execute - command.open - instanciandolo uno mismo con el set rs = server.createobject("adodb.recordset") Para poder usar el recordcount tenemos que instarcialo y definir su comportamiento a través de sus atributos (Esta forma tambien es válida, porque un cursor cliente usa por defecto el tipo static). set cn = server.CreateObject("Adodb.Connection") set rs = server.CreateObject("Adodb.Recordset") cn.open rs.CursorLocation = 1 ' Cursor de cliente rs.Open "select * from tabla",cn Response.Write "Numero de registros" & rs.RecordCount saludos |
| ||||
Maestro, sencillas conexiones a las bases de datos que me han permitido mostrar cantidad de valores sin crear un objeto recordset. he hecho listados sin él simplemente utilizando... Set Conn = .... Open Conn .... Set RS = Conn.EXECUTE( " Select * FROM tabla ") y aquí utilizando... if RS.EOF... o propiedades así. Yo antes de que me lo dijeras tu utilizaba este tipo de conexiones. Son sencillas, se puede lograr también las cosas pero con más tiempo de carga puesto que supone más codigo. Para contar los registros realizaba otra consulta... RS2 = Conn.Execute (" Select Max(XXX) ...") Comprendes? Saludos.
__________________ Francesc Mula Calleja Hay mucho por ver todavía... |
| |||
Muchísimas gracias a todos por vuestra ayuda, me ha quedado clarísimo. ![]() Ahora defino el recorset de la siguiente forma: oRs.CursorType = 1 oRs.Open SQLQuery, oConn (en vez de execute) Y funciona perfectamente. He leído que para más de 5000 registros, es preferible no utilizar recordcount. Mi BBDD tiene más de 5000 registros, ¿creéis que es conveniente que lo utilize? MIL GRACIAS A TODOS POR VUESTRAS APORTACIONES !! ![]() |
| ||||
si tienes mas de 5000 registros te conviene paginar los resultados por disminuir el tiempo de carga: http://aspfacil.com/articulos/verarticulo.asp?id=41 |
| ||||
maestro, no lo veo como tú dices... No declaras el object recorset por lo cual no lo utilizas, lo que me posteas en el ultimo mensaje sería la conexion sencilla. Esto es el recordset : Set RS = Server.CreateObject("ADODB.Recordset") Esto no es Recorset: Set RS = Conn.EXECUTE( " Select * FROM tabla ")'aqui esta abierta y realizada la conexión, has leido datos o mostrados...etc. RS=recordset ---->>>> ??¿¿ yo no puse eso en el mensaje.
__________________ Francesc Mula Calleja Hay mucho por ver todavía... |
| ||||
![]() Que yo sepa solo es una forma de instanciar un recordset, finalmente un recordset no es mas que un objeto que contiene una colección de datos, sin importar como lo instancies...estás trabajando con un rs Bueno, eso digo yo... ![]()
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |