4D v16

Seleção atual

Página Inicial

 
4D v16
Seleção atual

Seleção atual    


 

 



Além das manipulações explicadas no vídeo, também deve notar que:

O seguinte diagrama ilustra como funciona 4D, em outras palavras o modo SELECTION-ACTION:

O conceito de seleção atual é uma das noções fundamentais de 4D que é um pouco diferente aos conceitos habituais, especialmente em SQL.

Uma seleção atual é uma lista de registros obtida por uma pesquisa em uma tabela (equivalente à cláusula WHERE em SQL)

Em 4D, temos continuamente uma seleção atual por tabela. Esta seleção pode conter de 0 a X registros.

A seleção atual consiste da lista de registros na qual realizaremos os processos. Pode mudar a seleção atual entre dois processos.

O código a continuação corresponde ao exercício realizado neste vídeo (2 linhas de declarações de variáveis simples se adicionam na 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) // 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.

 
 

 
PROPRIEDADES 

Produto: 4D
Tema: Seleção atual

 
HISTÓRIA 

 
ARTICLE USAGE

Autoformação ( 4D v16)