Amigo, se nao me engano, seu problema é listar nesse relatorio apenas os "clientes" que estao em uma determinada faixa etária, certo?
Pois bem... vamos por parte...
As variaveis q vou usar:
Dim IdadeMinima As Integer, IdadeMaxima As Integer
Dim DataInicial As Date, DataFinal As Date
Dim SQL as String
1) Definir a faixa etária: vamos supor que eu quero todo mundo que tenha de 10 à 20 anos... ficaria assim:
IdadeMinima = 10 ' isso pode ser definido pelo usuario, via Textbox por exemplo...
IdadeMaxima = 20 ' idem
2) Como o seu banco nao guarda idades, mas sim Datas de Nascimento, eu tenho que determinar a menor e a maior data de nascimento possiveis para que os clientes estejam nessa faixa...
Para pegar a menor data, tenho q tirar um dia da data de nascimento de quem está completando 21 anos hoje, ou seja:
DataInicial = DateAdd("d", -1, DateAdd("y", -(IdadeMaxima + 1), Now()))
Para pegar a maior data, tenho q pegar a data de nascimento de quem está completando 10 anos hoje, ou seja:
DataFinal = DateAdd("y", -(IdadeMinima), Now())
Pronto... temos o periodo do relatorio definido...
3) Agora montamos a Query com esse periodo...
Como nao me lembro se vc disse qual base de dados usa, vou escrever o Codigo para Access e SQL Server... se vc precisar transformar para outra, posso te ajudar depois...
Access:
SQL = " SELECT * " & _
" FROM Cliente " & _
" WHERE c18 BETWEEN " & _
" #" & Format(DataInicial, "mm/dd/yyyy") & "# " & _
" AND " & _
" #" & Format(DataFinal, "mm/dd/yyyy") & "# " & _
" ORDER BY c1 "
SQL Server:
SQL = " SELECT * " & _
" FROM Cliente " & _
" WHERE c18 BETWEEN " & _
" '" & Format(DataInicial, "yyyy-mm-dd") & "' " & _
" AND " & _
" '" & Format(DataFinal, "yyyy-mm-dd") & "' " & _
" ORDER BY c1 "
Ta ai... agora vc se vira... coloca esse SQL pra abrir a tabela no banco...
Se nao era isso que vc queria, foi mal... isso é o q eu entendi...
Flw! t+... qq coisa me add no msn...