Prg não executa os comandos Informados

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

kristo
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Set 2004 16:19

Prg não executa os comandos Informados

Mensagem por kristo »

Bom dia pessoal, tenho probleminha aqui, um amigo do forum desenvolveu uma PRG para me ajudar, mais ela não altera os dados que preciso......tenho um campo na BDF chamado " Fone " e como a maioria dos prefixos mudaram em preciso alterar..........segue abaixo a PRG montada...........o que eu preciso é o seguinte..........

Ex.. o telefone antigo é 2866565

o novo prefixo é 3286

teria que ficar assim....32866565

Se alguém puder dar uma olhadinha e me ajudar, eu agradeço

O nome da DBF é " FISICO "


set dele on
set date brit
? "Aguarde Indexando arquivo..."
USE FISICO
INDEX ON left(FONE,3) to tel
dbsetindex("tel")
CLEAR
dbgotop()

cTel := space(3)
cTel2 := space(1)
@ 10,10 say "Das Antigas: " get cTel
@ 11,10 say "Novo Inicio: " get cTel2
read
if lastkey()=27
return
endif
dbseek(cTel)
WHILE LEFT(FONE,3)==alltrim(cTel) .and. !EOF()

@ 12,10 say "Processando..."+strzero(recno(),7)+"/"+strzero(lastrec(),7)

if left(FONE,3) == alltrim(cTel)
Replace FONE with alltrim(cTel2)+alltrim(FONE)
endif

dbskip()

ENDDO

dbclosearea()
gransoft
Usuário Nível 3
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

ALteração em campo indexado...

Mensagem por gransoft »

ARAGUARI-MG, 27 de setembro de 2004.

Prezado Kristo,

Você não vai conseguir várias alterações em campo indexado, dentro de um laço DO WHILE ... ENDDO. Abra o DBF e teste o campo FONE, sem indexar.
Exemplo:

Código: Selecionar todos

*
CLEAR
*
cAnt  := "286"
cNovo := "3286"
*
USE FISICO
GOTO TOP
*
WHILE (.NOT. EOF())
   IF SUBSTR(FONE,1,3)==cAnt
      cFone := STUFF(FONE,1,3,cNovo)
      ? FONE, cFone
      REPLACE FONE WITH cFone
   END
   SKIP
END
QUIT
***
Se você executar um REPLACE em campo indexado, o registro/ponteiro/índice será reposicionado na NOVA ordem, e o laço estabelecido não será percorrido da maneira que você deseja até o final, ocorrendo as falhas que você já observou.

Atenciosamente,
Janis Peters Grants.

http://www.gransoft.com.br
gransoft@zipmail.com.br
Responder