FIRST RECORD([Technicians]) While(Not(End selection([Technicians]))) QUERY([Interventions];[Interventions]echnician_Initials=[Technicians]ID) // temos a lista de intervenções do técnico em memória 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 o tamanho dos arrays antes de fazer o loop e atribuir um valor para a variável $Index durante o processo (o que nos leva a descobrir a função Selected record number), pode utilizar o comando APPEND TO ARRAY.
Neste vídeo, vamos a aprender sobre a seleção atual, em que consiste e que tipos de interações se produzem entre as seleções e os arrays.
Vamos a começar por criar um array estatístico presente em um list box. Será obtido o número de serviços por técnico para certo período.
Para isso, criamos o formulário STATS que contém um list box com duas colunas e um botão utilizado para realizar o cálculo.
No método do botão, vamos a selecionar inicialmente a todos os técnicos. Desta maneira podemos determinar o número de registros correspondentes encontrados e utilizar este número para definir o tamanho de nossos arrays.
Temos:
Um array texto que será o array dos técnicos que tem $Num linhas
E um array Inteiro longo que também tem $Num linhas.
Acabamos de receber os nomes destes arrays no list box:
array dos técnicos => array texto
array número de intervenções => array inteiro longo
Uma vez realizadas estas iniciações, nos localizamos no primeiro técnico, a continuação, sempre e quando ainda exista técnicos, vamos a procurar as intervenções destes técnicos.
Assim que pesquisaremos as intervenções de:
Nas quais as iniciais do técnico
Sejam iguais
À identificação do técnico
Neste ponto, temos memória a lista de intervenções do técnico.
Para determinar a linha do array a encher, vamos a pedir a 4D proporcionar o número do técnico que se está processando.
Uma vez tenhamos esta informação, podemos encher:
O array dos técnicos na linha $Index e indicar que este é o apelido do técnico
Assim como o número de intervenções, ainda na linha $Index, que corresponde ao número de registros que se encontram na tabela Interventions.
Neste ponto, terminamos a parte estatística, exceto por um pequeno detalhe, só devemos lembrar-nos de mudar os registros ao terminar de processar a primeira..
Podemos provar o formulário e comprovar realmente, ficamos com certo número de intervenções por técnico.
Para limitar isto a um período determinado, vamos a modificar o método aqui e indicar, por exemplo, que queremos estabelecer o período de um ano, por exemplo, 2011. Assim que vamos a definir:
O início de um ano como a data de 1 de janeiro desse ano
E outra variável para o final do ano que soma um ano, 0 meses e -1 dia à data de inicio do ano. Por que -1 dia? Porque de outro modo nos colocará no em 1 de janeiro do ano seguinte.
Uma vez que realizemos estes 3 elementos de informação, podemos completar a pesquisa por uma pesquisa na seleção de intervenções e estamos procurando todas as intervenções onde:
A data é superior ou igual ao começo do ano
E inferior ou igual ao final do ano.
Podemos provar de novo o formulário e ver as mudanças. Assim que temos uma redução no período. Agora somente vamos mudar o ano a 2010, por exemplo, e provamos de novo, 2012 e de novo temos um novo cálculo que se realiza sistematicamente em função da informação contida na pesquisa.