4D v14.3Conjuntos |
|||||||||||||||||||||||
|
4D v14.3
Conjuntos
Conjuntos
Os conjuntos são uma forma poderosa e rápida de manipular seleções de registros. Além da possibilidade de criar conjuntos, associá-los à seleção atual, salvá-los, carregá-los e apagá-los, 4D permite realizar três operações padrão de conjuntos:
Um conjunto é uma representação de uma seleção de registros. A idéia de conjuntos está intimamente ligada à idéia de seleção atual. Os conjuntos geralmente são utilizados pelas seguintes razões:
A seleção atual é uma lista de referências que apontam a cada registro atualmente selecionado. A lista existe em memória. Apenas os registros selecionados estão na lista. Uma seleção não contém realmente os registros, apenas uma lista de referências aos registros. Cada referência a um registro utiliza 4 bytes em memória. Quando você trabalha sobre uma tabela, sempre trabalha com os registros na seleção atual. Quando uma seleção estiver ordenada, apenas a lista de referências é reorganizada. Apenas existe uma seleção atual para cada tabela em um processo. Como uma seleção atual, um conjunto reapresenta uma seleção de registros. Um conjunto utiliza uma representação muito compacta para cada registro. Cada registro está representado por um bit (um oitavo de byte). As operações que utilizam conjuntos são muito rápidas, porque os computadores podem realizar muito rapidamente operações sobre bits. Um conjunto contém um bit por cada registro da tabela, sem importar se o registro está incluído ou não no conjunto. Na verdade, cada bit é igual a 1 ou 0, dependendo de se o registro está no conjunto ou não. Os conjuntos são muito econômicos em termos de memória RAM. O tamanho de um conjunto, em bytes, sempre será igual ao número total de registros na tabela dividido por 8. Por exemplo, se criar um conjunto para uma tabela que contenha 10.000 registros, o conjunto assume 1.250 bytes, aproximadamente 1.2K em RAM.Podem existir vários conjuntos para cada tabela. Na verdade, os conjuntos podem ser salvados no disco independentemente do banco. Para modificar um registro que pertence a um conjunto, primeiro deve utilizar o conjunto como seleção atual, depois modificar o registro. Um conjunto nunca está ordenado, os registros simplesmente são marcados apenas como pertencendo ao conjunto ou não. Pelo contrário, uma seleção temporária está ordenada, mas exige mais memória na maioria dos casos. Para maior informação sobre seleções temporárias, consulte a seção Seleções temporárias. No momento de sua criação, um conjunto “lembra” o registro atual da seleção. A seguinte tabela compara os conceitos da seleção atual e dos conjuntos:
O conjunto pertence a tabela na qual foi criado. As operações sobre conjuntos apenas podem ser realizadas entre os conjuntos que pertencem a mesma tabela. Os conjuntos são independentes dos dados, isso significa que depois de realizar modificações a uma tabela, um conjunto poderia não ser exato. Há muitas operações que podem fazer que um conjunto não seja exato. Por exemplo, se cria um conjunto de todos os habitantes de São Paulo e modifica os dados de um dos registros por Rio de Janeiro, o conjunto não é modificado, porque o conjunto é simplesmente a representação de uma seleção de registros. A eliminação e a substituição de registros também podem tornar o conjunto obsoleto, do mesmo jeito que a compactação de dados. A precisão dos conjuntos apenas pode ser garantido se os dados da seleção original não forem modificados. Pode utilizar três tipos de conjuntos:
A tabela a seguir indica os princípios de visibilidade dos conjuntos em função de seu alcance e de onde foram criados: Um conjunto pode ser criado dentro de uma transação. É possível criar um conjunto de registro criados dentro de uma transação e um conjunto de registros criados ou modificados fora da transação. Quando a transação termina, o conjunto criado durante la transação deve ser apagado, porque poderia não ser uma reapresentação exata dos registros, especialmente se a transação for cancelada. O seguinte exemplo apaga os registros duplicados de uma tabela que contem informação de Pessoas. Um loop For...End for passa por todos os registros, comparando o registro atual com o registro anterior. Se o nome, endereço, e código postal forem iguais, o registro é adicionado a um conjunto. Ao final do loop, o conjunto é convertido na seleção atual e a seleção atual anterior é apagada CRIATE EMPTY SET([Pessoas];"Duplicados") Ao invés de apagar imediatamente os registros ao final do método, pode mostrá-los em tela ou imprimi-los, de modo a que possa realizar uma comparação mais detalhada. 4D administra um conjunto sistema chamado UserSet, o qual guarda automaticamente as seleções de registros mais recentes realizadas pelo usuário em tela. Desta forma, pode mostrar um grupo de registros com MODIFY SELECTION ou DISPLAY SELECTION, pedir ao usuário que selecione alguns entre eles, e transformar os resultados desta seleção manual em um conjunto que você pode nomear. 4D Server: apesar de seu nome não começar com o caractere "$", o conjunto sistema UserSet é um conjunto cliente. Assim, quando usar INTERSECTION, UNION e DIFFERENCE, tenha certeza de comparar UserSet apenas com outros conjuntos clientes. Apenas há um UserSet por processo. Cada tabela não tem seu próprio UserSet. UserSet é associado a uma tabela apenas quando uma seleção de registros para a tabela é mostrada. 4D administra o conjunto UserSet para os formulários listados mostrados em modo Desenho ou utilizando os comandos MODIFY SELECTION ou DISPLAY SELECTION . Entretanto, este mecanismo não está ativo para sub-formulários.O seguinte método ilustra como mostrar registros para permitir ao usuário selecionar alguns registros, e depois utiliza UserSet para mostrar os registros selecionados: [#Tab] ` Mostrar todos os registros e permitir ao usuário selecionar alguns deles. Os comandos APPLY TO SELECTION, DELETE SELECTION e ARRAY TO SELECTION e JSON TO SELECTION criam um conjunto sistema chamado LockedSet quando são utilizadas em um ambiente multi-processo. |
PROPRIEDADES
Produto: 4D VER TAMBÉM ARTICLE USAGE
Manual de linguagem 4D ( 4D v14 R3) Inherited from : Conjuntos ( 4D v12.4) |
|||||||||||||||||||||