Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Adicionar Qtde Produto + Ele Mesmo


valSistemasDelphi

Pergunta

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 para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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!!!

Editado por valSistemasDelphi
errei
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...