Página 1 de 1
Alterar/Mudar dados de um DBF para outro campo
Enviado: 26 Mai 2010 15:01
por betovox
Boa tarde a todos,
estou com um problema aqui novamente com relação a DBF.
como disse no topico anterior nao sou programador mas trabalho com informatica e fui muito bem ajudado aqui no forum.
Meu novo problema é o seguinte:
instalou o sistem de NFE mas os dados antigos sao em DBF ate ai tudo bem mas com a importação algumas cidades dao erro por causa de anos de cadastros errados por exemplo: Timom- MA o correto seria Timon-MA.
consegui o sql com todas as cidades e o converti para dbf mas ficou assim:
(29,'BOCA DA MATA','AL','57680-000'
como faria pra mudar o formato:
BOCA DA MATA no campo cidade
AL no campo estado
57680-000 no campo cep
criei os campos no CBDF manualmente, ja que os dados estao em uma linha somente.
eu ja fiz isso quando o cpf estava 12345678000 mudando para 123.456.789-00, mas nao salvei o metodo para o mesmo.
me desculpe pelo detalhamento enorme mas foi nescessario para que conseguisse explicar.
Abraço
Humberto
Alterar/Mudar dados de um DBF para outro campo
Enviado: 26 Mai 2010 18:30
por Pablo César
Humberto, você poderia disponibilizar os dbfs (o gerado pelo sql e o que deveria ficar), assim ficaria mais fácil. Pois não sabemos quais são as estruturas dos dbfs. Você diz que conseguiu assim:
(29,'BOCA DA MATA','AL','57680-000'
Não consiso entender isso, pois não é uma string armazenado num campo... não entendí...
Coloque os arquivos num só arquivo zipado.
Re: Alterar/Mudar dados de um DBF para outro campo
Enviado: 26 Mai 2010 18:38
por Maligno
Dica: é de senso comum não salvar os sinais gráficos de números formatados (ex: CPF) no banco de dados. É um desperdício de espaço. Para isso temos função de formatação, usada quando é necessário exibir esse tipo de dado.
Re: Alterar/Mudar dados de um DBF para outro campo
Enviado: 27 Mai 2010 09:07
por betovox
Bom dia,
me desculpe se nao expliquei corretamente o formato.
é o seguinte:
(29,'BOCA DA MATA','AL','57680-000'
os dados sao:
"(29," é o numero da cidade no banco sql nao sera nescessario podera ser deletado
BOCA DA MATA é o nome da cidade
AL o estado
57680-000 é o cep
eu nescessito que fique no formato:
cidade: Boca da Mata
Estado: AL
Cep: 57680-000
extraindo da linha citada acima e apagando o que nao for nescessario.
de todo modo segue anexo o arquivo no formato .rar.
Desde ja muito obrigado pela atencao.
Alterar/Mudar dados de um DBF para outro campo
Enviado: 27 Mai 2010 16:06
por Pablo César
me desculpe se nao expliquei corretamente o formato
Não tem problema, vendo conteúdo do seu dbf logo ví que era aquela sequência de caracteres gerados pelo SQL e que foi colocado tudo num campo só... (por isso solicitei os arquivos a fim de ver seu conteúdo e ver qual é a estrutura que você desejava).
Código: Selecionar todos
// abrindo o dbf que veio do SQL
SELECT 1
USE CIDADES1
// Criando estrutura
CAMPOS:={ {"CIDADES" ,"C",040,000},;
{"ESTADO" ,"C",002,000},;
{"CEP" ,"N",008,000} }
DBCREATE("CIDADES.DBF",CAMPOS) // gerando dbf com estrura adequada
// abrindo dbf criado
SELECT 2
USE CIDADES.DBF
SELECT 1
DO WHILE (1->(!EOF()))
cBuff := ALLTRIM(STRTRAN(1->CIDADES,CHR(39),""))
aRet:= {}
while (i := At(",",cBuff)) > 0 // varre a string separando por ","
cItem := Left(cBuff,i-1)
cBuff := SubStr(cBuff,i+1)
AAdd(aRet,AllTrim(cItem))
enddo
AAdd(aRet,AllTrim(STRTRAN(cBuff,"-",""))) // adiciona a um vetor
SELECT 2
APPEND BLANK // adicionando registros de acordo vetores
REPLACE CIDADES WITH aRet[2]
REPLACE ESTADO WITH aRet[3]
REPLACE CEP WITH VAL(aRet[4])
SELECT 1
SKIP
ENDDO
Tinha feito outro exemplo passo a passo, mas pequei quando deixou de processar parte do arquivo devido ao seu tamanho e pela limitação das funções que ia utilizar. Mas então refiz outro código, lendo registro por registro e desmenmbrando os campos. Disponibilizei o fonte e o CIDADES.DBF, senão gostar do tipo do campo do CEP, pode mudar para caracter. Lembre o que disse o colega Maligno para utilizar máscaras a fim de evitar o armazenamento de caracters desnecessários. Use
transform(cep,"@K 99999-999") Boa sorte !
Re: Alterar/Mudar dados de um DBF para outro campo
Enviado: 27 Mai 2010 16:32
por betovox
Boa Tarde,
olha muito obrigado.
Muito obrigado mesmo.
Deu certinho aqui era isso mesmo que precisava substitui aqui o arquivo cidades1 pelo real com todas as cidades e funcionou 100%.
Pelo que entendi vc criou um prg do zero para isso, realmente fico muito grato.
Quando efetuei a pergunta era porque ja tinha feito algo assim com o cpf ja que foram anos de cadastros errados pelo motivo de preguiça mesmo do usuario em nao sair e ir para o cadastro de pessoa fisica.
Dai tive que aprender um comando que copiava partes do cpf e colocava no campo correto, por exemplo:
12345678900
eu copiava com esse comando que nao me lembrava os campos 123 para o cpf depois copiava o 456 e assim ate finalizar.
quando vi que vc me enviou um prg que ja faz isso automaticamente nao acreditei,

.
Valew mesmo.
Sem mais como agradecer, abraço e ate a proxima.
Humberto oliveira