Clipper On Line • Ver Tópico - Eliminar Duplicidade em uma DBF

Eliminar Duplicidade em uma DBF

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Eliminar Duplicidade em uma DBF

Mensagempor kristo » 08 Jan 2008 07:20

Bom dia amigos, novamente estou aqui, e sempre me sinto a vontade em pedir, pois sempre fui muito bem atendido, e vocês não tem noção de quanto me ajudam, então desde já deixo meus agradecimentos.

Amigos mais uma vez preciso de uma ajuda.

Quanto mais mexo na DBF mais coisas aparecem para fazer, agora peciso de uma PRG que limpe duplicidades.
A DBF chamada CADASSO tem o Campo NOME e ENDERECO eu precisava alguma PRG que fizesse a comparação entre esses dois campos e se caso ele encontrar o mesmo "nome" com o mesmo "endereço", ele moveria todos os nomes iguais e deixaria apenas um na DBF CADASSO, e os nomes que foram movidos fossem para uma nova DBF que dariamos o nome de DUPLI, ou seja moveria a mesma estrutura so que somente com os dados iguais que foram retirados da DBF CADASSO " original".

Desde já agradeço a atenção e a ajuda, fiquem em paz, e me desculpem por tanto pedir
kristo
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 54
Data de registro: 21 Set 2004 16:19
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Pablo César » 08 Jan 2008 08:00

Esse negócio de comparar strings... não é dificil. eu faria assim...

1. Utilize arquivo de índice no campo NOME, dessa forma será mais rápido a procura e comparação em looping
2. Coloque em variáveis os campos do primeiro registro e dê um skip
3. Compare com: IF VNOM=NOME .AND. VEND=ENDERECO
4. Abra antecipadamente o arquivo DUPLI e dê um append from rec <numero registro>
5. Retorne a área onde estava (sele CADASSO) e dê um delete para apagar esse registro

Mas acho que essa forma não é a mais correta de fazer. Pois muitas vezes o usuário dá um espaço a mais ou erra num dígito e a comparação ficaria comprometida. Acho que essa verificação deve ser feita no momento de inclusão/alteração de registros naqueles campos.
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 de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Mensagempor Eolo » 08 Jan 2008 08:09

Aí vai uma sugestão: o arquivo CADASSO.dbf é mantido intacto; o arquivo UNICO.dbf vai conter um registro de cada nome+endereço; o arquivo DUPLI.dbf vai conter as duplicidades.

use cadasso new excl

copy stru to dupli
copy stru to unico

use dupli new excl

use unico new excl
inde on nome+endereco to unico
set inde to unico

sele cadasso
go top
do whil !eof()
  sele unico
  seek cadasso->nome+cadasso->endereco

  if found()
    sele dupli
  endi
  appe blan
  repl nome with cadasso->nome
  repl endereco with cadasso->endereco

  sele cadasso
  skip
endd
quit
Avatar de usuário

Eolo
Colaborador

Colaborador
 
Mensagens: 1134
Data de registro: 08 Dez 2005 17:24
Cidade/Estado: São Paulo - SP
Curtiu: 0 vez
Mens.Curtidas: 41 vezes

Mensagempor kristo » 08 Jan 2008 08:13

Pablo César escreveu:Esse negócio de comparar strings... não é dificil. eu faria assim...

1. Utilize arquivo de índice no campo NOME, dessa forma será mais rápido a procura e comparação em looping
2. Coloque em variáveis os campos do primeiro registro e dê um skip
3. Compare com: IF VNOM=NOME .AND. VEND=ENDERECO
4. Abra antecipadamente o arquivo DUPLI e dê um append from rec <numero registro>
5. Retorne a área onde estava (sele CADASSO) e dê um delete para apagar esse registro

Mas acho que essa forma não é a mais correta de fazer. Pois muitas vezes o usuário dá um espaço a mais ou erra num dígito e a comparação ficaria comprometida. Acho que essa verificação deve ser feita no momento de inclusão/alteração de registros naqueles campos.


