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

 



Responder a