Usuário com melhor resposta
Update no banco com dois textbox para realizar controle de estoque

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 = 5Quando finalizar o valor da quantidade de produto no banco passa a ser : 5
Alguém poderia me auxiliar?
Att,
Gabriel Coutinho
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:
- Fazer do modo mais simples, como indicado, mas arriscar ficar com um controle de estoque "engessado"
- 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)
- Marcado como Resposta Thales F Quintas sexta-feira, 20 de maio de 2016 14:29
-
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; }
- Marcado como Resposta Thales F Quintas sexta-feira, 20 de maio de 2016 14:28
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:
- Fazer do modo mais simples, como indicado, mas arriscar ficar com um controle de estoque "engessado"
- 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)
- Marcado como Resposta Thales F Quintas sexta-feira, 20 de maio de 2016 14:29
-
-
-
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; }
- Marcado como Resposta Thales F Quintas sexta-feira, 20 de maio de 2016 14:28