Fórum Alguem pode me ajudar nesse loop #327598

17/08/2006

0

procedure TForm1.Button1Click(Sender: TObject);
begin
while ADOQuerysemvalor.Eof do
begin
if ADOQuerysemvalorINSCRICAO.Value = ADOQuerycomvalorINSCRICAO.Value then
ADOQuerysemvalor.edit;
ADOQuerysemvalorVALOR.Value := ADOQuerycomvalorVALOR.Value;
ADOQuerysemvalor.Post;
end
end;

end.


Digital_man

Digital_man

Responder

Posts

17/08/2006

Digital_man

Gente naum achei onde alterar a mensagem que foi errada entaum coloquei aqui de novo ok.

procedure TForm1.Button1Click(Sender: TObject);
begin
while not ADOQuerysemvalor.Eof do
begin
if ADOQuerysemvalorINSCRICAO.Value = ADOQuerycomvalorINSCRICAO.Value then
ADOQuerysemvalor.edit;
ADOQuerysemvalorVALOR.Value := ADOQuerycomvalorVALOR.Value;
ADOQuerysemvalor.Post;
end
end;

end.

Ele s faz o primeiro e fica tudo lento gostaria que el fosse ate o final do banco.


Responder

Gostei + 0

17/08/2006

Cpd_arim

não entendi muito bem o que vc quer fazer mas de uma olhada nos detalhes.

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuerysemvalor.first;///////////////////inicio da tabela
while ADOQuerysemvalor.Eof do
begin
if ADOQuerysemvalorINSCRICAO.Value = ADOQuerycomvalorINSCRICAO.Value then /////esta tabela esta aberta???
ADOQuerysemvalor.edit;
ADOQuerysemvalorVALOR.Value := ADOQuerycomvalorVALOR.Value;
ADOQuerysemvalor.Post;
ADOQuerysemvalor.next;/////////// vai para o proximo campo
end
end;

end.


Responder

Gostei + 0

17/08/2006

Jonas_giron

procedure TForm1.Button1Click(Sender: TObject);
begin
While Not ADOQuerysemvalor.Eof do begin
if ADOQuerysemvalorINSCRICAO.Value = ADOQuerycomvalorINSCRICAO.Value then
ADOQuerysemvalor.edit;
ADOQuerysemvalorVALOR.Value := ADOQuerycomvalorVALOR.Value;
ADOQuerysemvalor.Post;

ADOQuerysemvalor.Next;
end;

end.

usa o ´´ Whilie Not ´´


Responder

Gostei + 0

17/08/2006

Rjun

Só para dar uma organizada no código:

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  while not ADOQuerysemvalor.Eof do 
  begin 
    if ADOQuerysemvalorINSCRICAO.Value = ADOQuerycomvalorINSCRICAO.Value then 
    begin  // Estava faltando um begin
      ADOQuerysemvalor.edit; 
      ADOQuerysemvalorVALOR.Value :=   ADOQuerycomvalorVALOR.Value; 
      ADOQuerysemvalor.Post; 
    end;
    ADOQuerysemvalor.Next;
  end 
end; 



Responder

Gostei + 0

18/08/2006

Digital_man

Só para dar uma organizada no código:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  while not ADOQuerysemvalor.Eof do 
  begin 
    if ADOQuerysemvalorINSCRICAO.Value = ADOQuerycomvalorINSCRICAO.Value then 
    begin  // Estava faltando um begin
      ADOQuerysemvalor.edit; 
      ADOQuerysemvalorVALOR.Value :=   ADOQuerycomvalorVALOR.Value; 
      ADOQuerysemvalor.Post; 
    end;
    ADOQuerysemvalor.Next;
  end 
end; 


Bom assim quando clico no botão ele faz o primeiro percorre toda a tabela, mais so faz o primeiro memso tendo certeza que os campos inscrições são iguais ele so faz o primeiro.???


Responder

Gostei + 0

18/08/2006

Rjun

Veja que esse loop age somente sobre uma tabela. Não sei bem o que você esta querendo fazer. Se for para comparar cada registro de uma tabela com cada registro de outra tabela, então serão necessários dois loops.


Responder

Gostei + 0

18/08/2006

Digital_man

Veja que esse loop age somente sobre uma tabela. Não sei bem o que você esta querendo fazer. Se for para comparar cada registro de uma tabela com cada registro de outra tabela, então serão necessários dois loops.


Quero que ele compare todos os registros da tabela, como vc falow.


Responder

Gostei + 0

18/08/2006

Rjun

Eu não gosto muito da nomenclatura que você usa, por isso vou colocar o código da forma que uso e depois você faz a substituição.

[b:80848733ef]ADOQuerysemvalor => qyrSemValor[/b:80848733ef]
[b:80848733ef]ADOQuerycomvalor => qryComValor[/b:80848733ef]

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  qrySemValor.First;
  while (not qrySemValor.Eof) do
  begin
    qryComValor.First;
    while (not qryComValor.Eof) do
    begin
      if (qrySemValor.FieldByName(´Inscricao´).Value = qryComValor.FieldByName(´Inscricao´).Value) then
      begin
        qrySemValor.Edit;
        qrySemValor.FieldByName(´Valor´).Value := qryComValor.FieldByName(´Valor´).Value;       
        qrySemValor.Post;
      end;
      qryComValor.Next;
    end;  
    qrySemValor.Next;
  end;
end;



Responder

Gostei + 0

23/08/2006

Digital_man

Eu não gosto muito da nomenclatura que você usa, por isso vou colocar o código da forma que uso e depois você faz a substituição. [b:662c8315ef]ADOQuerysemvalor => qyrSemValor[/b:662c8315ef] [b:662c8315ef]ADOQuerycomvalor => qryComValor[/b:662c8315ef]
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  qrySemValor.First;
  while (not qrySemValor.Eof) do
  begin
    qryComValor.First;
    while (not qryComValor.Eof) do
    begin
      if (qrySemValor.FieldByName(´Inscricao´).Value = qryComValor.FieldByName(´Inscricao´).Value) then
      begin
        qrySemValor.Edit;
        qrySemValor.FieldByName(´Valor´).Value := qryComValor.FieldByName(´Valor´).Value;       
        qrySemValor.Post;
      end;
      qryComValor.Next;
    end;  
    qrySemValor.Next;
  end;
end;


Po galera a ajuda de vcs foi massa, funcionou mais depois e que percebi que so vai funcionar se estiver na ordem, tipo ele verifica lado a lado, e no meu carro tem o seguinte a inscrição do primeiro campo pode estar no meio da outra tabela, no final, dai ele nunca acha pq ele compara lado a lado. teria que percorrer toda a tabela achar a inscrição igual e jogar no campo valor dela.


Responder

Gostei + 0

23/08/2006

Rjun

O código que te passei não faz a comparação ´lado a lado´ não. Ele pega o registro da primeira tabela e compara com toda a segunda tabela. Depois que acabou de fazer a comparação com toda a segunda tabela ele avança para o próximo registro da primeira tabela e faz toda a comparação novamente.


Responder

Gostei + 0

23/08/2006

Digital_man

O código que te passei não faz a comparação ´lado a lado´ não. Ele pega o registro da primeira tabela e compara com toda a segunda tabela. Depois que acabou de fazer a comparação com toda a segunda tabela ele avança para o próximo registro da primeira tabela e faz toda a comparação novamente.


Me desculpe amigo relamente vc tem razão, eu e que naum fiz direito agora consertei, obrigado pela força.


Responder

Gostei + 0

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

Aceitar