Buen día,
Desde que publicaste el post me puse a evaluar alguna opción que fuera un tanto cuanto muy genérica y funcional y despues de darle algunas vueltas he llegado a lo siguiente:
- Es un hecho que quizás no siempre sabrás con antelación cuantos grupos por ejemplo de especies o subespecies pueden estar registrados en la base de datos, lo cual complica el mantenimiento de un formulario que muestre los datos, vamos, contar por sexo es lo más fácil del mundo, dado que hay un limite de posibilidades, pero en lo demás seria bastante molesto que si de repente agregan una nueva especie tengas que ir a modificar el formulario y los procesos o búsquedas para poder contabilizarla.
Como te indica Paco, el truco aqui es el manejo de los índices, un índice para sexo, un indice para especies, otro para subespecies y así sucesivamente los que te sean necesarios.
Ahora, ¿Cómo resuelves el desconocer cuantas especies o subespecies poner en el formulario?,
Yo lo haría definiendo en dicho formulario 2 variables locales con array, con una longitud de 20 por decir un número, una de tipo alfanúmerico en la que guardarías el nombre o descripción del elemento a contar y otra de tipo numérico en la que guardarías el contador, en tu formulario pones todos esos campos de las variables con array, la descripción[n] y el contador[n] y ya, ahora, mediante un proceso o búsqueda vas alimentando, no lo he probado pero más o menos haria lo siguiente:
Cargar lista “animales”, sin importar el sexo y sin resolver nada
multipartir lista por el campo especie
ahora transcribo lo que dice el manual de vDevelop respecto a “multipartir lista”
Funcionalidad
Por cada valor diferente que tenga el campo seleccionado se originará una nueva sublista
que agrupará los registros correspondientes a ese valor. El subproceso que este
comando genera será ejecutado por cada sub-lista obtenida. Si no hay registros en la
lista de origen, no será ejecutado el subproceso.
No lo he probado, pero indica que “el subproceso que este comando genera será ejecutado por cada sublista obtenida…}”
Entonces dentro del subproceso haria lo siguiente:
set contador[n], syslistsize,
seleccionar ficha por posición, 1
leer ficha seleccionada
set descripción[n], #campoenlazado.name
set n, n+1
Y yá , es todo, ahora, para controlar la posición donde almacenarás los datos no sería con un ciclo, porque no sabes cuantas listas se generaron, simplemente antes del primer cargar lista global inicializas la variable numérica de control, Set n, 0, por eso al final del subproceso sumas 1 a dicha variable, para que en el siguiente almacene correctamente.
Es una idea general, pero creo que te serviría.
Saludos.
Martin Ibarra.