AJUDA COM MYSQL
Galera como fazer uma função onde se o item ja esta incluso no banco de dados exemplo codido da venda 00000001 produto tal ao envés de adicionar 2 vezes o mesmo produto no grid ele apenas add a quantidade segue a imagem que esta com 2 produtos iguais no grid
Parece não ser o mesmo produto pois no campo código no Grid esta 6 e 7.
em vb.net eu faco isso em alguns dos meu sistemas de caixa faca um for para percorrer o datagrid, e localizar e atualizar o item quantidade do produto...
No campo codigo realmente e diferente mas o campo codig e igual
No meu caso, e acredito que em geral, o sistema repete o item normalmente.
O que eu faço é dar a opção de inserir ou não repetidamente, o cliente pré configura isso.
Porque isso ?, nos locais de grande movimento os caixas precisam de agilidade e ficar vendo isso atrasa, então vai lançando do jeito que vem.
Observe, em grandes redes de super mercados é assim.
O que eu faço é dar a opção de inserir ou não repetidamente, o cliente pré configura isso.
Porque isso ?, nos locais de grande movimento os caixas precisam de agilidade e ficar vendo isso atrasa, então vai lançando do jeito que vem.
Observe, em grandes redes de super mercados é assim.
Eu te daria a opção de ser usado o Distinct do MySql mas pra isso os campos teriam que estar todos duplicados, o que não é o seu caso. Até porque a quantidade que você tem cadastrada também está diferente.
a melhor solução como o KURTGU falou é usar um loop pra eliminar as linhas repetidas. Mas uma dúvida me surge agora, na imagem o que se ve é que no primeiro registro vc tem 10 unidades e no segundo 5. esta quantidade está correta no estoque? senão sugiro rever a estrutura do banco, pois mesmo que seja feito um enfeite com um loop, isso pode te dar uma dor de cabeça medonha no futuro.
a melhor solução como o KURTGU falou é usar um loop pra eliminar as linhas repetidas. Mas uma dúvida me surge agora, na imagem o que se ve é que no primeiro registro vc tem 10 unidades e no segundo 5. esta quantidade está correta no estoque? senão sugiro rever a estrutura do banco, pois mesmo que seja feito um enfeite com um loop, isso pode te dar uma dor de cabeça medonha no futuro.
o produto e dado baixa no estoque em automatico quando add no grid ja vai para outro banco de vendas a quantidade de itens que esta no grid e a quantidade retirada do estoque
Citação::
o produto e dado baixa no estoque em automatico quando add no grid ja vai para outro banco de vendas a quantidade de itens que esta no grid e a quantidade retirada do estoque
Um erro seu, voce so pode dar baixa ao finalizar a venda, pois no meio do caminho ela pode ser cancelada...
Se ela for cancelada por perca de energia quando o sistema iniciar novamente ela volta o estoque ou ate por erro do usuario ela volta ao normal o estoque esse banco e temporario so depois da escolha do pagamento ele vai para o banco certo
Citação:Se ela for cancelada por perca de energia quando o sistema iniciar novamente ela volta o estoque ou ate por erro do usuario ela volta ao normal o estoque esse banco e temporário so depois da escolha do pagamento ele vai para o banco certo
Para isso é que se utiliza transações em banco de dados.
Só grava após o Transacao.Commit, pessoal vamos atentar para transações, sistemas sem transações é uma bomba relógio.
então o que você quer é caso o usuário volte a escolher o mesmo produto na hora da venda seja realizada apenas uma soma da quantidade na grid? Não acho que seja nessessário essa operação. Se fosse assim caixas de supermercado emitiriam comprovantes muito menores! rsrsrsrs
Mas é possÃvel. No botão adicionar vc coloca um loop (For) pra percorrer todas as linhas da grid. Dentro desse loop vc coloca uma estrutura de decisão (IF) que pergunte se dentro da célula corrente o valor é igual ao codig. Se for igual apenas dá um update com um sql de soma:
senão vc só faz um INSERT como já está.
pra fazer um loop vc deve recuperar a quantidade de linhas que tem na sua grid e guarda-la em uma variável do tipo inteiro
então viria o loop
Olha cara faz bastante tempo que não utilizo mais o vb6 como IDE. Hoje trabalho com .NET e Java. Mas a lógica que te passei é essa. Cabe a você agora descobrir se é desta forma que recupera o valor da grid. O que sei é que a linha (Row) tem que ser recuperada com a variável i já que é um loop, e a coluna (Column) deve ser estática, o que no seu caso encontra-se na posição 1 da sua grid. Sabe-se que as colunas começam do 0 então a segunda coluna é a 1.
Té
Mas é possÃvel. No botão adicionar vc coloca um loop (For) pra percorrer todas as linhas da grid. Dentro desse loop vc coloca uma estrutura de decisão (IF) que pergunte se dentro da célula corrente o valor é igual ao codig. Se for igual apenas dá um update com um sql de soma:
UPDATE suaTabela SET seucampo = seucampo + a_quantidade_desejada WHERE sua_condicao
senão vc só faz um INSERT como já está.
pra fazer um loop vc deve recuperar a quantidade de linhas que tem na sua grid e guarda-la em uma variável do tipo inteiro
Dim qtlinhas As Integer = SeuGrid.Rows.Count
então viria o loop
For i As Integer = 0 To qtlinhas - 1
If suagrid.Row(i).Colums(1).Value = ao valor de codig Then
UPDATE suaTabela SET seucampo = seucampo + a_quantidade_desejada WHERE sua_condicao
Else
INSERT INTO ...
End If
Next i
Olha cara faz bastante tempo que não utilizo mais o vb6 como IDE. Hoje trabalho com .NET e Java. Mas a lógica que te passei é essa. Cabe a você agora descobrir se é desta forma que recupera o valor da grid. O que sei é que a linha (Row) tem que ser recuperada com a variável i já que é um loop, e a coluna (Column) deve ser estática, o que no seu caso encontra-se na posição 1 da sua grid. Sabe-se que as colunas começam do 0 então a segunda coluna é a 1.
Té
Tópico encerrado , respostas não são mais permitidas