| 4D v13.4ARRAY TO SELECTION | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v13.4
 ARRAY TO SELECTION 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ARRAY TO SELECTION {( array ; campo {; array2 ; campo2 ; ... ; arrayN ; campoN}{; *} )} | ||||||||
| Parâmetro | Tipo | Descrição | ||||||
| array | Array |   | Array a se copiar na seleção | |||||
| campo | Campo |   | Campo para receber os valores do array | |||||
| * | Operador |   | Aguarda execução | |||||
O comando ARRAY TO SELECTION copia um ou mais arrays em uma seleção de registros. Todos os campos listados devem pertencer a mesma tabela.
Se uma seleção existir no momento da chamada, os elementos do array são colocados dentro dos registros, baseados na ordem dos arrays e na ordem dos registros. Se há mais elementos que registros, novos registros são criados. Os registros, seja novo ou já existente, são salvos automaticamente.
Todos os arrays devem apresentar o mesmo número de elementos. Se os arrays apresentarem tamanhos diferentes, um erro de sintaxe é gerado.
Este comando tem o efeito reverso do SELECTION TO ARRAY. Entretanto, o comando ARRAY TO SELECTION não permite campos de diferentes tabelas, incluindo tabelas relacionadas, mesmo quando existe uma relação automática.
Quando você passar o parâmetro *, 4D não executar a linha de instrução correspondente imediatamente, mas sim  armazena na memória, desta forma você pode empilhar várias linhas  terminando com um  *. Todas essas linhas que aguarda sua execução são executadas por um final ARRAY TO SELECTION que não tem o parâmetro *.  Por esta razão, o comando agora pode ser chamado sem parâmetros.
 Como com o QUERY,  isto permite que você quebrar uma declaração complexas em um conjunto  de linhas, que é mais fácil de ler e manter. Você também pode inserir  declarações intermediárias.
Advertência: Utilize ARRAY TO SELECTION com cautela, porque este comando reescreve as informações dos registros existentes. Se um registro está bloqueado por outro processo durante a execução do ARRAY TO SELECTION, este registro não se modifica. Todos os registros bloqueados se colocam em LockedSet. Depois da execução de ARRAY TO SELECTION, você pode testar o conjunto LockedSet para ver se contém registros bloqueados.
4D Server: o comando é otimizado por 4D Server. Os arrays são enviados pela equipe do cliente para o servidor, e os registros são modificados ou criados na equipe do servidor. Como este pedido é controlado de modo sincronizado, a equipe cliente deve esperar que a operação se complete com êxito. No ambiente de multi-usuários ou multi-processos, nenhum registro bloqueado será reescrito.
No exemplo a seguir, os arrays asSobrenomes e asEmpresas escrevem dados na tabela [Pessoas]. Os valores do array asSobrenomes são localizados no campo [Pessoas]Sobrenome e os valores do array asEmpresas são localizados no campo [Pessoas]Empresa:
 ARRAY TO SELECTION(asSobrenomes;[Pessoas]Sobrenome;asEmpresas;[Pessoas]Empresa)Este exemplo é usado para duplicar uma seleção de registros:
 ARRAY TEXT(a1;0)
 ARRAY TEXT(a2;0)
 ARRAY TEXT(a3;0)
 ARRAY TEXT(a4;0)
 
 ALL RECORDS([Table_1])
 For($i;1;Get last field number(1))
    $p:=Get pointer("a"+String($i))
    SELECTION TO ARRAY(Field(1;$i)->;$p->;*)
  // Construção atrasado de arrays
 End for
 SELECTION TO ARRAY //Execução de instruções
 
 REDUCE SELECTION([Table_1];0)
 For($i;1;Get last field number(1))
    $p:=Get pointer("a"+String($i))
    ARRAY TO SELECTION($p->;Field(1;$i)->;*)
  // Construção da seleção
 End for
 ARRAY TO SELECTION //Execução de instruções
	Produto: 4D
	Tema: Arrays
	Número 
        261
        
        
        
	
        
        
 
        

	Modificado: 4D v11 SQL  
	Modificado: 4D v13
SELECTION TO ARRAY
Variáveis de Sistema