Cara, voc� tem logins repetidos dentro da sua base, que tal um indice
�nico para evitar isso?
Bom, vamos lah.
//Busco ordenado
qry.sql.add('Select seuscampos from sua tabela order by login');
qry.open;
//Pego a variavel de comparacao
login_base_comparacao := qryLogin.asstring;
//Vou para o proximo
qry.next();
//Numera os logins repetidos, 1,2,3,4 .....
vli_contador := 1;
vli_registros_alterados:=0;
while not qry.eof do begin
if (login_base_comparacao = qryLogin.asstring) then begin
qry.Edit();
qryLogin.AsString = qryLogin.AsString +
IntToStr(vli_contador);
qry.Post();
inc(vli_contador);
inc(vli_registros_alterados);
end else begin
login_base_comparacao := qryLogin.asstring;
vli_contador:=0;
end;
qry.next;
end;
� isso. Valeu ;-)
On Sat, 29 Jan 2005 02:29:42 -0000, Bruno Augusto
<[EMAIL PROTECTED]> wrote:
>
>
> fiz um programinha para alterar logins que est�o repetidos da tabela
> de usu�rios. Por�m o mesmo apresenta dois problemas... � preciso
> execut�-lo 2x, e ele trava legal os recursos da m�quina...
> O pessoal do trampo s� fala que Delphi nao presta por isso.. e
> programam em VB e C++.. vou passar a rotina que eu fiz.. e se tiverem
> algo para que eu possa implementar ficarei muito agradecido...
> ps.: Estou usando MySql
>
> string da query:
>
> select id,login,dup from usuarios where not isnull(login) order by login
>
> //func��o para eliminar os acentos
>
> function CorrigeTxt(texto: string): string;
> var controle1,texto2,L1,L2:string;
> posi,ver:integer;
> begin
> controle1:='a�����e����i����o����u�����';
>
> texto2:='';
> posi:=1;
> while posi<=length(texto) do
> begin
> L1:=Copy(texto,posi,1);
> ver:=pos(L1,controle1);
> begin
> if ver=0 then L2:=L1
> else
> if ver<7 then L2:='a'
> else
> if ver<12 then L2:='e'
> else
> if ver<17 then L2:='i'
> else
> if ver<22 then L2:='o'
> else
> if ver<27 then L2:='u'
> else
> L2:='c';
> end;
> texto2:=texto2+L2;
> posi:=posi+1;
> end;
> CorrigeTxt:=texto2;
> end;
>
> procedure TForm1.SpeedButtonCorrige(Sender: TObject);
> var contador,cont:integer;
> login:String;
> begin
>
> contador:=0;
> cont:=0;
> if not query1.Active then query1.open;
> query1.First;
> login:=query1login.asString;
> query1.next;
>
> while not query1.Eof do
> begin
> label2.Caption:=TimeToStr(Time-hora);
> if
> UpperCase(CorrigeTxt(query1login.asString))=UpperCase(CorrigeTxt(login))
> then
> begin
> while
> UpperCase(CorrigeTxt(query1login.asString))=UpperCase(CorrigeTxt(login))
> do
> begin
> query1.Edit;
>
> query1login.asString:=query1login.asString+IntToStr(cont+1);
> query1dup.asString:='S';
> query1.ApplyUpdates;
> query1.CommitUpdates;
> query1.close;
> query1.Open;
> contador:=contador+1;
> query1.next;
> cont:=cont+1;
> end;
> login:=query1login.asString;
> cont:=0;
> query1.next;
>
> end //fim login igual
> else
> begin
> login:=query1login.asString;
> query1.next;
> cont:=0;
> end; //fim else
>
> end; //fim da tabela
>
> MessageDlg('Ocorreram
> '+intToStr(contador)+'altera��es!',mtInformation,[mbOk],0);
> end;
>
> --
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
> Para ver as mensagens antigas, acesse:
> http://br.groups.yahoo.com/group/delphi-br/messages
>
> Para falar com o moderador, envie um e-mail para:
> [EMAIL PROTECTED] ou [EMAIL PROTECTED]
>
> Links do Yahoo! Grupos
>
>
>
>
>
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages
Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED] ou [EMAIL PROTECTED]
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
<*> O uso que voc� faz do Yahoo! Grupos est� sujeito aos:
http://br.yahoo.com/info/utos.html