OBRIGADO E DESCULPE, MEU PROBLEMA É QUE NÃO SEI MONTAR PRG O QUE FAÇO AS VEZES É ALTERAR ALGUMA COISA, SE POSSÍVEL E SE VC TIVER UM TEMPO DISPONÍVEL PODERIA FAZER ESSA PRG PRA MIM, PENSANDO NO QUE VC DISSE EM RESPEITO AOS ESPAÇOS EM BRANCO, SERIA MAIS FÁCIL FAZER A COMPARAÇÃO ENTRE O CAMPO "NOME" E O CAMPO "TELEFONE1" ?

GRATO
kristo
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 54
Data de registro: 21 Set 2004 16:19
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Pablo César » 08 Jan 2008 08:14

Puxa... Eolo... isso que é ajuda !

Obs.: faltaria deletar os registros em duplicidade no arquivo CADASSO (poderia ter usado o INDEX UNIQUE e copiar para UNICO.DBF) e appendar somente uma única vez o registro duplicado ou triplicado (nunca se sabe quantas vezes estaria repetido o registro) no arquivo DUPLI.DBF
Editado pela última vez por Pablo César em 08 Jan 2008 08:39, no total de 3 vez
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 de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Mensagempor Pablo César » 08 Jan 2008 08:23

kristo escreveu:MEU PROBLEMA É QUE NÃO SEI MONTAR PRG O QUE FAÇO AS VEZES É ALTERAR ALGUMA COISA, SE POSSÍVEL E SE VC TIVER UM TEMPO DISPONÍVEL PODERIA FAZER ESSA PRG PRA MIM
Sabe colega eu gostaria de ajudar você, mas para isso você precisa ajudar-se a si mesmo. O que eu quero dizer, que caso você tenha intenção de ser um programador, tem que meter a caras. Coloque o seu código fonte (utilize as opções de edição "Code", é claro) que eu irei ajudar. O colega Eolo, fez uma rotina, cabe a você trabalhar encima dela e pedir ajuda caso você não consiga. è muito importante que você meta mãos à massa, dê uma chance a você mesmo, soará agora neste momento que eu não estou querendo te ajudar, ou alias que estou fazendo doce para te ajudar, mas na realidade se você intentar fazer (sem medos, faça uma cópias num diretorio aparte), tenho certeza que sozinho ou até com a nossa ajuda você conseguirá. Não me agradeça agora, tenho certeza que você algum dia irá lembrar disto e irá pensar (foi barbada) e agradecer na sua mente. Já isso é uma ótima recompensa para mim.
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 de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Mensagempor kristo » 08 Jan 2008 10:24

Pablo

Eu so pedi para o nosso amigo montar, pois eu não sei como começar nem como terminar, e sempre antes de pedir ajuda a vcs, pode ter certeza que já tentei de tudo, por mim mesmo, quebrando a cabeça, compilando, lendo mensagens de erros, etc..., qdo venho até vcs é pq realmente não consegui, qto a rotinha do nosso amigo eu não tinha visto, uma vez visto eu pego compilo e faço as mudanças, no caso do campo endereço para telefone1, e deu certo.
Quanto a ser programador, quem me dera, esse não é meu ramo, o que eu sei que o clipper é uma linguagem que sempre trabalhei, ressaltando que so trabalhei nunca programei, então tento ler algo aqui algo ali, e vou tentando adaptar meu trabalho para que ele fique mais rápido e menos desgastante, mais se tem algo que eu admiro é ver vcs resolvendo e ajudando as pessoas, eu também gostaria de ser assim, so não tem nem idéia de como começar, bom mais resumindo, o importante é que deu certo novamente, so tenho a agradecer a vcs.
Desculpe qualquer coisa, tentarei não pedir tanto, podem até me achar desenteressado, mais não sou, adoraria aprender mesmo, e tento da forma que posso.

Fiquem com Deus, e obrigado!

Kristo
kristo
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 54
Data de registro: 21 Set 2004 16:19
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor gvc » 08 Jan 2008 10:25

