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()
Prg não executa os comandos Informados
Moderador: Moderadores
-
gransoft
- 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...
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:
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
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
***
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
