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

João Villar

Pergunta

Não estou conseguindo salvar mais de uma linha do datagrid no banco de dados.

segue imagem a baixo e configuração

Public Class frmVendasPedidos
    Inherits System.Windows.Forms.Form
    'Definir o objeto bd da classe JcmSoftDataContext
    Dim bd As New dcVRDataContext

    'Definir objeto da clase DetalhesPedidos
    Dim oDetalhesPedidos As DetalhesPedidos
    Dim nomeProduto As String
    Dim codProduto As String
    Dim QuantidadeUni As Integer
    Dim quantidadeCX As Integer
    Dim precoUniProduto As Double
    Dim precoCx As Double
    Dim codigoCliente As String
    Dim estoqueProduto As Integer
    Dim Prazo1 As Integer
    Dim Prazo2 As Integer
    Dim Prazo3 As Integer
    Dim Prazo4 As Integer
    Dim data As Date
    Dim precoTotal As Double

    'Definir una LISTA de Objetos DetalhesPedidos
    Dim ArrDetalhesPedidos As New List(Of DetalhesPedidos)

 


    Private Sub btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click
        'Vamos usar o mapeamento feito pelo LINQ
        'para efetivar as atualizações nas bases de dados
        Try
            'A expressão lambda a seguir devolve um objeto Cliente
            'Estamos usando o codigo do cliente para identificar unicamento o cliente
            Dim Cli As tblCliente = bd.tblClientes.Single(Function(p) p.IdCliente = Me.txtCodigoCliente.Text)
            '-------------------------------------------------
            'Cria um  novo objeto Pedido
            '-------------------------------------------------
            Dim oPedido As New tblPedido
            oPedido.Data = txtData.Text
            oPedido.IdCliente = Cli.IdCliente
            oPedido.tblCliente = Cli
            oPedido.NomeCliente = Cli.Cliente
            oPedido.NomeProduto = nomeProduto
            oPedido.QuantidadeUni = oDetalhesPedidos.QuantidadeUni
            oPedido.QuantidadeCX = oDetalhesPedidos.QuantidadeCX
            oPedido.PrecoUni = oDetalhesPedidos.PrecoUni
            oPedido.PrecoCx = oDetalhesPedidos.PrecoCX
            oPedido.Prazo1 = oDetalhesPedidos.Prazo1
            oPedido.Prazo2 = oDetalhesPedidos.Prazo2
            oPedido.Prazo3 = oDetalhesPedidos.Prazo3
            oPedido.Prazo4 = oDetalhesPedidos.Prazo4
            oPedido.PrecoTotal = oDetalhesPedidos.Subtotal

            '--------------------------------------------------
            'Obtendo os detalhes do pedido 
            'realizo a geração dos objetos Pedido
            'vou percorrer o array dos detalhes do pedido
            '----------------------------------------------------
            For Each o As DetalhesPedidos In ArrDetalhesPedidos
                'Instancio um objeto Produto selecionando pelo codigo do produto
                Dim prod As tblProduto = bd.tblProdutos.Single(Function(a) a.IdProduto = o.CodProduto.ToString())
                'Cria um novo detalhe do pedido
                Dim detPedido As New tblProduto
                detPedido.Produto = prod.Produto
                detPedido.IdProduto = prod.IdProduto
                detPedido.Quantidade = o.QuantidadeUni


                '-altera a quantidade de estoque do produto
                prod.Estoque = prod.Estoque - o.QuantidadeUni
            Next
            '------------------------------------------------------
            'Aqui atualizo a base de dados
            bd.SubmitChanges()
            MsgBox("Venda registrada com sucesso...")
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            'chama as rotinas para limpar clientes e produtos e vendas
            limpar_cliente()
            limpar_produto()
            limpar_venda()
            Me.calcular_total()
        End Try
    End Sub

imagens anexadas

 

 

Sem título.png

Sem título1.png

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Faltou o cod de incluir 

 

Private Sub btnIncluir_Click(sender As Object, e As EventArgs) Handles btnIncluir.Click

        'Verificamos a quantidade foi informada
        If txtQuantidadeUni.Text = String.Empty Then
            MsgBox("Informe a quantidade requerida.")
            txtQuantidadeUni.Focus()
            Exit Sub
        End If
        If txtData.Text = String.Empty Then
            MsgBox("Informe a data da venda.")
            txtData.Focus()
        End If
        'Verificamos se o nome do produto , preço e quantidade não estão vazios
        If txtNomeProduto.Text <> "" And txtPrecoProduto.Text <> "" And txtQuantidadeUni.Text <> "" And txtCodigoCliente.Text <> "" Then
            'Verificamos se o Do produto não é menor do que o solicitado
            If Convert.ToInt32(estoqueProduto) < Convert.ToInt32(txtQuantidadeUni.Text) Then
                'Mostramos uma aviso ao usuário
                MsgBox("A quantidade requerida é Superior a do estoque")
                'Como a quantidade solicitada é mario que o estoque
                'perguntamos se o usuário deseja estabelecer o estoque atual
                'com a nova quantidade informada
                If MessageBox.Show("Deseja estabelecer o estoque atual como a nova quantidade requerida",
 "Vendas", MessageBoxButtons.YesNo) = MsgBoxResult.Yes Then
                    'Establecemos a nova quantidade em estoque
                    txtQuantidadeUni.Text = estoqueProduto
                    'Inicializamos o objeto da classe DetalhesPedidos
                    oDetalhesPedidos = New DetalhesPedidos
                    'Preenchemos os valores 
                    '-----------------------------------------------------------------
                    oDetalhesPedidos.QuantidadeUni = Convert.ToInt32(txtQuantidadeUni.Text)
                    oDetalhesPedidos.QuantidadeCX = Convert.ToInt32(txtQuantidadeUni.Text / txtQuantidadeProduto.Text) = quantidadeCX
                    oDetalhesPedidos.CodProduto = codProduto
                    oDetalhesPedidos.NomeProduto = nomeProduto
                    oDetalhesPedidos.PrecoUni = txtPrecoProduto.Text
                    oDetalhesPedidos.PrecoCX = (txtPrecoProduto.Text * txtQuantidadeProduto.Text)
                    oDetalhesPedidos.EstoqueProduto = estoqueProduto
                    oDetalhesPedidos.Prazo1 = Convert.ToInt32(txtPrazo1.Text)
                    oDetalhesPedidos.Prazo2 = Convert.ToInt32(txtPrazo2.Text)
                    oDetalhesPedidos.Prazo3 = Convert.ToInt32(txtPrazo3.Text)
                    oDetalhesPedidos.Prazo4 = Convert.ToInt32(txtPrazo4.Text)
                    oDetalhesPedidos.Subtotal = txtPrecoProduto.Text * Convert.ToInt32(txtQuantidadeUni.Text)
                    '------------------------------------------------------------------------
                    'Verificamos se o produto esta na lista de pedidos
                    'e incluimos a lista de DetalhesPedidos
                    If buscarDetalhesVendas(ArrDetalhesPedidos, oDetalhesPedidos) = False Then
                        'Agregamos o pedido a lista de DetalhesPedidos
                        ArrDetalhesPedidos.Add(oDetalhesPedidos)
                    End If
                    'Assciamos a lista de DetalhesPedidos como fonte de dados ao datagridview
                    Me.dgvVendas.DataSource = ArrDetalhesPedidos
                Else
                    'Se não deseja estabelecer o estoque atual com a quantidade solicitada
                    'voltamos ao formulario para escolher outro produto
                    btnProcuraProduto_Click(Nothing, Nothing)
                End If
            Else
                'Como a quantidade requerida e menor que o estoque
                'iniciamos o objeto da classe DetalhesPedidos
                oDetalhesPedidos = New DetalhesPedidos
                'Preenchemos os valores no objeto
                oDetalhesPedidos.QuantidadeUni = Convert.ToInt32(txtQuantidadeUni.Text)
                oDetalhesPedidos.QuantidadeCX = Convert.ToInt32(txtQuantidadeUni.Text / txtQuantidadeProduto.Text)
                oDetalhesPedidos.CodProduto = codProduto
                oDetalhesPedidos.NomeProduto = nomeProduto
                oDetalhesPedidos.PrecoUni = txtPrecoProduto.Text
                oDetalhesPedidos.PrecoCX = (txtPrecoProduto.Text * Convert.ToInt32(txtQuantidadeProduto.Text))
                oDetalhesPedidos.EstoqueProduto = estoqueProduto
                oDetalhesPedidos.Prazo1 = Convert.ToInt32(txtPrazo1.Text)
                oDetalhesPedidos.Prazo2 = Convert.ToInt32(txtPrazo2.Text)
                oDetalhesPedidos.Prazo3 = Convert.ToInt32(txtPrazo3.Text)
                oDetalhesPedidos.Prazo4 = Convert.ToInt32(txtPrazo4.Text)
                oDetalhesPedidos.Subtotal = txtPrecoProduto.Text * Convert.ToInt32(txtQuantidadeUni.Text)
                'Verificamos se o produto solicitado esta na lista de pedidos
                'Se não estiver incluimos na lista de DetalhesPedidos
                If buscarDetalhesVendas(ArrDetalhesPedidos, oDetalhesPedidos) = False Then
                    'Incluimos o pedido a lista de DetalhesPedidos
                    ArrDetalhesPedidos.Add(oDetalhesPedidos)
                End If
                'Associamos a lista como origem da fonte de dados
                Me.dgvVendas.DataSource = ArrDetalhesPedidos.ToList
            End If
        End If
        'Limpamos os textBox
        Me.limpar_produto()
        'Calculamos o Total do Pedido
        Me.calcular_total()
    End Sub

 

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...