Alterar/Mudar dados de um DBF para outro campo

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

betovox
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 28 Abr 2010 14:19
Localização: minas gerais

Alterar/Mudar dados de um DBF para outro campo

Mensagem 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
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Alterar/Mudar dados de um DBF para outro campo

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Alterar/Mudar dados de um DBF para outro campo

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
betovox
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 28 Abr 2010 14:19
Localização: minas gerais

Re: Alterar/Mudar dados de um DBF para outro campo

Mensagem 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.
Anexos
cidades1.rar
(94.96 KiB) Baixado 135 vezes
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Alterar/Mudar dados de um DBF para outro campo

Mensagem 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 !
Anexos
CIDADES.ZIP
(335.1 KiB) Baixado 147 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
betovox
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 28 Abr 2010 14:19
Localização: minas gerais

Re: Alterar/Mudar dados de um DBF para outro campo

Mensagem 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, :D .
Valew mesmo.
Sem mais como agradecer, abraço e ate a proxima.
Humberto oliveira
Responder