4D v16

Selección actual

Inicio

 
4D v16
Selección actual

Selección actual    


 

 

I

Además de las manipulaciones explicadas en el vídeo, también debe notar que:  

El siguiente diagrama ilustra cómo funciona 4D, en otras palabras el modo SELECTION-ACTION:

El concepto de selección actual es una de las nociones fundamentales de 4D que es un poco diferente a los conceptos habituales, especialmente en SQL.

Una selección actual es una lista de registros obtenida por una búsqueda en una tabla (equivalente a la cláusula WHERE en SQL)

En 4D, tenemos continuamente una selección actual por tabla. Esta selección puede contener de 0 a X registros.

La selección actual consiste de la lista de registros en la cual realizaremos los procesos. Puede cambiar la selección actual entre dos procesos.

El código a continuación corresponde al ejercicio realizado en este vídeo (2 líneas de declaraciones de variables simples se añaden en la parte superior):

 C_DATE($StartYear;$EndYear)
 C_LONGINT($Year)
 
 $Year:=2011
 $StartYear:=Date("01/01/"+String($Year))
 $EndYear:=Add to date($StartYear;1;0;-1)
 
 ALL RECORDS([Technicians])
 $Num:=Records in selection([Technicians])
 
 ARRAY TEXT(ArrTechnicians;$Num)
 ARRAY LONGINT(Arr_NumInterventions;$Num)
 
 FIRST RECORD([Technicians])
 While(Not(End selection([Technicians])))
    QUERY([Interventions];[Interventions]echnician_Initials=[Technicians]ID) // tenemos la lista de intervenciones del técnico en memoria
    QUERY SELECTION([Interventions];[Interventions]Intervention_Date>=$StartYear;*)
    QUERY SELECTION([Interventions];&;[Interventions]Intervention_Date<=$EndYear)
 
    $Index:=Selected record number([Technicians])
    ArrTechnicians{$Index}:=[Technicians]LastName
    Arr_NumInterventions{$Index}:=Records in selection([Interventions])
 
    NEXT RECORD([Technicians])
 End while

Para evitar definir el tamaño de los arrays antes de efectuar el bucle y asignar un valor a la variable $Index durante el proceso (lo que nos lleva a descubrir la función Selected record number), puede utilizar el comando APPEND TO ARRAY.

En este vídeo, vamos a aprender sobre la selección actual, en qué consiste y qué tipo de interacciones se producen entre las selecciones y los arrays.

Vamos a empezar por crear un array estadístico presente en un list box. Se obtendrá el número de servicios por técnico para un periodo dado.

Para ello, hemos creado el formulario STATS que contiene un list box con dos columnas y un botón utilizado para realizar el cálculo.

En el método del botón, vamos a seleccionar inicialmente a todos los técnicos.
De esta manera podemos determinar el número de registros correspondientes encontrados y utilizar este número para definir el tamaño de nuestros arrays.

Tenemos:
  • un array texto que será el array de los técnicos que tiene $Num líneas
  • y un array Entero largo que también tiene $Num líneas.

Acabamos de recibir los nombres de estos arrays en el list box:

  • array de los técnicos => array texto
  • array número de intervenciones  => array entero largo

Una vez se efectúan estas iniciaciones, nos ubicamos en el primer técnico, a continuación, siempre y cuando aún haya técnicos, vamos a buscar las intervenciones de estos técnicos.

Así que buscaremos las intervenciones de:

  • en las que las iniciales del técnico
  • sean iguales
  • a la identificación del técnico

En este punto, tenemos memoria la lista de intervenciones del técnico.

Con el fin de determinar la línea del array a llenar, vamos a pedir a 4D proporcionar el número del técnico se está procesando.

Una vez tengamos esta información, podemos llenar:

  • el array de los técnicos en la línea $Index e indicar que este es el apellido del técnico
  • así como también el número de intervenciones, todavía en la línea $Index, que corresponde al número de registros que se encuentran en la tabla Interventions.

En este punto, hemos terminado la parte estadística, excepto por un pequeño detalle, sólo debemos recordar cambiar los registros al terminar de procesar la primera..

Podemos probar el formulario y comprobar realmente obtengamos un cierto número de intervenciones por técnico.

Para limitar esto a un período determinado, vamos a modificar el método aquí e indicar, por ejemplo, que queremos establecer el período de un año, por ejemplo 2011.
Así que vamos a definir:

  • el inicio de un año como la fecha del 1 de enero de ese año
  • y otra variable para el final del año que suma un año, 0 meses y -1 día a la fecha de inicio del año.
    ¿Por qué -1 día? Porque de otro modo nos pondrá en el 1 de enero del año siguiente.

Una vez hemos indicado estos 3 elementos de información, podemos completar la búsqueda por una búsqueda en la selección de intervenciones y estamos buscando todas las intervenciones donde:

  • la fecha es superior o igual al comienzo del año
  • e inferior o igual al final del año.

Podemos probar de nuevo el formulario y ver los cambios.
Así que tenemos una disminución en el período.
Ahora sólo cambiamos el año a 2010, por ejemplo, y probamos de nuevo.
2012 y de nuevo tenemos un nuevo cálculo que se realiza sistemáticamente en función de la información contenida en la búsqueda.

 
 

 
PROPIEDADES 

Producto: 4D
Tema: Selección actual

 
HISTORIA 

 
ARTICLE USAGE

Autoformación ( 4D v16)