| 4D v13.4DELETE SUBRECORD | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v13.4
 DELETE SUBRECORD 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DELETE SUBRECORD ( subTabela ) | ||||||||
| Parâmetro | Tipo | Descrição | ||||||
| subTabela | Subtabela |   | Subtabela para a qual vai apagar o subregistro atual | |||||
As subtabelas não são compatíveis a partir da versão 11 de 4D. Um mecanismo de compatibilidade garante o funcionamento deste comando em bancos compartilhados; entretanto, é recomendável substituir as subtabelas com tabelas relacionadas padrão.
DELETE SUBRECORD apaga o subregistro atual de subTabela. Se não houver subregistro atual, DELETE SUBRECORD não tem efeito. Depois de apagar o subregistro, a subseleção atual de subTabela fica vazia. Como resultado, DELETE SUBRECORD  não pode ser utilizado para procurar uma subseleção e apagar os  subregistros selecionados. 
A  eliminação de um subregistro não é definitiva até que o registro pai seja salvado. A eliminação de um registro pai apaga automaticamente todos seus  subregistros.
Para eliminar uma subseleção, cria a subseleção,  apaga o primeiro subregistro, recria a subseleção, apaga o primeiro  subregistro, etc.
O exemplo abaixo apaga todos os subregistros de uma subtabela::
 ALL SUBRECORDS([Pessoas]Crianças)
 While(Records in subselection([Pessoas]Crianças)>0)
    DELETE SUBRECORD([Pessoas]Crianças)
    ALL SUBRECORDS([Pessoas]Crianças)
 End whileO exemplo abaixo apaga da subtabela [Pessoas]Crianças os subregistros nos quais a idade das crianças é superior ou igual a 12 anos:
 ALL RECORDS([Pessoas]) ` Seleção de todos os registros
 For($vlRegistro;1;Records in selection([Pessoas])) ` Para todos os registros na tabela
  ` Pesquisar todos os registros que tenham subregistros que correspondam ao critério
    QUERY SUBRECORDS([Pessoas]Crianças;[Pessoas]CriançasIdade>=12)
  ` Loop até que a pesquisa não encontre mais subregistros
    While(Records in subselection([Pessoas]Crianças)>0)
  ` Apagar o subregistro
       DELETE SUBRECORD([Pessoas]Crianças)
  ` Pesquisa novamente
       QUERY SUBRECORDS([Pessoas]Crianças;[Pessoas]CriançasIdade>=12)
    End while
    SAVE RECORD([Pessoas]) ` Salvar o registro pai
    NEXT RECORD([Pessoas])
 End for
	Produto: 4D
	Tema: Subregistros
	Número 
        96
        
        
        
	
        
         
        
	Modificado: 4D v11 SQL  
ALL SUBRECORDS
QUERY SUBRECORDS
Records in subselection
SAVE RECORD