Ir para conteúdo
  • Cadastre-se

dev botao

Como percorrer todos os dados de uma tabela temporária.


  • Este tópico foi criado há 2695 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa noite!

 

Estou tentando atualizar os dados em uma tabela temporária, mas não estou conseguindo, estou utilizando um ClientDataSet. um help por favor! 

ele só atualiza o primeiro registro.

 

var
  q2: TQuery;
begin
  q2:=TQuery.Create(Self);
  q2.DatabaseName:='SISTEMA';

  qrItensTemp.DisableControls;//Tabela temporário com dados
  qrItensTemp.First;
  while not qrItensTemp.IsEmpty do
  begin
    q2.Close;//Consulta para pegar novo valor
    q2.SQL.Text:='select vl_venda from tb_item '+
    ' where cod_item=:cod_item';
    q2.ParamByName('cod_item').Value := qrItensTempcod_item.AsInteger;
    q2.Open;

    qrItensTemp.Edit;
    qrItensTempvl_unit.Value := q2.FieldByName('vl_venda').AsFloat;
    qrItensTemp.Post;

    qrItensTemp.Next;
  end;
  qrItensTemp.Enablecontrols;

  q2.Close;
  q2.Destroy;

  edtCod.SetFocus;
end;

.   

Link para o comentário
Compartilhar em outros sites

  • Consultores

Debug e verifique o que está acontecendo.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

15 horas atrás, almeidamao disse:

Boa noite!

 

Estou tentando atualizar os dados em uma tabela temporária, mas não estou conseguindo, estou utilizando um ClientDataSet. um help por favor! 

ele só atualiza o primeiro registro.

 

var
  q2: TQuery;
begin
  q2:=TQuery.Create(Self);
  q2.DatabaseName:='SISTEMA';

  qrItensTemp.DisableControls;//Tabela temporário com dados
  qrItensTemp.First;
  while not qrItensTemp.IsEmpty do
  begin
    q2.Close;//Consulta para pegar novo valor
    q2.SQL.Text:='select vl_venda from tb_item '+
    ' where cod_item=:cod_item';
    q2.ParamByName('cod_item').Value := qrItensTempcod_item.AsInteger;
    q2.Open;

    qrItensTemp.Edit;
    qrItensTempvl_unit.Value := q2.FieldByName('vl_venda').AsFloat;
    qrItensTemp.Post;

    qrItensTemp.Next;
  end;
  qrItensTemp.Enablecontrols;

  q2.Close;
  q2.Destroy;

  edtCod.SetFocus;
end;

".   while not q2.EOF do   "

 

Sistema de Automação Comercial para diversos segmentos
NF-e, NFC-e, SPED Fiscal - www.arenasoft.com.br

Link para o comentário
Compartilhar em outros sites

16 horas atrás, almeidamao disse:

Boa noite!

 

Estou tentando atualizar os dados em uma tabela temporária, mas não estou conseguindo, estou utilizando um ClientDataSet. um help por favor! 

ele só atualiza o primeiro registro.

 

var
  q2: TQuery;
begin
  q2:=TQuery.Create(Self);
  q2.DatabaseName:='SISTEMA';

  qrItensTemp.DisableControls;//Tabela temporário com dados
  qrItensTemp.First;
  while not qrItensTemp.IsEmpty do
  begin
    q2.Close;//Consulta para pegar novo valor
    q2.SQL.Text:='select vl_venda from tb_item '+
    ' where cod_item=:cod_item';
    q2.ParamByName('cod_item').Value := qrItensTempcod_item.AsInteger;
    q2.Open;

    qrItensTemp.Edit;
    qrItensTempvl_unit.Value := q2.FieldByName('vl_venda').AsFloat;
    qrItensTemp.Post;

    qrItensTemp.Next;
  end;
  qrItensTemp.Enablecontrols;

  q2.Close;
  q2.Destroy;

  edtCod.SetFocus;
end;

.   

acho que a linha:

while not qrItensTemp.IsEmpty do

deveria ser assim:

while not qrItensTemp.Eof do

Link para o comentário
Compartilhar em outros sites

Resolvido!

a forma citada a cima está certa!, percebi que no qrItensTempAfterPost, estava percorrendo novamente essa tabela para pegar o valor total, então coloquei uma qrItensTemp.Tag=1, ficou assim:

 

var
  q2: TQuery;
begin
  q2:=TQuery.Create(Self);
  q2.DatabaseName:='SISTEMA';

  qrItensTemp.Tag:=1;//Incluir essa tag

  qrItensTemp.DisableControls;//Tabela temporário com dados
  qrItensTemp.First;
  while not qrItensTemp.Eof do
  begin
    q2.Close;//Consulta para pegar novo valor
    q2.SQL.Text:='select vl_venda from tb_item '+
    ' where cod_item=:cod_item';
    q2.ParamByName('cod_item').Value := qrItensTempcod_item.AsInteger;
    q2.Open;

    qrItensTemp.Edit;
    qrItensTempvl_unit.Value := q2.FieldByName('vl_venda').AsFloat;
    qrItensTemp.Post;

    qrItensTemp.Next;
  end;
  qrItensTemp.Enablecontrols;

  qrItensTemp.Tag:=0;//Incluir essa tag

  q2.Close;
  q2.Destroy;

  edtCod.SetFocus;
end;

e no  qrItensTempAfterPost dei um exit para não percorrer a tabela 

if qrItensTemp.Tag=1 then exit;

 

Obrigado a todos.

Resolvido!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2695 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.