Correção de palavras em uma tabela DBF

Delphi

13/03/2003

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

Curtidas 0

Respostas

Carnette

Carnette

13/03/2003

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


GOSTEI 0
Marcelo Saviski

Marcelo Saviski

13/03/2003

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_cool.gif[/img:2a7a104543][img:2a7a104543]http://www.apriori.com.br/cgi/forum/images/smiles/icon_rolleyes.gif[/img:2a7a104543]


GOSTEI 0
Anonymous

Anonymous

13/03/2003

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


GOSTEI 0
POSTAR