Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wllf

Atualização da Tabela

Recommended Posts

Estou desenvolvendo um sistema comercial, estou trabalhando na tela de venda. Tenho 2 tabelas uma tblvenda e outra tblitenvenda, quando incluo um item na tblitenvenda e mando um post para a tabela as informações demoram para atualizar então tentei: refresh no dataset, refresh na tabela, no evento afterpost, mas gera um erro: A linha não pode ser atualizada.

 

Será que alguém pode me ajudar, por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou desenvolvendo um sistema comercial, estou trabalhando na tela de venda. Tenho 2 tabelas uma tblvenda e outra tblitenvenda, quando incluo um item na tblitenvenda e mando um post para a tabela as informações demoram para atualizar então tentei: refresh no dataset, refresh na tabela, no evento afterpost, mas gera um erro: A linha não pode ser atualizada.

 

Será que alguém pode me ajudar, por favor.

 

 

Estou usando delphi 7, BD access, acesso via componentes paleta ADO;

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema de lentidão na carga de tables ocorre porque a TTable obrigatoriamente lê todos os registros da tabela associada a ela a cada open/refresh, o que causa lentidão dependendo do número de registros já existentes na tabela.

 

Porque não utiliza uma TQuery e monta um select para carregar apenas os dados desejados?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo a sua resposta está coerente mas, no meu caso como ainda estou desenvolvendo a sistema, ainda estou efetuando os testes e nesse caso a lentidão se dá com apenas 1 item na tabela itenvendas.

 

Preciso que o dataset atualize as informações na tabela itenvendas com mais agilidade, acho que deve ser o caso de acertar o local onde inserir os comandos, não sei talvez!

 

Estou na luta ainda, fazendo testes com outros comandos!

 

Mas valeu pelo post, obrigado !!!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o código completo da unit em questão... talvez possamos ajudar dando alguma sugestão.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chrnos, o código no botão incluir é + ou - assim:

 

prox := 0;

dm.qrycontitem.Close;

dm.qrycontitem.SQL.Clear;

dm.qrycontitem.SQL.Add('select Max(CODIGO_ITEM)');

dm.qrycontitem.SQL.Add('from tblitenvenda');

dm.qrycontitem.SQL.Add('where ORDEM_VENDA =' + IntToStr(dm.adovendaORDEM_DE_VENDA.Value));

dm.qrycontitem.Open;

 

if (not dm.qrycontitem.IsEmpty) then

begin

prox := dm.qrycontitem.Fields[0].AsInteger;

dm.qrycontitem.Close;

Inc(prox);

 

dm.adoitenvenda.Open;

dm.adoitenvenda.Insert;

dm.adoitenvendaCODIGO_ITEM.value := prox;

dm.adoitenvendaCODIGO_PRODUTO.AsString := dm.qryprocpecaREFERNCIA_DA_PEA.AsString;

dm.adoitenvendaDESCRIAO_PRODUTO.AsString := dm.qryprocpecaDESCRIO_DA_PEA.AsString;

dm.adoitenvendaVALOR_UNITRIO.AsCurrency := dm.qryprocpecaVAL_VENDA.AsCurrency;

dm.adoitenvendaUNIDADE.AsString := dm.qryprocpecaUNIDADE.AsString;

if edtqtde.Text = '' then

begin

ShowMessage('Digite a quantidade !');

edtqtde.SetFocus;

end

else

begin

dm.adoitenvendaQTDE_ITEM.Value := edtqtde.text;

dm.adoitenvendaVALOR_TOTAL.AsCurrency := StrToInt(edtqtde.Text) * dm.adoitenvendaVALOR_UNITRIO.Value;

lblvalitem.Text := FormatCurr('R$0.00', dm.adoitenvendaVALOR_TOTAL.AsCurrency);

 

if dm.adoitenvenda.Modified then

begin

dm.adoitenvenda.Post;

valtotal := valtotal + dm.adoitenvendaVALOR_TOTAL.AsCurrency;

edtqtde.Clear;

StatusBar1.Panels[1].Text := 'Ordem de Venda em Aberto N°: ' + IntToStr(dm.adovendaORDEM_DE_VENDA.Value);

end

else

begin

dm.adoitenvenda.Cancel;

end;

end;

 

 

Atualmente estou usando uma solução paleativa, no afterpost da tblitenvenda estou dando um requery, e por enquanto está funcionando, mas é paleativo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.