Se vc tem um campo de documento (RG ou CPF) vc pode usá-lo para organizar seu arquivo e apagar duplicidade. Mas vc deverá criar um padrão para entrada do documento.

O problema da comparação de campo Nome (P.Ex.) é que na entrada pode ter alguma coisa "pequena" (Isabel e Izabel p.ex.). Abreviação então, é um pesadelo.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar de usuário

gvc
Colaborador

Colaborador
 
Mensagens: 1269
Data de registro: 23 Ago 2005 10:57
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Pablo César » 08 Jan 2008 10:33

Só para complementar mais um pouco...
gvc escreveu:Se vc tem um campo de documento (RG ou CPF) vc pode usá-lo
Para identificar a pessoa, acertadamente através de CPF, mas RG, como não existe padrão algum, recomenda-se remover traços, pontos e até mesmo caracteres ALFA (isso se for nacionalidade brasileira) no entanto para estrangeiros acredito que tem uma norma. Nesses casos o código para estrangeiros e ALFA e NUMEROS. Batata é mesmo fazer pelo CPF ahhh e ainda consultar a Receita Federal para confirmar se o número fornecido pertence mesmo a tal pessoa e ainda verficar a condição de cadastro (se está REGULAR, SUSPENSA ou PENDENTE) em:
http://www.receita.fazenda.gov.br/Aplic ... ublica.asp

O problema que tal verificação deve ser feita manualmente e 1 CPF por vez, por causa do gráfico de código autenticador. DAM !
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 de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Mensagempor Maligno » 08 Jan 2008 13:50

e ainda consultar a Receita Federal para confirmar se o número fornecido pertence mesmo a tal pessoa e ainda verficar a condição de cadastro

Rapaz! Você vai acabar dando um nó na cabeça do colega. :)))))

Acho que é um bom caminho o colega pegar o código cedido pelo Eolo e ir trabalhando em cima, tentando entender como os comandos funcionam e, conforme o caso, ir postando suas dúvidas.

Pra quem não conhece programação, código é meio de didática. Não pode (ou não deveria) ser meio de trabalho.
[]'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!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor kristo » 09 Jan 2008 05:22

A Todos os colegas!

Realmente estou trabalhando sobre a rotina postada pelo nosso amigo, realmente passa algumas duplicidades despercebidas, ou seja qdo o campo telefone ou nome vem com alguma letra ou número diferente, mais está ótimo, dá para eliminar muitas duplicidades, o restante eu faço manualmente mesmo, afinal o banco de dados não é tão grande, questão de 40 mil nomes, dá um certo trabalho, mais infelizmente não tenho outro campo para pesquisar, esse banco de dados é enviado pelos clientes da empresa, é sobre compradores e montadoras de veículos, já vem sem CPF, RG ou coisa parecida, e pra cada montadora a DBF muda, eis a minha necessidade de estar sempre mudando a rotina de trabalho.
Agradeço a todos pela ajuda que me foi passada, está sendo ótimo para mim.
Paz a todos

Kristo
kristo
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 54
Data de registro: 21 Set 2004 16:19
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Pablo César » 09 Jan 2008 07:43

Maligno escreveu:Você vai acabar dando um nó na cabeça do colega.
Veeejaaa ! queimar um pouco de neurônios que eu saiba não faz mal a ninguém... e depois de tudo, o meu comentário tem o propósito de alimentar novas idéias, não somente para o colega kristo como para outros também.

kristo escreveu:realmente passa algumas duplicidades despercebidas, ou seja qdo o campo telefone ou nome vem com alguma letra ou número diferente
Pois é... era isso a que eu me referia, fazer comparação de strings digitadas pelos usuários, dá isso aí... Eu também tenho no meu sistema, uma rotina com margem porcentual para comparação. Isto é:

