Una variable “list” puede ser definida en base a una “clase de datos SQL” (schema, query, o table). En ese caso, la lista obtiene la definición de cada columna según fueron creadas en la propia clase SQL. Cada “list” puede contener un número ilimitado de líneas y un máximo de 32.000 columnas, claro está, si la capacidad de memoria del dispositivo lo permite.
Omnis Studio proporciona los métodos necesarios para crear, definir y modificar variables “list” y que vamos a repasar brevemente a continuación. Le sugiero que consulten el manual en español, para obtener más información sobre el uso de variables “lis" (http://framosmu.blogspot.com.es/2010/03/manual-de-programacion-omnis-studio-en.html).
Crear una lista
En primer lugar será necesario crear la variable “list” y definir sus columnas. Con éste propósito podemos optar por el método $define, pero también podemos hacer uso del método $add del grupo de métodos $cols, veamos ambos casos:
Do myList.$define(var1,var2,var3) ;; myList y var’s deben ser declarados
o
Do myList.$cols.$add('myFieldName',kCharacter,kSimpleChar,255)
Do myList.$cols.$add('anotherColumn',kInteger,kLongInt)
Do myList.$cols.$add('yetAnotherColumn',kBoolean)
En este ejemplo, se crea una “list” con tres columnas. Los parámetros del método $add describen el nombre, tipo, subtipo y longitud de cada columna. Sin embargo y dependiendo del tipo de columna, no todos estos parámetros serán necesarios.
Añadir datos a una lista
En segundo lugar, añadiremos algunos datos. Usaremos el método $add con algunos valores pasados directamente como parámetros y también lo usaremos para crear una línea vacía:
Do myList.$add('Pepe', 27, kTrue) ;; Añade una línea con los valores suministrados
Do myList.$add() ;; Agrega una línea vacía
También podemos añadir el contenido de una variable de tipo “row” a la lista. Para ello, podemos hacer uso del método $add, en éste caso el método $add le pasa una referencia a la variable “row”:
Do myList.$add().$assignrow(myRow,kTrue)
Note que los métodos de los que podemos hacer uso detrás de $add, deben ser usados con la sintaxis descrita al añadir una línea vacía “$add()”. Esto causa que la función $add devuelva una referencia a la función $assignrow, para que ésta pueda agregar los valores de myRow. El segundo parámetro determina si se usaran los nombres de las columnas o su orden, para emparejar los datos. También se podría hacer uso de los métodos $addafter y $addbefore para agregar los datos antes o después de una determinada columna.
Eliminar líneas de una lista
Es posible que en ocasiones también debamos eliminar algunas líneas de la lista. La manera más fácil de hacer esto es utilizando el método $remove. Por ejemplo, si quisiéramos eliminar la línea actual de la lista usaríamos lo siguiente:
Do myList.$remove(myList.$line())
Si quisiéramos eliminar todas las líneas la lista, que cumplan una determinada condición, tendremos que hacer uso en primer lugar de la función $search:
Do myList.$search($ref.miNombreCampo='Pepe', kTrue)
Mediante éste método se seleccionaran todas las filas que contengan el valor 'Pepe' en la columna 'miNombreCampo'. Después las eliminaremos del siguiente modo:
Do myList.$remove(kListDeleteSelected)
También podríamos hacer uso de la constante kListKeepSelected para causar la eliminación de todas las líneas no seleccionados.
Copiar y fusionar una lista
A veces es posible que queramos fusionar listas, o copiar los contenidos de una lista sobre otra, para esto último podemos hacer lo siguiente…
Calculate NuevaLista as ViejaLista
…pero, si lo que queremos es copiar la definición de una lista sobre otra usaremos el método $copydefinition:
Do NuevaLista.$copydefinition(ViejaLista)
Este método creará una lista vacía con la definición de la lista inicial. Finalmente, si lo que queremos es agregar o fusionar, los datos de una lista sobre otra, debemos usar el método $merge:
Do NuevaLista.$merge(ViejaLista,kTrue)
En este caso se añadirán los datos de ViejaLista a NuevaLista. El segundo parámetro determina si queremos hacer la correspondencia de datos usando los nombres de las columnas o bien su orden.
Eliminar listas
Si lo que pretendemos es eliminar el contenido de una variable de tipo “list”, podemos hacer uso del método $clear:
Do myList.$clear()
Si también quisiéramos eliminar la definición de sus columnas, podríamos usar $define pero sin pasarle parámetro alguno:
Do myList.$define()
Nota:
Esto es sólo un pequeño ejemplo de cómo hacer uso de las variables de tipo “list”, éste artículo ha sido primero publicado en ingles por Andreas Pfeiffer. Puede obtener más información en español sobre la programación con Omnis Studio en Aula Omnis.