Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

valor Null e DBGrid

Recommended Posts

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: index
Quando 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

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 Sub
Quando 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

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,

 

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

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

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 Function
Bom, 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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.