Se num registro estiver: "João Carlos Fernandez" e outro registro "Joao C. Fernandes" a rotina irá me dar como "possível" duplicidade e dispõe em tela os dois registros com o restantes de informações (as info relevantes) e pergunto se estas duas pessoas são as mesmas, daí se o usuário dizer que sim e não for (problema dele... hihihi). Não vejo outra forma, isto é, sem não houver uma inteiração manual do usuário e uma verificação de "letra por letra", transformando os acentos em caracter normal INCLUSIVAMENTE.

Mas enfim, quem quiser pode adotar ou melhorar a idéia, e quem não quiser se preocupar que fique assim mesmo... A questão da qualidade é problema de cada um.

Eu dou meus votos de "Parabéns" ao kristo, ora porque como usuário ele preocupa-se com os seus dados e faz o que for para melhorar. Preocupação que devia ter sido do programador que fez o sistema. Também deixo meu ensejo para que o kristo venha a se tornar programador algum dia e participe aqui no fórum postando seu códigos-fontes da forma que for, com erros ou com pé e sem cabeça... mas que terá meu auxilio e acredito de outros... por quê não ?. Talvez muitos dos colegas aqui não irão gostar com o que vou te indicar... mas acredito que para agora no seu início nas suas tentativas de melhoras dos seus sistemas o kristo poderia dar uma olhadinha no MIRO. este "gerador de aplicativos" irá dar-lhe um grande insetivo não somente com a questão estética dos seus sistemas como também em algumas questões que o próprio programador tem que fazer seus ajustes na munheca (programação interativa nos módulos gerados pelo Miro) e isso será bom pra você também...
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 de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Pablo X miro

Mensagempor kristo » 17 Jan 2008 08:26

Olá Pablo, realmente eu tenho o miro, e sempre faço alguns programinhas com ele, pois ele é muito rápido e não e tão complexo em matéria de ter que digitar linha por linha (mais eu adoraria montar um programa do pé a cabeça), o ruim pra mim é que não sei como usar o que o clipper pode me oferecer, ou seja se precisar fazer algo mais complexo, ai laskou tudo.
Deixo aqui meus agradecimentos a todos, e se por acaso alguém puder me dar uma ajuda em relação a programação eu ficarei muito grato, queria ao menos saber como usar os comandos do clipper, ou seja saber o que significa cada um, para eu ir me adaptando, se alguém puder me passar essas informações, seria de grande ajuda, pois ai sim eu iria meter as caras em casa, nos finais de semana, tentando montar algo, leio vcs conversando entre sim, dando idéias e parece tão simples para vcs, quem sabe um dia chego lá, aqui na minha cidade não tem ninguém ou nenhum lugar que ensine a programação em clipper, sei que existe várias outras, mais do meu pequeno conhecimento, nunca ví uma serramente tão interessante qto ao clipper.
Abraço a todos, e fiquem com Deus
kristo
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 54
Data de registro: 21 Set 2004 16:19
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor Maligno » 17 Jan 2008 10:21

Acho que uma boa forma de aprender a linguagem é ir lendo o NG. Primeiro os comandos, depois as funções, etc. Todos os ítens tem algum código exemplo. Dá pra aprender muita coisa. É só ter disciplina e dedicação. Depois de se familiarizar com o básico, proponha-se a montar um primeiro programa de uso prático pra consolidar os conhecimentos. Depois, com o tempo, vai ficando bem fácil. Na dúvida, existe o fórum. :)
[]'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!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Eliminar Duplicidade em uma DBF

Mensagempor JoãoBC » 01 Jun 2020 16:52

Olá, pessoal, bom dia.
Conheci esta página procurando no google "dbase registro duplicado".

Tentei usar o programa direto no dbase IV, mas não funcionou, deu erro logo na primeira linha, onde aparece

use cadasso new excl

Deu comando não reconhecido para a palavras "new excl"
Não vi no texto qual a versão do clipper.
Se alguém puder me ajudar, agradeço.
JoãoBC
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 14
Data de registro: 01 Jun 2020 16:47
Cidade/Estado: Rio de Janeiro, RJ
Curtiu: 5 vezes
Mens.Curtidas: 0 vez

Próximo



Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro