Fórum Atualizando Estoque #407456

08/09/2011

0

procedure TF_Entrada.btn_GravarNotaClick(Sender: TObject);
var Mes_Ano: String;
    data: TDate;
begin
    TPanelProcessando.Visible:= True;
    ProgressBar.Max:= DM.qryNFEntrada.RecordCount;
    With DM.qryNFEntrada do
     begin
         First;
         While not eof do
          begin
               //Atualizando Tabela de Produtos
              Data:= FieldByName ('DataLancamento').AsDateTime;
              DM.qryProduto.Locate('Cod_InternoProduto',
                    FieldByName ('Cod_InternoProduto').AsInteger,[]);
              DM.qryProduto.Edit;
              DM.qryProduto.FieldByName('EstadoAtual').AsInteger:=
                    DM.qryProduto.FieldByName ('EstadoAtual').AsInteger +
                    FieldByName ('Quantidade').AsInteger;
              DM.qryProduto.FieldByName('DataCompra').AsDateTime:=
                    FieldByName ('DataLancamento').AsDateTime;
              DM.qryProduto.FieldByName('PrecoVenda').AsInteger:=
                    FieldByName ('ValorVenda').AsInteger;
              DM.qryProduto.Post;

              //Eviando Nota para Contas à Pagar
              DM.qryContaPagar.Append;
              DM.qryContaPagarCOD_FORNECEDOR.AsString:=
                  DM.qryNFCompraCOD_FORNECEDOR.AsString;
              DM.qryContaPagarFORNECEDOR.AsString:=
                  DM.qryNFCompraFORNECEDOR.AsString;
              DM.qryContaPagarNUMDOCUMENTO.AsString:=
                  FieldByName ('Cod_NFCompra').AsString;
              DM.qryContaPagarDATAEMISSAO.AsDateTime:=
                  FieldByName ('DataLancamento').AsDateTime;
              DM.qryContaPagarVALORTOTAL.AsString:=
                  FieldByName ('ValorTotal').AsString;
              DM.qryContaPagarCOD_NATUREZAOP.AsString:=
                  DM.qryNFCompraCOD_NATUREZAOP.AsString;
              DM.qryContaPagarNATUREZAOPERACAO.AsString:=
                  DM.qryNFCompraNATUREZAOPERACAO.AsString;
              Mes_Ano:=
                  inttostr (MonthOf(data)) + '/' + inttostr (YearOf(data));
              DM.qryContaPagarMESANO.Text:= Mes_Ano;
              DM.qryContaPagar.Post;
              Next;
              ProgressBar.Position:= ProgressBar.Position +1;
          end;
     end;
    TPanelProcessando.Visible:= False;
    ShowMessage('NFe Cadastrada com Sucesso!');
    DM.qryNFCompra.Refresh;
    Close;
    permitido:= False;
end;


Exemplo se eu colocar tres Produtos na nota ele so atualiza o ultimo da lista
mas pega a quantidade dos outros produtos todos que esta na nota e atualiza so em um produto
se alguem pode ajudar
agradeço
Rodrigo Almeida

Rodrigo Almeida

Responder

Posts

23/09/2011

Joni Nunes

Logo depois do comando DM.qryProduto.Post, adicione DM.qryProduto.First para que o sistema busque o próximo produto, fazendo a varredura pelo início da sua lista de produtos.


Segue outras sugestões para seu sistema:

1 - Sempre de nome para os componentes do seu projeto, exemplo botão gravar, renomeie para btGravar;
2 - Crie um método e centralize nele o algoritimo de atualizar o estoque, faça a chamada do método no evento clique do botão gravar;
3 - Pelo que notei em seu sistema, você simplesmente atualiza dados de compra, venda, data diretamente no cadastro de mercadorias, visando manter histórico, sugiro a criação de uma entiade de relacionamento, para armazenar essas informações, afim de manter histórico das compras e vendas dos seus produtos;


Espero ter ajudado.

abraço
Responder

Gostei + 0

27/09/2011

Rodrigo Almeida

Tentei utilizar o DM.qryProduto.First;
como mencionou
mas ainda continou o mesmo procedimento ele atualiza somente o ultimmo produto da lista

meu padrão para botão eh btn_NomeBotão
E quanto a dica que me deu em utilizar procedimento no oventoclick?
isso seria melhor para demsempenho
Responder

Gostei + 0

03/10/2011

Rodrigo Almeida

O problema era o seguinte:
eu usava uma query não sei pq as query naum varem toda a lista não consegui descbri pq pois me projeto ja esta atrasado mas assim que terminar vou procurar me informar
a solução foi a seguinte troquei minhas ibqrery por ibtable componentes da palheta interbase
o projeto aumento um poko
mas o desempenho fikou melhor
Responder

Gostei + 0

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

Aceitar