Access - Dividir resultados de consulta en grupos de 100

 
Vista:

Dividir resultados de consulta en grupos de 100

Publicado por Gonza (5 intervenciones) el 07/03/2013 08:59:04
Hola buenos días,

No encuentro la manera de hacer que una consulta me devuelva los resultados en grupos de 100. Si por ejemplo la consulta devuelve 456 resultados que me los divida en cuatro grupos de 100 y uno de 56.
Esto lo quiero para en una bbdd de contactos cuando quiero mandar un emailing Outlook solo coge 100 direcciones, y así evito que el usuario tenga que estar contando. Quizás haya una forma mejor pero no conozco. Se acpetan y agradadecen sugerencias también :-)

Muchas gracias desde ya.
Saludos
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
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Dividir resultados de consulta en grupos de 100

Publicado por Norberto (753 intervenciones) el 07/03/2013 16:23:46
Hola.

A ver si te sirve.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub ConsultaPorGrupos()
    Const nGrupo = 100, Tabla = "Contactos"
 
    Dim i As Integer
    Dim miSQL As String, Rst As Recordset
 
    For i = 0 To DCount("*", Tabla) - 1 Step nGrupo
        miSQL = "SELECT TOP " & nGrupo & " * FROM " & Tabla & _
                IIf(i > 0, " WHERE Id NOT IN (" & _
                "SELECT TOP " & i & " Id FROM " & Tabla & " ORDER BY Id) ", " ") & _
                "ORDER BY Id"
 
        Set Rst = CurrentDb.OpenRecordset(miSQL)
 
        'Lo que sea que quieras hacer con los "nGrupo" registros
 
        Rst.Close
 
    Next
 
    Set Rst = Nothing
 
End Sub


Sustituye el campo Id por cualquiera que tenga tu tabla e identifique univocamente a cada registro.

Un saludo.
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

Dividir resultados de consulta en grupos de 100

Publicado por Gonza (5 intervenciones) el 08/03/2013 14:21:19
Gracias, lo que pasa es que necesitaría basarlo en un consulta no en un campo de una tabla. Me explico: el emailing un día será con criterio "provincia=madrid" y otro "edad>25", pro poner un ejemplo.
Un saludo
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
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Dividir resultados de consulta en grupos de 100

Publicado por Norberto (753 intervenciones) el 09/03/2013 20:11:37
Hola.

Ojo, que el Rst contendrá todos los campos de la tabla, no sólo el Id. Éste se usa para encontrar en ella los registros que no han sido usados y establecer el orden.

Si no quieres trabajar sobre una tablas sino sobre una consulta, no tienes más que sustituir el valor de la constate Tabla por le nombre de la consulta. Si tienes que trabajar sobre distintas consultas en vez de usar una constante usa una variable o pásale como parámetro el nombre de la misma al procedimiento. Lo que sí que es importante es que exista un campo unívoco. Date cuenta que lo que hace la sentencia SQL es crear dos conjuntos de registros uno con los que ya han sido utilizados y otro con los que quedan por utilizar y para que funcione bien tienen que estar en el mismo orden, si no es así alguno podría recibir más de un mail y otro quedarse sin ninguno.

Un saludo.
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