wllf 2 Denunciar post Postado Outubro 22, 2009 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
wllf 2 Denunciar post Postado Outubro 22, 2009 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
Chrnos 30 Denunciar post Postado Outubro 23, 2009 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
wllf 2 Denunciar post Postado Outubro 23, 2009 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
Chrnos 30 Denunciar post Postado Outubro 23, 2009 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
wllf 2 Denunciar post Postado Outubro 24, 2009 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