Estou fazendo o código abaixo para inserir pedidos e ítens do pedido:
Private Sub incluirRegistro(ByVal dr As DataRow)
Dim tabelapedidos As String = "pedidos"
Dim tabeladetalhespedidos As String = "detalhespedidos"
Dim sqlpedidos As String = "INSERT INTO " & tabelapedidos & " (clienteID,ativo,data)VALUES ('" & codigocli.Text & "','S','" & Format(Date.Today, "yyyy-MM-dd") & "')"
Dim sqlitens As String = "INSERT INTO " & tabeladetalhespedidos & " (pedidoID,produtoID,unidade,descricao,preço,quantidade,subtotal) VALUES ('" & DGWPedidos.CurrentRow.Cells(0).Value & "','" & DGWPedidos.CurrentRow.Cells(1).Value & "','" & DGWPedidos.CurrentRow.Cells(2).Value & "','" & DGWPedidos.CurrentRow.Cells(3).Value & "','" & DGWPedidos.CurrentRow.Cells(4).Value & "','" & DGWPedidos.CurrentRow.Cells(5).Value & "','" & DGWPedidos.CurrentRow.Cells(6).Value & "')"
Dim ds_pedidos As DataSet = accDb.ExecuteDS(sqlpedidos, tabelapedidos)
For Each linha As DataGridViewRow In DGWPedidos.Rows
accDb.ExecuteDS(sqlitens, tabeladetalhespedidos)
Next
Try
MessageBox.Show("Pedidos incluido com sucesso.")
exibirDados(registropedidos)
Catch ex As Exception
MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
End Try
End Sub
A gravação do pedido vai beleza mas a gravação dos ítens não.
Na hora de fazer o For Each, ele conta quantos ítens tem na DataGridView e grava apenas o primeiro ítem quantas vezes for o numero de linhas na gridview.
Por exemplo:
na grid tem la
Pedido Produto quantidade preço Total
1 0325 20 25,00 50,00
1 0256 10 50,00 50,00
1 0148 30 30,00 90,00
3 registros. Certo?
Pois é. O problema é que ele grava no banco só o primeiro registro
assim:
Pedido Produto quantidade preço Total
1 0325 20 25,00 50,00
1 0325 20 25,00 50,00
1 0325 20 25,00 50,00
Mas no codigo abaixo, ele já percorre cada linha e faz correto. Só que não é com o DataGridView e sim com o datarow
Private Sub bcliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bcliente.Click
Dim dialogo As New frmClientes
dialogo.ShowDialog()
If dialogo.DialogResult = Windows.Forms.DialogResult.OK Then
Dim tabela As String = "Clientes"
Dim sql As String = "Select * from " & tabela & " where clienteID = '" & dialogo.registrocliente & "'"
ds = accDb.ExecuteDS(sql, tabela)
Dim dr As DataRow
For Each dr In ds.Tables(0).Rows
codigocli.Text = dr.Item("clienteID")
cliente.Text = dr.Item("nome")
registrocliente = dr.Item("clienteID")
Next dr
Else
MsgBox("Não foi selecionado nenhum cliente.")
codigocli.Text = ""
cliente.Text = ""
End If
End Sub
Onde esta o erro?
2)Como faço para limpar os registros em uma datagridview mantendo os nomes das colunas?
Isso no caso de eu for fazer um novo pedido e clikar no botão Novo.
Pergunto isso pois quando abro o formulario de pedidos a partir do Menu, já abre com os dados do primeiro pedido cadastrado.
Bom, limpar as text areas consegui mas limpar a datagridview para popular com os ítens do novo pedido.
O código que estou usando para popular a DataGridView com os dados que vem do banco no onLoad do form Cadastro de pedidos é:
Private Sub mostracolunas()
DGWPedidos.Columns.Item(0).HeaderText = "CODIGO PEDIDO"
DGWPedidos.Columns.Item(1).HeaderText = "CODIGO PRODUTO"
DGWPedidos.Columns.Item(2).HeaderText = "TIPO UNIDADE"
DGWPedidos.Columns.Item(3).HeaderText = "DESCRIÇÃO"
DGWPedidos.Columns.Item(4).HeaderText = "PREÇO UNITÁRIO"
DGWPedidos.Columns.Item(5).HeaderText = "QTDE"
DGWPedidos.Columns.Item(6).HeaderText = "SUBTOTAL"
End Sub
Private Sub listaitens()
'carrega ítens pedidos
Dim tabelaitens As String = "detalhespedidos"
Dim sqlitens As String = "Select * from " & tabelaitens & " where pedidoID=" & dr("pedidoID")
ds_itens = accDb.ExecuteDS(sqlitens, tabelaitens)
DGWPedidos.DataSource = ds_itens.Tables(0).DefaultView
mostracolunas()
total.Text = 0.0
For Each linha As DataGridViewRow In DGWPedidos.Rows
total.Text += linha.Cells(6).Value
Next
End Sub
No carregamento do form, após a listagem dos dados dos pedidos, carrego os ítens do pedido na DataGridView
Private Sub Pedidos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'carrega pedidos
Dim tabelapedidos As String = "pedidos"
Dim sqlpedidos As String = "select p.pedidoID, p.clienteID, p.ativo, p.data, c.nome as nome from pedidos p inner join clientes c ON p.clienteID = c.clienteID where p.ativo='S' order by pedidoID"
ds = accDb.ExecuteDS(sqlpedidos, tabelapedidos)
dt = ds.Tables(tabelapedidos)
registropedidos = dt.Rows.Count - 1
' com primarykey
dt.PrimaryKey = New DataColumn() {dt.Columns(0)}
dr = dt.Rows.Find(registropedidos)
registropedidos = dt.Rows.IndexOf(dr)
' com primarykey
exibirDados(registropedidos)
desabilita()
If dt.Rows.Count = 0 Then
Primeiro.Enabled = False
Anterior.Enabled = False
Proximo.Enabled = False
Ultimo.Enabled = False
Atualizar.Enabled = False
Eliminar.Enabled = False
End If
If dt.Rows.Count > 0 Then
registropedidos = 0
Primeiro_Click(Nothing, Nothing)
Else
registropedidos = -1
End If
End Sub
Carregado o form pedidos, eu consigo navegar entre os pedidos gravados normalmente veja os pedidos e os seus ítens normalmente.
Porem, quando vou inserir um novo pedido me deparo com 2 problemas.
O primeiro é que não consigo limpar a DataGridView para carregarla com os ítens do novo pedido.
O segundo é que, na hora de gravar o pedidono banco, o proprio MySql se encarrega de saber qual é o novo numero para o pedido ao passo de que n hora de gravar os ítens desse novo pedido na tabeladetalhespedidos aí eu preciso saber qual é o numero do novo pedido para eu consiguir gravar no banco corretamente e isso não to consiguindo.
Veja o código do insert:
Private Sub Novo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Novo.Click
If Novo.Text = "Novo" Then
limpacampos()
data.Text = Date.Today
codigoped.Visible = False
LabelCodigoPed.Visible = False
Primeiro.Enabled = False
Proximo.Enabled = False
Anterior.Enabled = False
Ultimo.Enabled = False
Atualizar.Enabled = False
Eliminar.Enabled = False
Encerrar.Text = "Cancela"
Novo.Text = "Incluir"
bcliente.Enabled = True
bproduto.Enabled = True
Incluir.Enabled = True
Excluir.Enabled = True
qtde.Enabled = True
bcliente_Click(Nothing, Nothing)
ElseIf Novo.Text = "Incluir" Then
dr = dt.NewRow
incluirRegistro(dr)
desabilita()
Novo.Text = "Novo"
Encerrar.Text = "Encerrar"
Primeiro.Enabled = True
Proximo.Enabled = True
Anterior.Enabled = True
Ultimo.Enabled = True
Atualizar.Enabled = True
Eliminar.Enabled = True
End If
End Sub
Public Sub limpacampos()
For Each c As Control In Me.grpitens.Controls
If TypeOf c Is TextBox Then
c.Text = ""
End If
Next
For Each dgw As Control In Me.grpitens.Controls
If TypeOf dgw Is DataGridView Then
' DGWPedidos.DataSource = Nothing
End If
Next
End Sub
Private Sub incluirRegistro(ByVal dr As DataRow)
Dim tabelapedidos As String = "pedidos"
Dim tabeladetalhespedidos As String = "detalhespedidos"
Dim sqlpedidos As String = "INSERT INTO " & tabelapedidos & " (clienteID,ativo,data)VALUES ('" & codigocli.Text & "','S','" & Format(Date.Today, "yyyy-MM-dd") & "')"
Dim sqlitens As String = "INSERT INTO " & tabeladetalhespedidos & " (pedidoID,produtoID,unidade,descricao,preço,quantidade,subtotal) VALUES ('" & DGWPedidos.CurrentRow.Cells(0).Value & "','" & DGWPedidos.CurrentRow.Cells(1).Value & "','" & DGWPedidos.CurrentRow.Cells(2).Value & "','" & DGWPedidos.CurrentRow.Cells(3).Value & "','" & DGWPedidos.CurrentRow.Cells(4).Value & "','" & DGWPedidos.CurrentRow.Cells(5).Value & "','" & DGWPedidos.CurrentRow.Cells(6).Value & "')"
Dim ds_pedidos As DataSet = accDb.ExecuteDS(sqlpedidos, tabelapedidos)
For Each linha As DataGridViewRow In DGWPedidos.Rows
accDb.ExecuteDS(sqlitens, tabeladetalhespedidos)
Next
Try
MessageBox.Show("Pedidos incluido com sucesso.")
exibirDados(registropedidos)
Catch ex As Exception
MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
End Try
End Sub
E agora segue o código completo para apreciação de voces:
Imports MySql.Data.MySqlClient
Public Class Pedidos
'INICIO DAS DECLARAÇÕES DAS VARIAVEIS GLOBAIS
Dim accDb As New DBConnection
Dim registrocliente As Integer
Dim registroproduto As Integer
Dim registroitem As Integer
Dim registropedido As Integer
Dim registropedidos As Integer
Dim dr As DataRow
Dim I As Integer = 0
Dim dt As DataTable
Dim ds As DataSet = Nothing
Dim ds_itens As DataSet = Nothing
'FIM DAS DECLARAÇÕES DAS VARIAVEIS GLOBAIS
''''''''''''''''''''''''''''''''''''''''''
'INICIO DO BLOCO DE FUNÇÕES
Private Sub exibirDados(ByVal m As Integer)
Dim i As Integer = dt.Rows.Count - 1
If m < 0 OrElse i < 0 Then Exit Sub
dr = dt.Rows(m)
codigoped.Text = dr("pedidoID")
codigocli.Text = dr("clienteID")
cliente.Text = dr("nome")
data.Text = dr("data")
End Sub
Private Sub atribuirDados(ByVal dr As DataRow)
dr("data") = data.Text
End Sub
Private Sub listaitens()
'carrega ítens pedidos
Dim tabelaitens As String = "detalhespedidos"
Dim sqlitens As String = "Select * from " & tabelaitens & " where pedidoID=" & dr("pedidoID")
ds_itens = accDb.ExecuteDS(sqlitens, tabelaitens)
DGWPedidos.DataSource = ds_itens.Tables(0).DefaultView
mostracolunas()
total.Text = 0.0
For Each linha As DataGridViewRow In DGWPedidos.Rows
total.Text += linha.Cells(6).Value
Next
End Sub
Private Sub mostracolunas()
DGWPedidos.Columns.Item(0).HeaderText = "CODIGO PEDIDO"
DGWPedidos.Columns.Item(1).HeaderText = "CODIGO PRODUTO"
DGWPedidos.Columns.Item(2).HeaderText = "TIPO UNIDADE"
DGWPedidos.Columns.Item(3).HeaderText = "DESCRIÇÃO"
DGWPedidos.Columns.Item(4).HeaderText = "PREÇO UNITÁRIO"
DGWPedidos.Columns.Item(5).HeaderText = "QTDE"
DGWPedidos.Columns.Item(6).HeaderText = "SUBTOTAL"
End Sub
Public Sub desabilita()
For Each c As Control In Me.gritens.Controls
If TypeOf c Is TextBox OrElse TypeOf c Is DataGridView OrElse TypeOf c Is Button Then
c.Enabled = False
End If
Next
For Each c As Control In Me.grpitens.Controls
If TypeOf c Is TextBox OrElse TypeOf c Is DataGridView OrElse TypeOf c Is Button Then
c.Enabled = False
End If
Next
End Sub
Public Sub habilita()
For Each c As Control In Me.gritens.Controls
If TypeOf c Is TextBox OrElse TypeOf c Is DataGridView OrElse TypeOf c Is Button Then
c.Enabled = True
End If
Next
For Each c As Control In Me.grpitens.Controls
If TypeOf c Is TextBox OrElse TypeOf c Is DataGridView OrElse TypeOf c Is Button Then
c.Enabled = True
End If
Next
End Sub
Public Sub limpacampos()
For Each c As Control In Me.grpitens.Controls
If TypeOf c Is TextBox Then
c.Text = ""
End If
Next
For Each dgw As Control In Me.grpitens.Controls
If TypeOf dgw Is DataGridView Then
' DGWPedidos.DataSource = Nothing
End If
Next
End Sub
Private Sub incluirRegistro(ByVal dr As DataRow)
Dim tabelapedidos As String = "pedidos"
Dim tabeladetalhespedidos As String = "detalhespedidos"
Dim sqlpedidos As String = "INSERT INTO " & tabelapedidos & " (clienteID,ativo,data)VALUES ('" & codigocli.Text & "','S','" & Format(Date.Today, "yyyy-MM-dd") & "')"
Dim sqlitens As String = "INSERT INTO " & tabeladetalhespedidos & " (pedidoID,produtoID,unidade,descricao,preço,quantidade,subtotal) VALUES ('" & DGWPedidos.CurrentRow.Cells(0).Value & "','" & DGWPedidos.CurrentRow.Cells(1).Value & "','" & DGWPedidos.CurrentRow.Cells(2).Value & "','" & DGWPedidos.CurrentRow.Cells(3).Value & "','" & DGWPedidos.CurrentRow.Cells(4).Value & "','" & DGWPedidos.CurrentRow.Cells(5).Value & "','" & DGWPedidos.CurrentRow.Cells(6).Value & "')"
Dim ds_pedidos As DataSet = accDb.ExecuteDS(sqlpedidos, tabelapedidos)
For Each linha As DataGridViewRow In DGWPedidos.Rows
accDb.ExecuteDS(sqlitens, tabeladetalhespedidos)
Next
Try
MessageBox.Show("Pedidos incluido com sucesso.")
exibirDados(registropedidos)
Catch ex As Exception
MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
End Try
End Sub
Private Sub atualizarRegistro(ByVal dr As DataRow)
' atribuirDados(dr)
' Dim sql As String = "UPDATE " & tabela & " SET nome = '" & Nome.Text & "',cpf_cnpj = '" & cpf_cnpj.Text & "',endereco= '" & Endereco.Text & "',email = '" & data.Text & "', where clienteID='" & dr("clienteID") & "'"
' ds = accDb.ExecuteDS(sql, tabela)
exibirDados(registropedidos)
Try
MessageBox.Show("registro de Usuário alterado com sucesso.")
Catch ex As Exception
MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
End Try
End Sub
Private Sub eliminarRegistro(ByVal codigo As Integer)
' Dim sql As String = "UPDATE " & tabela & " SET ativo = 'N' where clienteID = " & codigo
' ds = accDb.ExecuteDS(Sql, tabela)
Proximo_Click(Nothing, Nothing)
Try
MessageBox.Show("registro de Usuário excluido com sucesso.")
Catch ex As Exception
MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
End Try
End Sub
'FIM DO BLOCO DE FUNÇÕES
''''''''''''''''''''''''''''''
'INICIO DO BLOCO DE PROCIDURES
Private Sub Pedidos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'carrega pedidos
Dim tabelapedidos As String = "pedidos"
Dim sqlpedidos As String = "select p.pedidoID, p.clienteID, p.ativo, p.data, c.nome as nome from pedidos p inner join clientes c ON p.clienteID = c.clienteID where p.ativo='S' order by pedidoID"
ds = accDb.ExecuteDS(sqlpedidos, tabelapedidos)
dt = ds.Tables(tabelapedidos)
registropedidos = dt.Rows.Count - 1
' com primarykey
dt.PrimaryKey = New DataColumn() {dt.Columns(0)}
dr = dt.Rows.Find(registropedidos)
registropedidos = dt.Rows.IndexOf(dr)
' com primarykey
exibirDados(registropedidos)
desabilita()
If dt.Rows.Count = 0 Then
Primeiro.Enabled = False
Anterior.Enabled = False
Proximo.Enabled = False
Ultimo.Enabled = False
Atualizar.Enabled = False
Eliminar.Enabled = False
End If
If dt.Rows.Count > 0 Then
registropedidos = 0
Primeiro_Click(Nothing, Nothing)
Else
registropedidos = -1
End If
End Sub
Private Sub Primeiro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Primeiro.Click
registropedidos = 0
exibirDados(registropedidos)
listaitens()
End Sub
Private Sub Anterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Anterior.Click
registropedidos = registropedidos - 1
If registropedidos < 0 Then registropedidos = 0
exibirDados(registropedidos)
listaitens()
End Sub
Private Sub Proximo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Proximo.Click
Dim i As Integer = dt.Rows.Count - 1
registropedidos = registropedidos + 1
If registropedidos > i Then registropedidos = i
exibirDados(registropedidos)
listaitens()
End Sub
Private Sub Ultimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ultimo.Click
registropedidos = dt.Rows.Count - 1
exibirDados(registropedidos)
listaitens()
End Sub
Private Sub bcliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bcliente.Click
Dim dialogo As New frmClientes
dialogo.ShowDialog()
If dialogo.DialogResult = Windows.Forms.DialogResult.OK Then
Dim tabela As String = "Clientes"
Dim sql As String = "Select * from " & tabela & " where clienteID = '" & dialogo.registrocliente & "'"
ds = accDb.ExecuteDS(sql, tabela)
Dim dr As DataRow
For Each dr In ds.Tables(0).Rows
codigocli.Text = dr.Item("clienteID")
cliente.Text = dr.Item("nome")
registrocliente = dr.Item("clienteID")
Next dr
Else
MsgBox("Não foi selecionado nenhum cliente.")
codigocli.Text = ""
cliente.Text = ""
End If
End Sub
Private Sub bproduto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bproduto.Click
Dim dialogo As New frmProdutos
dialogo.ShowDialog()
If dialogo.DialogResult = Windows.Forms.DialogResult.OK Then
Dim tabela As String = "Produtos"
Dim sql As String = "Select * from " & tabela & " where produtoID = '" & dialogo.registroproduto & "'"
ds = accDb.ExecuteDS(sql, tabela)
Dim dr As DataRow
For Each dr In ds.Tables(0).Rows
codigoprod.Text = dr.Item("produtoID")
produto.Text = dr.Item("descricao")
preço.Text = dr.Item("preço")
unidade.Text = dr.Item("unidade")
registroproduto = dr.Item("produtoID")
Next dr
Else
MsgBox("Não foi selecionado nenhum cliente.")
codigocli.Text = ""
cliente.Text = ""
End If
End Sub
Private Sub Novo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Novo.Click
If Novo.Text = "Novo" Then
limpacampos()
data.Text = Date.Today
codigoped.Visible = False
LabelCodigoPed.Visible = False
Primeiro.Enabled = False
Proximo.Enabled = False
Anterior.Enabled = False
Ultimo.Enabled = False
Atualizar.Enabled = False
Eliminar.Enabled = False
Encerrar.Text = "Cancela"
Novo.Text = "Incluir"
bcliente.Enabled = True
bproduto.Enabled = True
Incluir.Enabled = True
Excluir.Enabled = True
qtde.Enabled = True
bcliente_Click(Nothing, Nothing)
ElseIf Novo.Text = "Incluir" Then
dr = dt.NewRow
incluirRegistro(dr)
desabilita()
Novo.Text = "Novo"
Encerrar.Text = "Encerrar"
Primeiro.Enabled = True
Proximo.Enabled = True
Anterior.Enabled = True
Ultimo.Enabled = True
Atualizar.Enabled = True
Eliminar.Enabled = True
End If
End Sub
Private Sub Atualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Atualizar.Click
If Atualizar.Text = "Atualizar" Then
Novo.Enabled = False
Primeiro.Enabled = False
Proximo.Enabled = False
Anterior.Enabled = False
Ultimo.Enabled = False
Eliminar.Enabled = False
Encerrar.Text = "Cancela"
Atualizar.Text = "Salvar"
bcliente.Enabled = True
bproduto.Enabled = True
Incluir.Enabled = True
Excluir.Enabled = True
qtde.Enabled = True
cliente.Focus()
codigoped.Enabled = False
codigoped.Visible = True
LabelCodigoPed.Visible = True
ElseIf Atualizar.Text = "Salvar" Then
codigoped.Enabled = False
If registropedidos < 0 OrElse registropedidos > dt.Rows.Count - 1 Then Exit Sub
dr = dt.Rows(registropedidos)
atualizarRegistro(dr)
Atualizar.Text = "Atualizar"
Encerrar.Text = "Encerrar"
Novo.Enabled = True
Eliminar.Enabled = True
desabilita()
Primeiro.Enabled = True
Proximo.Enabled = True
Anterior.Enabled = True
Ultimo.Enabled = True
End If
End Sub
Private Sub Incluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Incluir.Click
If produto.Text = String.Empty Then
MsgBox("Escolha o produto.")
bproduto_Click(Nothing, Nothing)
Exit Sub
ElseIf qtde.Text = String.Empty Then
MsgBox("Informe a quantidade requerida...")
qtde.Focus()
Exit Sub
End If
'DGWPedidos.Rows(I).Cells(0).Value = dr("pedidoID")
'DGWPedidos.Rows(I).Cells(1).Value = registroproduto
'DGWPedidos.Rows(I).Cells(2).Value = unidade.Text
'DGWPedidos.Rows(I).Cells(3).Value = produto.Text
'DGWPedidos.Rows(I).Cells(4).Value = preço.Text
'DGWPedidos.Rows(I).Cells(5).Value = qtde.Text
'DGWPedidos.Rows(I).Cells(6).Value = preço.Text * qtde.Text
DGWPedidos.CurrentRow.Cells(0).Value = dr("pedidoID")
DGWPedidos.CurrentRow.Cells(1).Value = registroproduto
DGWPedidos.CurrentRow.Cells(2).Value = unidade.Text
DGWPedidos.CurrentRow.Cells(3).Value = produto.Text
DGWPedidos.CurrentRow.Cells(4).Value = preço.Text
DGWPedidos.CurrentRow.Cells(5).Value = qtde.Text
DGWPedidos.CurrentRow.Cells(6).Value = preço.Text * qtde.Text
total.Text = 0.0
For Each linha As DataGridViewRow In DGWPedidos.Rows
total.Text += linha.Cells(6).Value
Next
I = DGWPedidos.Rows.Count + 1
End Sub
Private Sub Encerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Encerrar.Click
If Encerrar.Text = "Encerrar" Then
If MessageBox.Show("Deseja encerrar a aplicação", "Encerrar", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
If ds.HasChanges Then
ds.AcceptChanges()
End If
Me.Close()
End If
ElseIf Encerrar.Text = "Cancela" Then
desabilita()
Encerrar.Text = "Encerrar"
Primeiro.Enabled = True
Proximo.Enabled = True
Anterior.Enabled = True
Ultimo.Enabled = True
Atualizar.Enabled = True
Eliminar.Enabled = True
codigoped.Visible = True
LabelCodigoPed.Visible = True
If dt.Rows.Count = 0 Then
Atualizar.Enabled = False
Eliminar.Enabled = False
End If
Novo.Text = "Novo"
Novo.Enabled = True
Atualizar.Text = "Atualizar"
Anterior_Click(Nothing, Nothing)
End If
End Sub
Private Sub Eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Eliminar.Click
If registropedidos < 0 OrElse registropedidos > dt.Rows.Count - 1 Then
Exit Sub
Else
If MessageBox.Show("Deseja Excluir esse registro", "Excluir", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
Dim codigo As Integer
Dim dr As DataRow = dt.Rows(registropedidos)
codigo = dr("clienteID")
codigo = CType(codigo.ToString, Integer)
eliminarRegistro(codigo)
End If
End If
' Dim sql As String = "UPDATE " & tabela & " SET ativo = 'N' where clienteID = " & codigoped
'ds = accDb.ExecuteDS(sql, tabela)
Proximo_Click(Nothing, Nothing)
Try
MessageBox.Show("registro de Usuário excluido com sucesso.")
Catch ex As Exception
MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
End Try
End Sub
'FIM DO BLOCO DE PROCIDURES
End Class
caso queiram baixar o projeto para verem como esta.
Pergunta
Carlos Rocha
Problemas dificeis de resolver
1)
Ola.
Estou fazendo o código abaixo para inserir pedidos e ítens do pedido:
A gravação do pedido vai beleza mas a gravação dos ítens não. Na hora de fazer o For Each, ele conta quantos ítens tem na DataGridView e grava apenas o primeiro ítem quantas vezes for o numero de linhas na gridview. Por exemplo: na grid tem la Pedido Produto quantidade preço Total 1 0325 20 25,00 50,00 1 0256 10 50,00 50,00 1 0148 30 30,00 90,00 3 registros. Certo? Pois é. O problema é que ele grava no banco só o primeiro registro assim: Pedido Produto quantidade preço Total 1 0325 20 25,00 50,00 1 0325 20 25,00 50,00 1 0325 20 25,00 50,00 Mas no codigo abaixo, ele já percorre cada linha e faz correto. Só que não é com o DataGridView e sim com o datarow Onde esta o erro? 2)Como faço para limpar os registros em uma datagridview mantendo os nomes das colunas? Isso no caso de eu for fazer um novo pedido e clikar no botão Novo. Pergunto isso pois quando abro o formulario de pedidos a partir do Menu, já abre com os dados do primeiro pedido cadastrado. Bom, limpar as text areas consegui mas limpar a datagridview para popular com os ítens do novo pedido. O código que estou usando para popular a DataGridView com os dados que vem do banco no onLoad do form Cadastro de pedidos é: No carregamento do form, após a listagem dos dados dos pedidos, carrego os ítens do pedido na DataGridView Carregado o form pedidos, eu consigo navegar entre os pedidos gravados normalmente veja os pedidos e os seus ítens normalmente. Porem, quando vou inserir um novo pedido me deparo com 2 problemas. O primeiro é que não consigo limpar a DataGridView para carregarla com os ítens do novo pedido. O segundo é que, na hora de gravar o pedidono banco, o proprio MySql se encarrega de saber qual é o novo numero para o pedido ao passo de que n hora de gravar os ítens desse novo pedido na tabeladetalhespedidos aí eu preciso saber qual é o numero do novo pedido para eu consiguir gravar no banco corretamente e isso não to consiguindo. Veja o código do insert: E agora segue o código completo para apreciação de voces:caso queiram baixar o projeto para verem como esta.
http://www.carcleo.com/vendas.zip
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.