Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Adicionar Qtde Produto + Ele Mesmo


Question

Exemplo Quero que o Sistema Contabilize a Qtde que vendeu daquele certo produto!!!

 

Fiz essa ganbiarra, mais ele não esta somando e sim jogando o valor por valor das Qtdes dentro do Banco!!!!

 

if Form9.IBTable1.FieldByName('Produto').Value = DbLookupComboBox2.Text then
   if Form9.IBTable1.FieldByName('Qtde').Value <> ''  then
    begin
    Form9.IBTable1.Edit;
    Form9.IBTable1.FieldByName('Qtde').Value := Form9.IBTable1.FieldByName('Qtde').Value + Form9.IBTable1.FieldByName('Qtde').Value;

    Form9.IBTable1.ApplyUpdates;

 

Espero a ajuda De alguém!! 

 

 

Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

 

 if Form9.Ibtable1.Locate('Produto',Form3.DbLookupcomboBox2.Text,[LopartialKey])then

      //if DbLookupComboBox2.Text = Form9.IBTable1.FieldByName('Produto').AsString then
     begin
   Form9.IBTable1.Edit;
    Vend := StrToFloat(edit3.Text);
    Prod := StrToFloat(Form9.Ibtable1Qtde.Text);
    Form9.Ibtable1Qtde.Text := FloatToStr(Prod+Vend); //esse é para somar no estoque(tbproduto), para diminuir troque o sinal de + para -
      Form9.IBTable1.ApplyUpdates;

 

    end
  else
     if DbLookupComboBox2.Text <> Form9.IBTable1.FieldByName('Produto').AsString then
               begin

Form9.ibtable1.insert;
Form9.IBTable1.FieldByName('Produto').AsString:=Form3.Edit6.Text;
Form9.IBTable1.FieldByName('Preco_Venda').AsString:=Form3.Edit8.Text;
Form9.IBTable1.FieldByName('Qtde').AsString:=Form3.Edit7.Text;
Form9.IBTable1.FieldByName('Data_Venda').AsString:=Form3.Label3.Caption;
//Form9.IBTable1.ApplyUpdates;
Form9.IBTable1.ApplyUpdates;

 

Fiz uma gambiarra, Quero opinião de quem tem mais tempo com programação!!! Está dando certo dessa forma!!

Se ele localizar o produto no Banco, O Banco vai entrar em estado de edição!!!

 

Caso contrário ele adiciona o produto que não tem no Banco..

E começa todo o processo novamente!!!

Edited by valSistemasDelphi
errei
Link to post
Share on other sites
  • 0

ok ...  vou te dar algumas dicas de programação

1 -  voce está usando .IBTable1 ( Interbase )  para acessar as suas tabelas

2 - o uso do Locate se mostrou muito rapido em tabelas PARADOX ( mas já deixei de usar a muito tempo e passei para o MYSQL ),  mas se a tabela for muito grande, no  Interbase, principalmente em rede, fica lento, pois a busca do Locate sempre será a partir do começo da tabela.

3 - prefira usar comandos SQL ( Select * from tabela ) usando o TIBQuery. A pesquisa é muito mais rápida.

4 - A sua lógica está correta, no entanto o uso do .ApplyUpdates; faz com que salve sempre na tabela, que voce estiver fazendo .... se voce tem um botão de Cancelar, já não podera mais cancelar o que foi feito ( teria que alterar novamente o registro ). Então use o comando Form9.IBTable1.Post;  e no botão de Salvar, voce coloca o ApplyUpdates;

5 - Vend := StrToFloat(edit3.Text);
      Prod := StrToFloat(Form9.Ibtable1Qtde.Text);
      Form9.Ibtable1Qtde.Text := FloatToStr(Prod+Vend)

Aqui tem algo errado: Se Vend é um valor ( R$ 35,00 ) e Prod é quantidade ( 4 )

porque voce esta colocando em Ibtable1Qtde (Prod+Vend)   ou seja 35,00 + 4 ???

6 - Para facilitar o entendimento, use sempre variaveis que indiquem o que realmente são

ex:

Prod > nome do produto

Quant > indicando quantidade

Valor > valor do produto

7 - Adicionar Qtde Produto + Ele Mesmo

Exemplo: Tabela Produtos

PRODUTO  -  QUANT.  - VALOR _UNIT  -  VALOR TOTAL   - ESTOQUE

MESA           -          3       -  200,00               -        600,00             -   3

CADEIRA    -          4       -  50,00                  -        200,00            -    4

Obs:  Ai voce faz uma venda de 1 mesa e atualiza o estoque

PRODUTO  -  QUANT.  - VALOR _UNIT  -  VALOR_TOTAL   - ESTOQUE

MESA           -          2       -  200,00               -        400,00             -   2

CADEIRA    -          4       -  50,00                  -        200,00            -    4

Voce tem que procurar onde está o registro da mesa na tabela, antes de efetuar a operação de venda

Isso é um exemplo:

 if Form9.Ibtable1.Locate('Produto',Form3.DbLookupcomboBox2.Text,[LopartialKey]) then

begin  

Form9.IBTable1.Edit;

Quant := StrToFloat(edit3.Text);
Total := 0;

Form9.Ibtable1Qtde.Value := Form9.Ibtable1Qtde.Value - Quant;

Form9.Ibtable1Estoq.Value  := Form9.Ibtable1Estoq.Value  - Quant;

Total := Form9.Ibtable1Qtde.value  * Form9.Ibtable1Valor_Unit.Value;

Form9.Ibtable1Valor_Total.Value := Total;

Form9.Ibtable1.Post;

end;

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148690
    • Total Posts
      644529
×
×
  • Create New...