Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Old
|
Old ( campo ) -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
campo | Campo |
![]() |
Campo ao qual devolver o valor anterior | |||||
Resultado | Expression |
![]() |
Valor original do campo | |||||
O comando Old devolve o valor armazenado em campo antes de que se tenha atribuído um valor por programação ou modificado durante a entrada de dados.
Cada vez que mudar o registro atual para uma tabela, 4D cria e mantém em memória um duplicado da “imagem” do novo registro atual no momento em que é carregado na memória (por razões de otimização, 4D faz caso omisso de campo de tipo Texto, Imagem e BLOB.) Quando modificar um registro, trabalha com a imagem atual do registro, não com seu duplicado. Esta imagem é apagada quando mudar novamente o registro atual.
Old devolve o valor da imagem duplicada. Em outras palavras, para um registro existente, devolve ol valor do campo tal como está guardado no disco. Se um registro é novo, Old devolve o valor vazio por padrão de acordo ao tipo de campo. Por exemplo, se campo é um campo Alfa, Old devolve uma string vazia. Se campo é de tipo numérico, Old retorna zero (0), etc.
Old funciona com campo se o campo tiver sido modificado por um método ou pelo usuário durante a entrada de dados. Old pode ser aplicada a todos os tipos de campo.
Para restaurar o valor original de um campo, atribua-lhe o valor retornado por Old.
Nota: por razões técnicas, Old não pode ser passada como parâmetro a outros comandos com campos tipo imagem e BLOB. É necessário passar o valor por uma variável intermediária. Por exemplo:
`Não escreva (causa erro de sintaxe):
$tamano :=BLOB size(Old([Tabela]Blob)) `INCORRETO
`Escreva:
$antBLOB:=Old([Tabela]Blob)
$tamano :=BLOB size($antBLOB) `CORRETO
Produto: 4D
Tema: Entrada de Dados
Número
35
Modificado: 4D v11 SQL Release 1
Manual de linguagem 4D ( 4D v20 R7)