Carcleo 4 Denunciar post Postado Novembro 30, 2008 Estou tendo alguns probleminhas com meu estudo de VB.Net Tenho um form de pedidos e nele, umaDataGridView para listar, inserir e deletar(alteração) os ítens do pedido. A datagridaview, quando vou digitar um Novo Pedido, eu retiro o datasource e o preencho manualmente,sem problemas. A datagridaview fica enable= true mas com readionly= true. A datagridaview tem Datasource ligado ao banco. Quando vou criar um novo pedido, eu faço dgwpedidos.datasource = nothing desligando ela do banco e depois, crio manualmente as colunas do DataGridView mas quando vou alterar um pedido eu não tiro o datasource . Problemas: Quando estou gravando novo pedido, consigo gravar quantas linhas quizer mas quando desisto de algum, ítem e vou deletar, ai da o seguinte erro: O índice estava fora do intervalo. Ele deve ser não-negativo e menor que o tamanho da coleção. Nome do parâmetro: indexQuando esto alterando um pedido da esse erro tambem tanto para inmserir quanto para deletar os ítens do pedido que se encontram nele. Ouitro último problema com datagridview é que não conmseigo gravar valores de dinheiro. Por exemplo: Na textbox esta 32,63 aí vai para a datagridview 32 Como resolover isso? Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Novembro 30, 2008 Esqueci de mostrar o código que estou usando para inserir registros (ítens do pedido) na datagridview: Private Sub Incluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Incluir.Click If cliente.Text = String.Empty Then MsgBox("Escolha o clientes...") bcliente_Click(Nothing, Nothing) Exit Sub ElseIf 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 If Novo.Text = "Incluir" Then ' se for novo pedido DGWPedidos.Rows.Add(Convert.ToInt32(Proximopedido), registroproduto, unidade.Text, produto.Text, preço.Text, Convert.ToInt32(qtde.Text), preço.Text * Convert.ToInt32(qtde.Text)) Else ' se for editar pedido '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 = Convert.ToInt32(qtde.Text) 'DGWPedidos.CurrentRow.Cells(6).Value = preço.Text * Convert.ToInt32(qtde.Text) I = DGWPedidos.Rows.Count DGWPedidos.Rows(I).Cells(1).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 = Convert.ToInt32(qtde.Text) DGWPedidos.Rows(I).Cells(6).Value = preço.Text * Convert.ToInt32(qtde.Text) I = I + 1 End If total.Text = 0.0 For Each linha As DataGridViewRow In DGWPedidos.Rows total.Text += linha.Cells(6).Value ' total.Text = Format(total.Text, "#,##0.00") Next linha End SubQuando eu abro a DBGrid, tanto na hora da navegação quanto na hora de um novo pedido, aparece sempre uma linha em branco no final da dagridvbiew que inclusive vai para o banco na hora da insersão. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 1, 2008 Alterei a propriedade SelectionMode da DataGridView para FullRowSelect e o problema da deleção de linhas não resolveu. Dessa formase você seleciona uma linha para deletar, ela deleta todas no banco. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 1, 2008 Não achei o momento em que você tenta excluir seus registros. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 1, 2008 quintelab, Resolvi o problema da deleção alterando a propriedade selectmode da datagridview para FullRowSelect. Mas ainda persiste o esse problema: Quando eu abro a DBGrid, tanto na hora da navegação quanto na hora de um novo pedido ou alteração, aparece sempre uma linha em branco no final da dagridvbiew que inclusive vai para o banco na hora da insersão. Outro problema é que, quando vou adicionar ítens ao pedido da erro de indice: "O índice estava fora do intervalo. Ele deve ser não-negativo e menor que o tamanho da coleção. Nome do parâmetro: index" Eis o código que estou usando na hora de inserir ítens ao DataGridView: Private Sub Incluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Incluir.Click 'a propriedade SelectionMode deve ser igual a FullRowSelect para deletar linhas If cliente.Text = String.Empty Then MsgBox("Escolha o clientes...") bcliente_Click(Nothing, Nothing) Exit Sub ElseIf 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 Dim O As Integer = DGWPedidos.Rows.Count DGWPedidos.Rows(O).Cells(1).Value =, dr("pedidoID") DGWPedidos.Rows(O).Cells(1).Value = registroproduto DGWPedidos.Rows(O).Cells(2).Value = unidade.Text DGWPedidos.Rows(O).Cells(3).Value = produto.Text DGWPedidos.Rows(O).Cells(4).Value = preco.Text DGWPedidos.Rows(O).Cells(5).Value = Convert.ToInt32(qtde.Text) DGWPedidos.Rows(O).Cells(6).Value = preco.Text * Convert.ToInt32(qtde.Text) O = +O total.Text = 0.0 For Each linha As DataGridViewRow In DGWPedidos.Rows total.Text += linha.Cells(6).Value ' total.Text = Format(total.Text, "#,##0.00") Next linha End Sub Eis o código todo do arquivo: 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 I As Integer = 0 Dim Proximopedido As New Integer Dim ds As DataSet = Nothing Dim ds_itens As DataSet = Nothing Dim dt As DataTable Dim dr As DataRow Dim TabelaClientes As String = "clientes" Dim TabelaProdutos As String = "produtos" Dim TabelaPedidos As String = "pedidos" Dim TabelaDetalhesPedidos As String = "detalhespedidos" '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) LabelCodigoPed.Visible = True codigoped.Visible = True 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 Public Sub CarregaPagina() 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 ' refazer_dgw() 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 listaitens() 'carrega ítens pedidos Dim sqlitens As String = "Select * from " & TabelaDetalhesPedidos & " where pedidoID=" & dr("pedidoID") ds_itens = accDb.ExecuteDS(sqlitens, TabelaDetalhesPedidos) 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 Public Sub desabilita() For Each c As Control In Me.gritens.Controls If TypeOf c Is TextBox 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 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 Button OrElse TypeOf c Is DataGridView Then c.Enabled = True End If Next For Each c As Control In Me.grpitens.Controls If TypeOf c Is Button OrElse TypeOf c Is DataGridView 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 End Sub Public Sub limpagrid() If DGWPedidos.DataSource IsNot Nothing Then DGWPedidos.DataSource = Nothing refazer_dgw() Else DGWPedidos.Rows.Clear() refazer_dgw() End If 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 ProximoRegistro() Dim sqlUltimoIDPedido As String = "select max(pedidoID) from " & TabelaPedidos & " order by pedidoID" Dim dsUltimoIDPedido As DataSet = accDb.ExecuteDS(sqlUltimoIDPedido, TabelaPedidos) Dim drUltimoIDPedido As DataRow If dsUltimoIDPedido.Tables(0).Rows.Count = 0 Then Proximopedido = 1 Else For Each drUltimoIDPedido In dsUltimoIDPedido.Tables(TabelaPedidos).Rows If IsDBNull(drUltimoIDPedido.Item(0)) Then Proximopedido = 1 Else Proximopedido = drUltimoIDPedido.Item(0) + 1 End If Next drUltimoIDPedido End If End Sub Public Sub refazer_dgw() If DGWPedidos.Columns.Count = 0 Then DGWPedidos.AutoGenerateColumns = False Dim txt1 As New DataGridViewTextBoxColumn() Dim txt2 As New DataGridViewTextBoxColumn() Dim txt3 As New DataGridViewTextBoxColumn() Dim txt4 As New DataGridViewTextBoxColumn() Dim txt5 As New DataGridViewTextBoxColumn() Dim txt6 As New DataGridViewTextBoxColumn() Dim txt7 As New DataGridViewTextBoxColumn() DGWPedidos.SelectionMode = DataGridViewSelectionMode.FullRowSelect txt1.HeaderText = "CODIGO PEDIDO" txt2.HeaderText = "CODIGO PRODUTO" txt3.HeaderText = "TIPO UNIDADE" txt4.HeaderText = "DESCRIÇÃO" txt5.HeaderText = "PREÇO UNITÁRIO" txt6.HeaderText = "QTDE" txt7.HeaderText = "SUBTOTAL" txt1.DataPropertyName = "pedidoID" txt2.DataPropertyName = "produtoID" txt3.DataPropertyName = "unidade" txt4.DataPropertyName = "descricao" txt5.DataPropertyName = "preco" txt6.DataPropertyName = "quantidade" txt7.DataPropertyName = "subtotal" DGWPedidos.Columns.Add(txt1) DGWPedidos.Columns.Add(txt2) DGWPedidos.Columns.Add(txt3) DGWPedidos.Columns.Add(txt4) DGWPedidos.Columns.Add(txt5) DGWPedidos.Columns.Add(txt6) DGWPedidos.Columns.Add(txt7) End If End Sub Private Sub incluirRegistro(ByVal dr As DataRow) Dim sqlpedidos As String = "INSERT INTO " & TabelaPedidos & " (clienteID,ativo,data)VALUES ('" & codigocli.Text & "','S','" & Format(Date.Today, "yyyy-MM-dd") & "')" Dim ds_pedidos As DataSet = accDb.ExecuteDS(sqlpedidos, TabelaPedidos) For Each linha As DataGridViewRow In DGWPedidos.Rows Dim sqlitens As String = "INSERT INTO " & TabelaDetalhesPedidos & " (pedidoID,produtoID,unidade,descricao,preco,quantidade,subtotal) VALUES ('" & DGWPedidos.Rows(I).Cells(0).Value & "','" & DGWPedidos.Rows(I).Cells(1).Value & "','" & DGWPedidos.Rows(I).Cells(2).Value & "','" & DGWPedidos.Rows(I).Cells(3).Value & "','" & DGWPedidos.Rows(I).Cells(4).Value & "','" & DGWPedidos.Rows(I).Cells(5).Value & "','" & DGWPedidos.Rows(I).Cells(6).Value & "')" accDb.ExecuteDS(sqlitens, tabeladetalhespedidos) I = I + 1 Next linha Try MessageBox.Show("Pedidos incluido com sucesso.") CarregaPagina() 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) Dim sqlpedidos As String = "UPDATE " & TabelaPedidos & " SET clienteID='" & codigocli.Text & "' where pedidoID='" & DGWPedidos.Rows(I).Cells(0).Value & "'" Dim sqlitensdeletaitens As String = "delete from " & TabelaDetalhesPedidos & " where pedidoID='" & DGWPedidos.Rows(I).Cells(0).Value & "'" accDb.ExecuteDS(sqlitensdeletaitens, tabeladetalhespedidos) Dim ds_pedidos As DataSet = accDb.ExecuteDS(sqlpedidos, TabelaPedidos) For Each linha As DataGridViewRow In DGWPedidos.Rows Dim sqlitens As String = "INSERT INTO " & TabelaDetalhesPedidos & " (pedidoID,produtoID,unidade,descricao,preco,quantidade,subtotal) VALUES ('" & DGWPedidos.Rows(I).Cells(0).Value & "','" & DGWPedidos.Rows(I).Cells(1).Value & "','" & DGWPedidos.Rows(I).Cells(2).Value & "','" & DGWPedidos.Rows(I).Cells(3).Value & "','" & DGWPedidos.Rows(I).Cells(4).Value & "','" & DGWPedidos.Rows(I).Cells(5).Value & "','" & DGWPedidos.Rows(I).Cells(6).Value & "')" accDb.ExecuteDS(sqlitens, TabelaDetalhesPedidos) I = I + 1 Next linha Try MessageBox.Show("Pedidos atualizado com sucesso.") 'CarregaPagina() exibirDados(0) 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 " & TabelaPedidos & " SET ativo = 'N' where pedidoID = " & codigo ds = accDb.ExecuteDS(sql, TabelaPedidos) Proximo_Click(Nothing, Nothing) Try MessageBox.Show("Pedido 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 CarregaPagina() 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 sql As String = "Select * from " & TabelaClientes & " where clienteID = '" & dialogo.registrocliente & "'" ds = accDb.ExecuteDS(sql, TabelaClientes) 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 sql As String = "Select * from " & TabelaProdutos & " where produtoID = '" & dialogo.registroproduto & "'" ds = accDb.ExecuteDS(sql, TabelaProdutos) Dim dr As DataRow For Each dr In ds.Tables(0).Rows codigoprod.Text = dr.Item("produtoID") produto.Text = dr.Item("descricao") preco.Text = dr.Item("preco") 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() ds_itens.Tables(0).Clear() 'limpagrid() ProximoRegistro() codigoped.Text = Proximopedido habilita() data.Text = Date.Today 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 habilita() 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 Dim dre As DataRow = dt.Rows(registropedidos) atualizarRegistro(dre) 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 'a propriedade SelectionMode deve ser igual a FullRowSelect para deletar linhas If cliente.Text = String.Empty Then MsgBox("Escolha o clientes...") bcliente_Click(Nothing, Nothing) Exit Sub ElseIf 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 If Novo.Text = "Incluir" Then DGWPedidos.Rows.Add(Convert.ToInt32(Proximopedido), registroproduto, unidade.Text, produto.Text, preco.Text, Convert.ToInt32(qtde.Text), preco.Text * Convert.ToInt32(qtde.Text)) Else Dim O As Integer = DGWPedidos.Rows.Count DGWPedidos.Rows(O).Cells(1).Value =, dr("pedidoID") DGWPedidos.Rows(O).Cells(1).Value = registroproduto DGWPedidos.Rows(O).Cells(2).Value = unidade.Text DGWPedidos.Rows(O).Cells(3).Value = produto.Text DGWPedidos.Rows(O).Cells(4).Value = preco.Text DGWPedidos.Rows(O).Cells(5).Value = Convert.ToInt32(qtde.Text) DGWPedidos.Rows(O).Cells(6).Value = preco.Text * Convert.ToInt32(qtde.Text) O = +O End If total.Text = 0.0 For Each linha As DataGridViewRow In DGWPedidos.Rows total.Text += linha.Cells(6).Value ' total.Text = Format(total.Text, "#,##0.00") Next linha 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 End Sub Private Sub Excluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Excluir.Click 'a propriedade SelectionMode deve ser igual a FullRowSelect para deletar linhas 'verifica se a linha a ser excluida é valida If DGWPedidos.SelectedRows.Count > 0 AndAlso Not DGWPedidos.SelectedRows(0).Index = DGWPedidos.Rows.Count - 1 Then DGWPedidos.Rows.RemoveAt(DGWPedidos.SelectedRows(0).Index) End If End Sub 'FIM DO BLOCO DE PROCIDURES End Class Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 2, 2008 Achei uns 3 tópicos com o mesmo assunto. Pode exlcuir? Qual é o original? http://forum.imasters.com.br/index.php?showtopic=319304 Último post deste abaixo é sobre o mesmo assunto: http://forum.imasters.com.br/index.php?showtopic=317908 Abraços.. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 2, 2008 Pode sim. Obrigado e me desculpe por isso. É a vontade de fazer dar certo a qualquer custo mesmo que isto inflinja as regras do fórum. Por isso pesso desculpas. Me descuidei. Mas, a situação agora mudou de quadro. já que você esta ai, a situaçao agora é a seguinte: Fiz (risos) duas funçoes que retornam um dataset. Uma com tabelas temporarias e outro com tabelas vinda do MySql. Veja o código: Public Function ExecuteDSTEMP(ByVal sql As String) As DataSet Dim datasetitenspedidos = New DataSet() Dim da As MySqlDataAdapter = New MySqlDataAdapter() ' Definindo variável de tabela Dim dtPed As New DataTable("detalhespedidos") dt.TableName = "itens" Dim NomeTabela As String = dt.TableName Try OpenConnection() ' Definindo os campos da Tabela dtPed.Columns.Add("pedidoID", GetType(Integer)) dtPed.Columns.Add("produtoID", GetType(Integer)) dtPed.Columns.Add("unidade", GetType(Char)) dtPed.Columns.Add("descricao", GetType(String)) dtPed.Columns.Add("preço", GetType(Decimal)) dtPed.Columns.Add("quantidade", GetType(Integer)) dtPed.Columns.Add("subtotal", GetType(Decimal)) datasetitenspedidos.Tables.Add(dtPed) cmd.CommandType = CommandType.Text cmd.CommandText = sql cmd.Connection = Conexao da.SelectCommand = cmd da.Fill(datasetitenspedidos, NomeTabela) dt = datasetitenspedidos.Tables(NomeTabela) da.Dispose() Return datasetitenspedidos Catch ex As Exception MsgBox(ex.Message) End Try Return datasetitenspedidos End Function Public Function ExecuteDS(ByVal sql As String, ByRef tabela As String) As DataSet Dim ds As New DataSet Dim da As MySqlDataAdapter = New MySqlDataAdapter() Try OpenConnection() cmd.CommandType = CommandType.Text cmd.CommandText = sql cmd.Connection = Conexao da.SelectCommand = cmd da.Fill(ds, tabela) dt = ds.Tables(tabela) da.Dispose() Return ds Catch ex As Exception MsgBox(ex.Message) End Try Return ds End FunctionBom, tenho uma daqtaGridView ligada ao dataset ExecuteDS através de datasource para exibir os detalhes de pedidos no formulario de pedidos.Eu preciso: Pegar cada linha que esta na DataGridView e entrgar aos Fields da tabela detalhespedidos que esta na função ExecuteDSTEMP e depois fazer .datasource =Notthing e manter os dados na DataGridtview para o caso de editar os ítens. Tentei com o código abaixo mas não deu. O que eu faço? Public Sub entrega_item_item() For O As Integer = 0 To 0 = DGWPedidos.Rows.Count 'ds_itens_temp.Tables(0).Rows.Add() ds_itens_temp.Tables(0).Rows().Add(DGWPedidos.Rows(O).Cells(1).Value, DGWPedidos.Rows(O).Cells(1).Value, DGWPedidos.Rows(O).Cells(2).Value, DGWPedidos.Rows(O).Cells(3).Value, DGWPedidos.Rows(O).Cells(4).Value, DGWPedidos.Rows(O).Cells(5).Value, DGWPedidos.Rows(O).Cells(6).Value) Next End Sub Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 2, 2008 Deixa ver se entendi. Você quer alimentar os campos de um DataSet com os valores selecionados na grid. É isso? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 2, 2008 exatamente. ou então alimentar com os dr's que ja alimentaram a dataGridView. Pois depois disso, vou fazer .datasource=nothing e não posso perder os registros que estão na grid. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Dezembro 3, 2008 Bom irmão essa tambem ja matei. Pretendo depois que terminar esse projeto de vendas, postar um tutorial aqui para a tuma acompanhar e baixar. Bom, agora é o seguinte: Ainda na DataGridView, quando abro o form, na exibição de todos os pedidos, vemuma linha em branco no fim da grid. Quando eu zero a DataGridView para criar um novo pedido, quando eu insero o primeiro ítem do novo pedido na gridview, ja cria essa linha em branco. O que pode ser? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 3, 2008 Na sua query essa linha em branco existe? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites