Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

RecordCount

Estas en el tema de RecordCount en el foro de Visual Basic clásico en Foros del Web. Buenas, estoy intentando utilizar la propiedad RecordCount sobre un objeto RecordSet pero me devuelve -1, intente agregando MoveLast y tambien MoveFirst pero sigue mostrando -1. ...
  #1 (permalink)  
Antiguo 14/08/2009, 09:30
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
RecordCount

Buenas, estoy intentando utilizar la propiedad RecordCount sobre un objeto RecordSet pero me devuelve -1, intente agregando MoveLast y tambien MoveFirst pero sigue mostrando -1.

Alguna sugerencia para saber la cantidad de registros que hay?

Pd: la idea es evitar contarlos con un bucle.
  #2 (permalink)  
Antiguo 14/08/2009, 10:02
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: RecordCount

Hola, no necesitas bucles

Lo podes hacer es usar movelast (te lleva al final del recordset) y ahí usar AbsolutePosition + 1 (porque el recordset comienza en 0)

La otra opción es que en el select pongas un campo que lo cuente.

Si pones el código que usas te lo agrego

Espero te sirva
  #3 (permalink)  
Antiguo 14/08/2009, 10:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: RecordCount

Me darias un ejemplo como seria lo de poner un campo en el Select?

Ahora pruebo lo de AbsolutePosition, muchas gracias.
  #4 (permalink)  
Antiguo 14/08/2009, 10:32
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: RecordCount

Tu select que estaria en el recordset asi

Select count(1) as Cant
from "tuTabla"
where "pones las condiciones"

Una vez que tenes todo el en recordset

rs!Cant tiene la cantidad

si pones el codigo que usas me parece seria mas claro
  #5 (permalink)  
Antiguo 14/08/2009, 10:32
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: RecordCount

Amigo probe el metodo de AbsolutePosition y me da 0, que hago?
  #6 (permalink)  
Antiguo 14/08/2009, 10:33
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: RecordCount

entonces es que tu recordset no encontro nada
Por eso te daba -1 antes
  #7 (permalink)  
Antiguo 14/08/2009, 10:35
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: RecordCount

Cita:
Iniciado por pana99 Ver Mensaje
entonces es que tu recordset no encontro nada
Por eso te daba -1 antes
Pero si muestro dentro de un bucle si me muestra todos los registros.
  #8 (permalink)  
Antiguo 14/08/2009, 10:37
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: RecordCount

Por favor, podrias poner el codigo o los archivos ?
Gracias
  #9 (permalink)  
Antiguo 14/08/2009, 11:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: RecordCount

Jeje si perdon:

Código:
Set ventas = New ADODB.Recordset
ventas.Open "SELECT * FROM ventas", BD, adOpenStatic, adLockOptimistic

While Not ventas.EOF

arreglo = Split(ventas.Fields(2), "|")
ReDim matriz_productos(1 To ACA VA LA CANTIDAD DE REGISTROS, 0 To UBound(arreglo) + 1, 0 To 2)

Set lista_ventas = ListView1.ListItems.Add(, , ventas.Fields(0))
lista_ventas.SubItems(1) = ventas.Fields(1)
lista_ventas.SubItems(2) = ventas.Fields(3)
lista_ventas.SubItems(3) = "$ " & FormatNumber(ventas.Fields(4))

ventas.MoveNext
Wend
  #10 (permalink)  
Antiguo 14/08/2009, 12:40
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: RecordCount

Proba asi por favor

Dim CantVentas as integer
Set Cventas = New ADODB.Recordset
Cventas.Open "SELECT count(1) as Cantidad FROM ventas", BD, adOpenStatic, adLockOptimistic

CantVentas = Cventas.Cantidad

set Cventas = nothing 'No me acuerdo si es asi como se cierra la conexion. Cerrala para no tener memoria ocupada

Set ventas = New ADODB.Recordset
ventas.Open "SELECT * FROM ventas", BD, adOpenStatic, adLockOptimistic

While Not ventas.EOF

arreglo = Split(ventas.Fields(2), "|")
ReDim matriz_productos(1 To CantVentas, 0 To UBound(arreglo) + 1, 0 To 2)

Set lista_ventas = ListView1.ListItems.Add(, , ventas.Fields(0))
lista_ventas.SubItems(1) = ventas.Fields(1)
lista_ventas.SubItems(2) = ventas.Fields(3)
lista_ventas.SubItems(3) = "$ " & FormatNumber(ventas.Fields(4))

ventas.MoveNext
Wend
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 22:22.