Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Contador de registros en consulta Access

Estas en el tema de Contador de registros en consulta Access en el foro de Bases de Datos General en Foros del Web. Hola, Mi problema es que no funciona el código (al activar un formulario) que lo que tendria que hacer es contar los registros de dos ...
  #1 (permalink)  
Antiguo 01/10/2004, 08:39
 
Fecha de Ingreso: septiembre-2004
Mensajes: 36
Antigüedad: 19 años, 7 meses
Puntos: 0
Pregunta Contador de registros en consulta Access

Hola,

Mi problema es que no funciona el código (al activar un formulario) que lo que tendria que hacer es contar los registros de dos consultas diferentes para despues mostrar el numero de ellos en el un par de campos del formulario.

Código:

Private Sub Form_Current()

Dim db As Database
Dim rst1 As Recordset
Dim rst2 As Recordset

Set db = CurrentDb()
Set rst1 = db.OpenRecordset("qry_Rf_Nr", dbOpenDynaset)
Set rst2 = db.OpenRecordset("qry_Rf_Verlieren", dbOpenDynaset)

rst1.MoveLast
rst2.MoveLast

Me![StBest] = rst1.RecordCount
Me![StLager] = rst2.RecordCount

End sub

El problema es que el código se detiene antes de acceder a las consultas y no entiendo porqué.

Muchas gracias por vuestra ayuda.
  #2 (permalink)  
Antiguo 01/10/2004, 09:54
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Bueno yo lo hago asi

dim cn as new adodb.connection
dim rs as new adodb.recordset
dim rs1 as new adodb.recordset
dim sentencia as string
cn.open "Tu cadena de conexion"
sentencia="Select count(*) from tu_tabla1"
set rs=cn.execute(sentencia)
sentencia="Select count(*) from tu_tabla2"
set rs1=cn.execute(sentencia)
text1.text=rs(0)
text2.text=rs1(0)
set rs=nothing
set rs1=nothing
cn.close

Espero que te sirva
  #3 (permalink)  
Antiguo 01/10/2004, 10:33
 
Fecha de Ingreso: septiembre-2004
Mensajes: 36
Antigüedad: 19 años, 7 meses
Puntos: 0
Gracias jrp01,

Resulta que enredando me he dado cuenta de que si en vez de una consulta utilizo una tabla, entonces funciona perfectamente.

Alguien me puede explicar porqué.

Necesito contar los recordset de la consulta!

Gracias.
  #4 (permalink)  
Antiguo 04/10/2004, 01:38
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 1 mes
Puntos: 0
El problema puede ser muy variado, y por varias razones, una de ellas, y sin entrar en mucho detalle es que se estén bloqueando ambas consultas, es sólo suponer, ya que no conozco las consultas, ni que hacen cada una de ellas...

Una forma de obtener el total de filas podría ser utilizar la función dcount(), no tienes que abrir ningún recordset, y te hace el código más sencillo

Un saludo
  #5 (permalink)  
Antiguo 04/10/2004, 03:32
 
Fecha de Ingreso: septiembre-2004
Mensajes: 36
Antigüedad: 19 años, 7 meses
Puntos: 0
Efectivamente puede ser algo de eso... las dos consultas filtran los valores de una misma tabla.

Al final he resulto el problema con un par de contandores i=i+1 dentro de un if con las mismas condiciones que las consultas.

Este método funciona pero es muy lento porque tiene que acceder dos veces a una tabla con unos 5000 registros.

Cómo se utilza la función dcount()? sin abrir los recordset. Cómo le digo donde tiene que contar?

Muchas gracias!
  #6 (permalink)  
Antiguo 04/10/2004, 08:07
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 1 mes
Puntos: 0
dCount("Campo","Tabla","Filtro") no necesitas abrir los recordset, sólo necesitas indicar el nombre de la consulta y ya está...

Me![StBest] = dcount("1", "qry_Rf_Nr")
Me![StLager] = dcount("1", "qry_Rf_Verlieren")


Un saludo
  #7 (permalink)  
Antiguo 04/10/2004, 09:46
 
Fecha de Ingreso: septiembre-2004
Mensajes: 36
Antigüedad: 19 años, 7 meses
Puntos: 0
Muchas gracias Teri!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:37.