Correção de palavras em uma tabela DBF

13/03/2003

0

Amigos, preciso de ajuda para resolver, acredito eu, um problema relativamente simples : trabalho com Geoprocessamento utilizando tabelas DBF que na maior parte das vezes apresentam palavras incompletas, exemplo : Avn Pres Vargas, que deveria aparecer Avenida Presidente Vargas. Acontece que a tabela possui 100.000 registros e a automatização seria muito importante. já existe uma tabela com os prefixos e nome correto que possui dois campos denominados PREF e NOME. Apartir da comparação com a primeira, a segunda deverá ser corrigida.
Obrigado à todos


Jeffjames

Jeffjames

Responder

Posts

13/03/2003

Carnette

Amigos, preciso de ajuda para resolver, acredito eu, um problema relativamente simples : trabalho com Geoprocessamento utilizando tabelas DBF que na maior parte das vezes apresentam palavras incompletas, exemplo : Avn Pres Vargas, que deveria aparecer Avenida Presidente Vargas. Acontece que a tabela possui 100.000 registros e a automatização seria muito importante. já existe uma tabela com os prefixos e nome correto que possui dois campos denominados PREF e NOME. Apartir da comparação com a primeira, a segunda deverá ser corrigida. Obrigado à todos


Coloque esta função dentro do seu projeto e faça as adaptações necessárias;

Função Replace Str

function ReplaceStr (Text,oldstring,newstring:string):string;
var atual, strtofind, originalstr:pchar;
NewText:string;
lenoldstring,lennewstring,m,index:integer;
begin //ReplaceStr
NewText:=Text;
originalstr:=pchar(Text);
strtofind:=pchar(oldstring);
lenoldstring:=length(oldstring);
lennewstring:=length(newstring);
Atual:=StrPos(OriginalStr,StrtoFind);
index:=0;
while Atual<>nil do
begin //Atual<>nil
m:=Atual - OriginalStr - index + 1;
Delete(NewText,m,lenoldstring);
Insert(newstring,NewText,m);
inc(index,lenoldstring-lennewstring);
Atual:=StrPos(Atual+lenoldstring,StrtoFind);
end; //Atual<>nil
Result:=NewText;
end; //ReplaceStr


Responder

13/03/2003

Marcelo Saviski

var
num:integer;
begin
query1.active := false;
query11.SQL.clear;
query1.SQL.add(´select * from tabela.dbf´);
query11.SQL.ADD(´´);
query1.active := true;
tabelacorreta.first;
while not tabelacorreta.EOF do
begin
query1.active := false;
query11.SQL[1] := ´where endereco like "¬´ + tabelacorreta.fieldbyname(´prefix´).asstring + ´¬"´
query1.active := true;
query1.first;
while not query1.EOF do
begin
num := pos(tabelacorreta.fieldbyname(´prefix´).asstring,query1.fieldbyname(´endereco´).asstring )
query1.fieldbyname(´endereco´).asstring := copy(query1.fieldbyname(´endereco´).asstring , 0 , num) + tabelacorreta.fieldbyname(´nome´).asstring + copy(query1.fieldbyname(´endereco´).asstring ,num + length(tabelacorreta.fieldbyname(´prefix´).asstring),1000);
query1.next;
end;
tabelacorreta.next;
end;
end;


Espero que funcione!

[img:2a7a104543]http://www.apriori.com.br/cgi/forum/images/smiles/icon_eek.gif[/img:2a7a104543][img:2a7a104543]http://www.apriori.com.br/cgi/forum/images/smiles/icon_cool.gif[/img:2a7a104543][img:2a7a104543]http://www.apriori.com.br/cgi/forum/images/smiles/icon_rolleyes.gif[/img:2a7a104543]


Responder

13/03/2003

Anonymous

Ainda não testei mas de qq maneira, te agradeço pela super ajuda!
Jeff


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar