DELETE SELECTION
DELETE SELECTION {( tabela )}
Parâmetro | Tipo | Descrição | |
---|---|---|---|
tabela | Table | → | Tabela a qual apagar a seleção atual, ou tabela padrão, se omitido |
Descrição
DELETE SELECTION apaga a seleção atual de registros de tabela. Se a seleção atual estiver vazia, DELETE SELECTION não faz nada. Depois de apagar os registros, a seleção atual fica vazia. Os registros que são apagados durante uma transação estão bloqueados para os outros usuários e processos até que a transação seja confirmada ou cancelada.
Advertência: a eliminação de uma seleção de registros é uma operação definitiva e não pode ser desfeita.
Desmarcar a opção Registros apagados definitivamente no Inspetor de tabelas lhe permite aumentar a velocidade das eliminações durante o uso de DELETE SELECTION (ver Registros eliminados definitivamente no manual Modo Desenho).
Exemplo 1
O seguinte exemplo mostra todos os registros da tabela [Pessoas] e permite ao usuário selecionar quais apagar. O exemplo tem duas partes. A primeira é um método para mostrar os registros. A segunda é um método de objeto para um botão Apagar. Este é o primeiro método:
ALL RECORDS([Pessoas]) // Seleção de todos os registros
 FORM SET OUTPUT([Pessoas];"Lista") // Definição do formulário para listar os registros DISPLAY SELECTION ([Pessoas]) ` Mostrar todos os registros
Abaixo há o método de objeto do botão Apagar, que aparece no rodapé do formulário de saída. O método de objeto utiliza os registros selecionados pelo usuário (o conjunto sistema UserSet) para apagar a seleção. Note que se o usuário não seleciona nenhum registro, DELETE SELECTION não tem nenhum efeito.
// Solicitar confirmação de que o usuário realmente quer apagar os registros CONFIRM("Vocêe selecionou"+String(Records in set ("UserSet"))+" pessoas a apagar."
+Char(13)+"Clique em OK para apagá-las.")
If(OK=1)
 USE SET("UserSet") // Utilizar os registros escolhidos pelo usuário
DELETE SELECTION([Pessoas]) // Apagar a seleção de registros
 End if
 ALL RECORDS([Pessoas]) // Seleção de todos os registros
Exemplo 2
Se for encontrado um registro bloqueado durante a execução de DELETE SELECTION, esse registro não se apaga. Todos os registros bloqueados são colocados em um conjunto sistema chamado LockedSet. Depois da execução de DELETE SELECTION, pode testar LockedSet para verificar se os registros estavam bloqueados. O seguinte loop será executado até que todos os registros são apagados:
Repeat // Repetir para cada registro bloqueado
 DELETE SELECTION([EstaTabela])
 If(Records in set("LockedSet")#0) // Se houver registros bloqueados
 USE SET("LockedSet") // Selecionar apenas os registros bloqueados
 End if Until(Records in set("LockedSet")=0) // Até que não haja mais registros bloqueados
Ver também
Conjuntos
DISPLAY SELECTION
MODIFY SELECTION
Record Locking
TRUNCATE TABLE