Access - Contar registros con recordset y condicion

 
Vista:

Contar registros con recordset y condicion

Publicado por Iñigo (4 intervenciones) el 10/05/2006 09:27:10
Hola,

Quiero contar los registros que cumplen una condición utilizando un recordset.

Gracias por vuestra ayuda.

Íñigo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Contar registros con recordset y condicion

Publicado por Maldito Jorge (30 intervenciones) el 10/05/2006 23:34:15
la funcion contar la podes usar dentro de un select
otra forma
abri el rst corre un movelast y consulta la propiedad recorsdsetcount

JLF_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Contar registros con recordset y condicion

Publicado por Iñigo (4 intervenciones) el 11/05/2006 08:01:03
Gracias por responderme Jorge,

Me podrías aclarar un poco más cómo hacer lo del select?

Yo tengo escrito el siguiente código:

Dim dbsComunicados As Database
Dim rstComunicados As Recordset
Set dbsComunicados = CurrentDb()
sql = "Select CodigoProyecto from tblComunicados where tblComunicados.CodigoProyecto=Dato"
Set rstComunicados = dbsComunicados.OpenRecordset(sql)
cuenta = rstComunicados.RecordCount

Pero en la penúltima línea me da el siguiente error:

"Pocos parámetros. Se esperaba 1"

Quizá sepas cuál es el problema y puedas ayudarme.

Iñigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Contar registros con recordset y condicion

Publicado por Enrique (1299 intervenciones) el 11/05/2006 08:57:50
Hola Iñigo:
No es necesario complicarlo tanto, sobra el dbsComunicados puesto que la Tabla la tienes en la misma mdb activa y tambien te puedes ahorrar la variable sql metiéndola directamente en el OpenRecordset. Tambien es conveniente anteponer DAO a Recordset por si tuvieras además marcada en tu mdb la Refefencia de ADO.

Dim rstComunicados As DAO.Recordset
Set rstComunicados = CurrentDb.OpenRecordset("Select CodigoProyecto From tblComunicados Where CodigoProyecto =" & Dato)
If Not rstComunicados.NoMatch Then
cuenta = rstComunicados.RecordCount
Else
MsgBox "No se han encontrado registros coincidentes", vbInformation, "Aviso"
End If
rstComunicados.Close: Set rstComunicados = Nothing 'Cerrar Conexión

En el caso de que CodigoProyecto sea de Texto cambia el final del Select por este otro:

......Where CodigoProyecto ='" & Dato & "'")

Un saludo
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Contar registros con recordset y condicion

Publicado por Iñigo (4 intervenciones) el 11/05/2006 09:28:01
Hola Enrique,

Lo primero de todo, muchas gracias por tu ayuda.

He probado lo que me dices, y me sigue dando el mismo error en la misma línea (Set rstComunicados...)

Lo que yo pretendo hacer es contar cuántas veces aparece en el campo CodigoProyecto de la tabla tblComunicados la información de la variable Dato.

Quizá haya alguna otra forma de hacer esto más sencilla, y sobre todo que funcione, porque estoy atascado.

Espero que puedas ayudarme.

Iñigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Contar registros con recordset y condicion

Publicado por Enrique (1299 intervenciones) el 11/05/2006 10:31:33
Iñigo:
El problema puede estar en que no coincidan los tipos de CodigoProyecto y Dato. Ambos tienen que ser del mismo tipo; o los dos numéricos o los dos de texto (alfanuméricos) y además deben de ser iguales en su contenido.
Si en la Tabla el campo CodigoProyecto es de Texto, define la variable Dato como As Variant y si es Numérico, defínela como As Integer y por supuesto tenlo en cuenta en el Select cambiando la parte que va despues del Where como antes te indicaba, segun el sea el tipo.
Con esto lo que se consigue es contar cuantos registros hay en la Tabla con el campo CodigoProyecto igual a Dato. No sé si es lo mismo que necesitas, porque según lo explicas en esta frase:

"Lo que yo pretendo hacer es contar cuántas veces aparece en el campo CodigoProyecto de la tabla tblComunicados la información de la variable Dato."

parece que no es lo mismo.

Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Contar registros con recordset y condicion

Publicado por Enrique (1299 intervenciones) el 11/05/2006 11:22:18
Iñigo, llevabas razón, no funcionaba como antes te dije, pues el resultado sería 1 o ninguno. Me faltaba poner un bucle para recorren los registros y ver los que cumplen la condición. Así ya si va bien:

Dim rstComunicados As DAO.Recordset, Dato As Variant, C As Integer
Dato = "ABCD" 'Dato de tipo Texto
Set rstComunicados = CurrentDb.OpenRecordset("Select CodigoProyecto From tblComunicados Where CodigoProyecto ='" & Dato & "'")
rstComunicados.MoveLast
rstComunidados.MoveFirst
For C = 0 To rstComunicados.RecordCount
cuenta = C
Next C
rstComunidados.Close: Set rstComunidados = Nothing

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Contar registros con recordset y condicion

Publicado por Iñigo (4 intervenciones) el 11/05/2006 13:24:13
Eres un fenómeno. Ya funciona a la perfección.

Muchísimas gracias por tu ayuda.

Iñigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar