Código bloqueia operação de retirada

Delphi

09/05/2006

Olá Senhores(a), sou novo em Delphi 7, estou fazendo um sistema de controle de estoque para um hospital(grátis), tenho uma Procedure para retirar produto da tabela tabproduto(cod_produto, produto, qtde, un) o código para retirar o produto segue baixo, uso conexao ADO e Access. Como faço para quando o usuário for retirar um numero de produto superior ao que contem no estoque o sistema informar que não pode

procedure TFrmSaiProduto.sbConfirmaClick(Sender: TObject);
begin
DataModule1.ADOTabSaiProduto.Post;
DataModule1.ADOTabProduto.Edit;
DataModule1.ADOTabProdutoqtde.Value:=DataModule1.ADOTabProdutoqt de.Value-DataModule1.ADOTabSaiProdutoqtde.AsVariant;
DataModule1.ADOTabProduto.Post;
DataModule1.ADOTabSaiProduto.Close;
DataModule1.ADOTabSaiProduto.Open;
DBLookupComboBox2.SetFocus;
end;


Alvaro_web

Alvaro_web

Curtidas 0

Respostas

Alvaro_web

Alvaro_web

09/05/2006

Por favor, se alguem com mais esperiencia vir o código, olhe se está escrito certo? se não informe o erro, desde já muitíssimo obrigado


GOSTEI 0
Paullsoftware

Paullsoftware

09/05/2006

Uma das maneiras é vc tratar o valor informado para saída na hora em que ele digitar o valor tipo:

var
 form1 : TForm1;
 StqAtual : Integer; //aqui defino um variavel que vai funcionar em todo formulário


Coloque um botão que vai localizar o produto pelo codigo informado e faça a localização do mesmo +/- assim:
 StqAtual := 0;
 TabelaProduto.Locate(´Codigo´,TabelaSaidaCodProduto.AsString,[]);//Onde CodProduto o campo onde é lançado o código do produto que vai receber a saída.
 //Feito isso eu também já pego a quantidade em estoque atual e jogo em uma variável qualquer, definida de form global
if TabelaProdutoEstoque.AsInteger <= 0 then
 begin
 ShowMessage(´Produto em baixa no estoque´);
 StqAtual := 0;
 Exit;
 end
else
 begin
 StqAtual := TabelaProdutoEstoque.AsInteger;//aqui passo o valor atual do estoque para minha variavel
 end

Coloque um Edit1 e Faça esse código no OnChange do mesmo:
var
QtdAtual,QtdSai: Integer;
begin
 try
 if StrToInt(Edit1.Text)>0 then
  begin
   if StqAtual >= StrToInt(Edit1.Text) then
     begin
     //Código para tratar quando a quantidade informada for uma quantidade válida
     end
   else
     begin
      ShowMessage(´O valor informado é maior do que a quantidade Existente no estoque. Proceda a correção´);
      ShowMessage(´Estoque atual: ´+IntToStr(StqAtual));
      Exit;
     end;
  end;
 Except
 on E: Exception do
 MessageDlg(´Valor informado não é uma valor válido ´+e.Message,MtError,[MbOk],0);
 end;


espero ter ajudado :wink:


GOSTEI 0
POSTAR