Ajuda - Busca - Membros - Calendário
Versão Completa: (Resolvido) Dar baixa no estoque
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
lucioalves
estou aprendendo delphi e fiz um programa de controle de estoque mas quando clico no botão para gravar da a mensagem 'Dataset not in edit or insert mod' estou enviando o codigo que estou usando, por favor me ajude.


procedure TfrmPedidos.SpeedButton1Click(Sender: TObject);
begin
modestoque.tbDetPed.Edit;

modestoque.tbDetPed.First;
while not modestoque.tbDetPed.Eof do
begin
modestoque.tbProduto.Locate('CodPro',modestoque.tbDetPedCodPro.Value,[]);
if modestoque.tbDetPedBaixa.Value<> true then
begin

modestoque.tbProduto.Edit;
modestoque.tbProdutoQuantEst.Value:=modestoque.tbProdutoQuantEst.Value -
modestoque.tbDetPedQuantidade.Value;
modestoque.tbProduto.Post;
modestoque.tbDetPed.Edit;
modestoque.tbDetPedBaixa.Value:=True;
modestoque.tbDetPed.Post;
end;
modestoque.tbDetPed.Post;
Jhonas
QUOTE
quando clico no botão para gravar da a mensagem 'Dataset not in edit or insert mod'


Correção do Código

CODE
procedure TfrmPedidos.SpeedButton1Click(Sender: TObject);
begin
  modestoque.tbDetPed.First;

  while not modestoque.tbDetPed.Eof do
  begin
     if modestoque.tbProduto.Locate('CodPro',modestoque.tbDetPedCodPro.Value,[]) then
        begin
            if modestoque.tbDetPedBaixa.Value<> true then
               begin

                   modestoque.tbProduto.Edit;
                   modestoque.tbProdutoQuantEst.Value:=modestoque.tbProdutoQuantEst.Value -
                   modestoque.tbDetPedQuantidade.Value;
                   modestoque.tbProduto.Post;

                   modestoque.tbDetPed.Edit;
                   modestoque.tbDetPedBaixa.Value:=True;
                   modestoque.tbDetPed.Post;
               end;
        end
      else
        begin
            showmessage('Registro não encontrado !');
            exit;
        end;
  end;    
end;


abraço
lucioalves
desde já agradeço ,coloquei o codigo fonte mas o programa esta travando na hora que clico no botão
Jhonas
QUOTE
desde já agradeço ,coloquei o codigo fonte mas o programa esta travando na hora que clico no botão


Observe o código .... voce esta fazendo um while nos registros de modestoque.tbDetPed mas faltou um next para fazer rolar o proximo registro da tabela

CODE
procedure TfrmPedidos.SpeedButton1Click(Sender: TObject);
begin
  modestoque.tbDetPed.First;

  while not modestoque.tbDetPed.Eof do
  begin

     modestoque.tbProduto.first; // mandar para o primeiro registro sempre que fizer um locate

     if modestoque.tbProduto.Locate('CodPro',modestoque.tbDetPedCodPro.Value,[]) then
        begin
            if modestoque.tbDetPedBaixa.Value<> true then
               begin

                   modestoque.tbProduto.Edit;
                   modestoque.tbProdutoQuantEst.Value:=modestoque.tbProdutoQuantEst.Value -
                   modestoque.tbDetPedQuantidade.Value;
                   modestoque.tbProduto.Post;

                   modestoque.tbDetPed.Edit;
                   modestoque.tbDetPedBaixa.Value:=True;
                   modestoque.tbDetPed.Post;
               end;

           modestoque.tbDetPed.next; ///  faltou este comando
        
        end
      else
        begin
            showmessage('Registro não encontrado !');
            exit;
        end;
  end;    
end;


OBS: se ainda estiver travando, use o debugger do dephi (usando o break point ) para saber onde está o problema

abraço


lucioalves
Obrigado valeu mesmo ,deu certo ,agora esta rodando legal.
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.