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

<*> 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