none
Update no banco com dois textbox para realizar controle de estoque RRS feed

  • Pergunta

  • Boa noite,

    Estou realizando uma venda no c#, porém ao finalizar tenho dois textboxs. Um com a quantidade do PRODUTO que está cadastrado e outro com a quantidade de venda do PRODUTO.

    Ao finalizar venda preciso realizar o update da quantidade do produto no banco de dados (SQL).

    EX:  txtQtdProd = 10
    txtQtdvenda = 5

    Quando finalizar o valor da quantidade de produto no banco passa a ser : 5

    Alguém poderia me auxiliar?

    Att,

    Gabriel Coutinho

    quinta-feira, 19 de maio de 2016 00:11

Respostas

  • Amigo, algumas considerações:

    A quantidade de um produto, é resultado de entradas e saídas dele no estoque(compras e vendas). O ideal é que exista uma tabela separada contando essas operações. Ela contém o código do produto, a quantidade movimentada e o tipo de operação como campos básicos. Outros campos, como lote, fornecedor, data da movimentação, depósito e qualquer outro dado que diga respeito à movimentação de produto. Então para realizar uma venda, você inclui nessa tabela um registro com o produto, quantidade e tipo de operação("saída", por exemplo). Então quando você repor o estoque(comprando mais produtos do fornecedor), você adiciona outro registro com tipo de operação correspondente("compra", por exemplo). 

    Esse tipo de controle, permite fazer estatísticas de vendas e até projeções de venda por produto. Sei também que fazer isso complica bastante do ponto de vista do programador, mas você vai ter um sistema muito mais adaptável à mais tipos de clientes. Imagine um cliente que tenha múltiplas lojas e use um banco de dados apenas. Cada um, tem seu próprio depósito, mas ambos compartilham a tabela de produto, onde você está registrando a quantidade do produto no estoque. Portanto, uma loja(depósito) terá quantidades de produtos diferentes e o valor que você teria no seu banco de dados, corresponde à soma das duas. Mas não há como saber quantos produtos disponíveis cada loja tem e esse problema se exponencia conforme o número de lojas(depósitos) de cada cliente. 

    Também há o caso de "Ah, mas meu cliente é pequeno e não tem múltiplas lojas", ok, pode ser. Mas e se no futuro você quer  vender o seu programa para outro cliente que por acaso tem duas lojas e quer que os dados sejam consistentes mesmo em um único banco de dados? Você teria que reescrever todo o seu sistema, fazer uma complicada rotina de migração de dados e fora que seu cliente teria que fazer um levantamento do estoque físico dele, o que é trabalhoso e eles geralmente não gostam de ter de fazer. 

    Então você tem duas opções:

    1. Fazer do modo mais simples, como indicado, mas arriscar ficar com um controle de estoque "engessado"
    2. Fazer do modo mais complicado, como falei, isso daria mais trabalho pra você, mas você ficaria com um sistema muito mais "polivalente" e adaptável à múltiplos tipos de clientes, inclusive com possibilidade de usar sistemas de estoque, como KanBan e PEPS(FIFO)

    quinta-feira, 19 de maio de 2016 01:34
  • Abaixo uma rotina simples de como percorrer o Grid linha a linha, enquanto percorre é realizado o Update.
    Seguindo a lógica abaixo você vai alcançar seu objetivo sem dificuldades.

    Boa sorte

                for (int i = 0; i < NomeGrid.Rows.Count; i++)
                {
    			//Insira aqui sua rotina de Update
    				
    			//Abaixo a forma de pegar os valores da coluna desejada 
    			NomeGrid.Rows[i].Cells[2].Text;
    			NomeGrid.Rows[i].Cells[3].Text;
                 }
    

    quinta-feira, 19 de maio de 2016 18:09

Todas as Respostas

  • Amigo, algumas considerações:

    A quantidade de um produto, é resultado de entradas e saídas dele no estoque(compras e vendas). O ideal é que exista uma tabela separada contando essas operações. Ela contém o código do produto, a quantidade movimentada e o tipo de operação como campos básicos. Outros campos, como lote, fornecedor, data da movimentação, depósito e qualquer outro dado que diga respeito à movimentação de produto. Então para realizar uma venda, você inclui nessa tabela um registro com o produto, quantidade e tipo de operação("saída", por exemplo). Então quando você repor o estoque(comprando mais produtos do fornecedor), você adiciona outro registro com tipo de operação correspondente("compra", por exemplo). 

    Esse tipo de controle, permite fazer estatísticas de vendas e até projeções de venda por produto. Sei também que fazer isso complica bastante do ponto de vista do programador, mas você vai ter um sistema muito mais adaptável à mais tipos de clientes. Imagine um cliente que tenha múltiplas lojas e use um banco de dados apenas. Cada um, tem seu próprio depósito, mas ambos compartilham a tabela de produto, onde você está registrando a quantidade do produto no estoque. Portanto, uma loja(depósito) terá quantidades de produtos diferentes e o valor que você teria no seu banco de dados, corresponde à soma das duas. Mas não há como saber quantos produtos disponíveis cada loja tem e esse problema se exponencia conforme o número de lojas(depósitos) de cada cliente. 

    Também há o caso de "Ah, mas meu cliente é pequeno e não tem múltiplas lojas", ok, pode ser. Mas e se no futuro você quer  vender o seu programa para outro cliente que por acaso tem duas lojas e quer que os dados sejam consistentes mesmo em um único banco de dados? Você teria que reescrever todo o seu sistema, fazer uma complicada rotina de migração de dados e fora que seu cliente teria que fazer um levantamento do estoque físico dele, o que é trabalhoso e eles geralmente não gostam de ter de fazer. 

    Então você tem duas opções:

    1. Fazer do modo mais simples, como indicado, mas arriscar ficar com um controle de estoque "engessado"
    2. Fazer do modo mais complicado, como falei, isso daria mais trabalho pra você, mas você ficaria com um sistema muito mais "polivalente" e adaptável à múltiplos tipos de clientes, inclusive com possibilidade de usar sistemas de estoque, como KanBan e PEPS(FIFO)

    quinta-feira, 19 de maio de 2016 01:34
  • Bacana, show.

    Muito obrigado, mas como não é um projeto muito grande vou simplificar ele, mas a dica foi ótima.

    quinta-feira, 19 de maio de 2016 16:08
  • Realizei aqui e deu certo, porém eu tenho dois produtos na grid com quantidades de vendas diferentes , teria como percorrer a grid e fazer o update?
    quinta-feira, 19 de maio de 2016 16:09
  • Abaixo uma rotina simples de como percorrer o Grid linha a linha, enquanto percorre é realizado o Update.
    Seguindo a lógica abaixo você vai alcançar seu objetivo sem dificuldades.

    Boa sorte

                for (int i = 0; i < NomeGrid.Rows.Count; i++)
                {
    			//Insira aqui sua rotina de Update
    				
    			//Abaixo a forma de pegar os valores da coluna desejada 
    			NomeGrid.Rows[i].Cells[2].Text;
    			NomeGrid.Rows[i].Cells[3].Text;
                 }
    

    quinta-feira, 19 de maio de 2016 18:09