Modifica o valor de alguns campos e registros da tabela corrente.
Sintaxe
REPLACE Campo WITH Exp [, Campo2 WITH Exp2 …] [FOR CondFor] [WHILE CondWhile] [NEXT nRecs] [RECORD nRecno] [REST] [ALL]
Argumento | Obrigat. | Tipo | Descrição |
Campo | Sim | Nome do campo a ser alterado | |
Exp | Sim | Expressão em ADVPL com valor a ser colocado no campo especificado | |
CondFor | Não | Expressão em ADVPL a ser resolvida para que o registro seja alterado | |
CondWhile | Não | Expressão em ADVPL que determina quando a alteração deve parar (quando a expressão retornar .F.) | |
nRecs | Não | N | Quando registros devem ser alterados |
nRecno | Não | N | Número do recno do registro a ser alterado |
Descrição
Este comando é utilizado para alterar o valor de determinado campo em alguns registros da tabela corrente, onde o campo escolhido recebe o valor da expressão para os registros dentro do escopo definido.
Se não forem especificadas as condições para que o registro seja alterado, modifica toda a tabela, como se estivesse especificada a opção “ALL”.
Pode-se especificar um escopo para que os registros sejam alterados através das opções “FOR CondFor” e “WHILE CondWhile“.
Pode-se também limitar o número de registros a serem alterados através da opção “NEXT nRecs” e determinar que a alteração dos registros deve-se iniciar a partir do registro atual com “REST”, mas, caso contrário, o comando executa um DBGOTOP() antes de iniciar a alteração.
Se é desejado alterar apenas determinado registro pode-se defini-lo através da especificação do recno com “RECORD nRecno“.
Exemplo
Este exemplo demonstra como utilizar o comando REPLACE alterar todos os registros dentro do escopo, onde o campo “Valor” receberá “Valor1+Valor2-Valor3*0.1” e o campo “DiaTran” receberá a data atual. Este escopo é definido por Idade > 20, até que o nome seja maior ou igual a “VVV”, começa a deleção a partir do registro atual e marca apenas 10 registros:
USE Cliente VIA “CTREECDX” NEW
REPLACE Valor WITH Valor1+Valor2-Valor3*0.1, DiaTran WITH Date() FOR Idade>20 WHILE Nome<“VVV” NEXT 10 REST