4D v16Conjuntos e seleções temporais |
||||||||||||||||||||||||||||||||
|
4D v16
Conjuntos e seleções temporais
Conjuntos e seleções temporais
Além das manipulações explicadas no vídeo, também se deve levar em conta que: Em términos de memória:
A tabela a continuação resume as possibilidades dos conjuntos e das seleções temporais:
Só é possível comparar conjuntos da mesma tabela. Atenção: O funcionamento de um conjunto implica a utilização durante um tempo limitado e, eventualmente, semáforos (consulte a documentação de 4D para obter mais informações). Na verdade, um conjunto faz corresponder um bit à posição física de cada linha da tabela. No caso de exclusão e posterior adição de registros, o conteúdo anterior de um registro físico poderia ser substituído com o novo conteúdo que não está mais em consonância com o que o conjunto é suposto para representar. Ser metódico na utilização de conjuntos, que são uma maneira eficiente e rápida para comparar as equipes. Para preservar uma seleção, há uma terceira solução que envolve o uso de uma matriz que contém a sua identificação usando o comando SELECTION TO ARRAY. Você pode usar uma quarta solução usando os clusters armazenados, por exemplo, nos BLOBs. Obviamente, quando as seleções e os conjuntos não são mais necessários, você pode liberar memória por excluí-los. CLEAR SET("SetName") Neste vídeo, vamos aprender como conservar uma seleção e a realizar funções (união, intersecção, diferença). QUERY([Interventions];[Interventions]Intervention_Time E vamos a criar um segundo botão que nos dará todas as intervenções que não foram realizadas aos 100%. Podemos programar este botão assim: QUERY([Interventions];[Interventions]Progress<100) Assim que primeiro vamos aplicar uma fórmula em todas as intervenções. Aqui temos uma seleção de 11,732 intervenções nas que vamos aplicar uma fórmula e especificar que:
É claro, se fazemos clique no primeiro botão e logo no segundo, teremos perdido a seleção criada durante o primeiro clique. Assim que no primeiro botão, pode ser útil, depois da pesquisa, conservar a informação em um conjunto que podemos chamar "Morning_Interventions". CREATE SET([Interventions];"Morning_Interventions") Igualmente, aqui, logo de recuperar o conjunto das intervenções que não terminaram chamamos este conjunto "Interventions_in_progress". CREATE SET([Interventions];"Interventions_in_progress") Então podemos comparar os conjuntos:
Podemos provar as diferentes possibilidades executando o formulário de navegação. Por quê? Lembre que no vídeo anterior, adicionamos na função Navigation_Function, ao final, esta linha nos dá o número de registros encontrados depois de que é criado uma nova seleção. vNumRecords:=Records in selection([Interventions]) Na atualidade, não temos o ponteiro da tabela aqui, vamos a processar as intervenções. Logo podemos copiar esta linha de código para os outros 4 botões:
Agora, se voltamos ao formulário de navegação, teremos:
As intervenções antes das 9:00 a.m. + as intervenções que estão em um 100%, as intervenções das 9:00 a.m. em curso ou das 9:00 a.m. terminadas, não muda o número que está aqui. Por que? Porque a simples criação de um conjunto não implica seu uso.
E desta maneira podemos provar:
Para completar este enfoque, vamos a fechar o formulário e lançar novamente o método Navigation para verificar seu funcionamento. Quando o método se executa:
E logo veremos, que como o conjunto já existe, é só a quantidade a que muda. É necessário ter em conta que um conjunto é só uma lista de registros que não necessariamente é a seleção atual, porque agora a seleção atual da tabela Interventions contém 601 registros.Quando passamos ao comando USE SET, a seleção agora contém um número de registros que coincidem com o número indicado no conjunto e a variável vNumRecords também se adaptará em consequência. Outro uso dos conjuntos que é muito conveniente consiste em selecionar certo número de registros e a continuação indicar que queremos retornar a seleção atual, ou seja, que quando façamos clique no botão, tenha só estes X registros. Para isso, devemos:
O código é o seguinte: $SetName:="Userset_"+String(Milliseconds) Em outras palavras, vamos a:
Podemos provar:
Neste nível, temos:
Em nosso array, agora temos a lista de registros que selecionamos. Um conjunto se compõe de um bit por registro e, portanto não conserva a ordem de classificação. Quando seja necessário conservar esta informação, deve utilizar comandos relacionados com as seleções temporais: Aqui vamos a adicionar um botão que nos permite:
As seleções existem na memória, mas não se utilizarão. A continuação, vamos a:
Demos uma olhada a este exemplo. Se tomarmos todas as intervenções:
Agora:
|
PROPRIEDADES
Produto: 4D
HISTÓRIA
ARTICLE USAGE
Autoformação ( 4D v16) |
||||||||||||||||||||||||||||||