INSERIR DADOS EM DATAGRID COM TABELA RELACIONADA
Boa tarde Galera,
Gostaria da colaboração de vocês para que eu resolva uma pendencia que surgiu no meu projeto.
Estou iniciando no VB e estou fazendo um programa para inserir produtos que foram inspecionados em determinada ordem de inspeção
Montei meu cabeçalho conforme o necessario em uma tabela que chamei de tb_cabecalho e posteriormente criei outra tabela que chamei de tb_detalha_cabecalho onde vai conter meu detalhamento de produtos. Criei o banco no access (.mdb)
Fiz o relacionamento delas tudo certinho.
O que acontece... Eu não consigo fazer um grid que insira dados referente aquele cabeçalho e tambem não consigo pesquisar o cabeçalho e trazer o detalhamento correspondente no grid..
Já tentei de diversas formas, li e re-li um monte de foruns mas não consigo resolver esse problema.
Consigo inserir dados do cabeçalho no banco, porem não consigo montar o grid para que insira dados referente aquele cabeçalho. O ponto maximo que eu consegui chegar foi criar um grid que mostrava os valores, porem ele trazia todos os valores de todos os cabeçalhos...
Gostaria da ajuda de vcs...
Gostaria da colaboração de vocês para que eu resolva uma pendencia que surgiu no meu projeto.
Estou iniciando no VB e estou fazendo um programa para inserir produtos que foram inspecionados em determinada ordem de inspeção
Montei meu cabeçalho conforme o necessario em uma tabela que chamei de tb_cabecalho e posteriormente criei outra tabela que chamei de tb_detalha_cabecalho onde vai conter meu detalhamento de produtos. Criei o banco no access (.mdb)
Fiz o relacionamento delas tudo certinho.
O que acontece... Eu não consigo fazer um grid que insira dados referente aquele cabeçalho e tambem não consigo pesquisar o cabeçalho e trazer o detalhamento correspondente no grid..
Já tentei de diversas formas, li e re-li um monte de foruns mas não consigo resolver esse problema.
Consigo inserir dados do cabeçalho no banco, porem não consigo montar o grid para que insira dados referente aquele cabeçalho. O ponto maximo que eu consegui chegar foi criar um grid que mostrava os valores, porem ele trazia todos os valores de todos os cabeçalhos...
Gostaria da ajuda de vcs...
Poste o que conseguiu fazer no tópico e o [Ô]ponto exato[Ô] em que está com dúvidas.
Boa noite amigo. Isso é o que consegui até agora... Me desculpe caso o código esteja poluido, mas estou iniciando agora no VB.NET
Consigo buscar os cabeçalhos... Porem o Datagrid que eu monto esta trazendo todos os dados, não somente o que é referente ao cabeçalho selecionado...
Agradeço desde já pelo apoio.
Imports System.Data.OleDb
Public Class lancamento_ri
Public sComando As String
Public scodigoAux As String
Dim dtsset As DataSet
Dim AccessTeste As OleDbConnection
Dim dtaadap As OleDbDataAdapter
Dim oledbCmdBuilder As OleDbCommandBuilder
Private Sub Limpar()
TB_ri_cod.Clear()
TB_ri_op.Clear()
CB_lanc_ri_laudo.Text = [Ô][Ô]
CB_lanc_ri_produto.Text = [Ô][Ô]
MTB_ri_data.Clear()
End Sub
Private Sub ControlaBotoes(ByVal Controle As Boolean)
BT_lanc_ri_gravar.Enabled = Controle
BT_lanc_ri_sair.Enabled = Controle
BT_lanc_ri_alter.Enabled = Not Controle
BT_lanc_ri_novo.Enabled = Not Controle
BT_lanc_ri_pesq.Enabled = Not Controle
End Sub
Public Sub carregaGrid()
Dim con As String = ([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\cq.mdb[Ô]) [ô]CBDW.accdb
AccessTeste = New OleDbConnection(con)
AccessTeste.Open()
[ô]OleDbDataAdapter tem que ser declarado ao nivel da classe e nao do metodo. tem que ser global
dtaadap = New OleDbDataAdapter([Ô]select * From tb_ri_lote[Ô], AccessTeste)
[ô]Necessário para salvar alterações na Grid
oledbCmdBuilder = New OleDbCommandBuilder(dtaadap)
dtsset = New DataSet
dtaadap.Fill(dtsset)
Me.DataGridView1.DataSource = dtsset.Tables(0)
[ô]Me.DataGridView1.DataMember = [Ô]marca[Ô]
End Sub
Public Function VerificaPendentesGrid() As Boolean
Dim LinhasModificadas As Integer = 0
Dim LinhasAdicionadas As Integer = 0
Dim LinhasDeletadas As Integer = 0
LinhasDeletadas = dtsset.Tables(0).Select([Ô][Ô], [Ô][Ô], DataViewRowState.Deleted).Length
LinhasAdicionadas = dtsset.Tables(0).Select([Ô][Ô], [Ô][Ô], DataViewRowState.Added).Length
LinhasModificadas = dtsset.Tables(0).Select([Ô][Ô], [Ô][Ô], DataViewRowState.ModifiedCurrent).Length
If (LinhasModificadas > 0 Or LinhasAdicionadas > 0 Or LinhasDeletadas > 0) Then
Return True
Else
Return False
End If
End Function
Private Sub lancamento_ri_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
[ô]TODO: This line of code loads data into the [ô]DataSet_Laudo.tb_laudo[ô] table. You can move, or remove it, as needed.
Me.Tb_laudoTableAdapter.Fill(Me.DataSet_Laudo.tb_laudo)
[ô]TODO: This line of code loads data into the [ô]DataSet_Produto.tb_produto[ô] table. You can move, or remove it, as needed.
Me.Tb_produtoTableAdapter.Fill(Me.DataSet_Produto.tb_produto)
[ô]TODO: This line of code loads data into the [ô]DataSet_Relac_Ri_Lote.tb_ri[ô] table. You can move, or remove it, as needed.
Me.Tb_riTableAdapter.Fill(Me.DataSet_Relac_Ri_Lote.tb_ri)
[ô]TODO: This line of code loads data into the [ô]DataSet_Relac_Ri_Lote.tb_ri_lote[ô] table. You can move, or remove it, as needed.
Me.Tb_ri_loteTableAdapter.Fill(Me.DataSet_Relac_Ri_Lote.tb_ri_lote)
CB_lanc_ri_laudo.Enabled = False
CB_lanc_ri_produto.Enabled = False
TB_ri_cod.Enabled = False
TB_ri_op.Enabled = False
MTB_ri_data.Enabled = False
[ô]GroupBox2.Enabled = False
BT_lanc_ri_gravar.Enabled = False
carregaGrid()
End Sub
Private Sub BT_lanc_ri_novo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lanc_ri_novo.Click
sComando = [Ô]inserir[Ô]
[ô]TB_ri_cod.Enabled = True
TB_ri_op.Enabled = True
CB_lanc_ri_laudo.Enabled = True
CB_lanc_ri_produto.Enabled = True
MTB_ri_data.Enabled = True
ControlaBotoes(True)
Limpar()
Dim conn As New OleDbConnection()
conn.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\cq.mdb[Ô]
Dim cmd As OleDbCommand = conn.CreateCommand
cmd.CommandText = [Ô]select max(cod_ri) + 1 from tb_ri[Ô]
conn.Open()
Dim dbR As OleDbDataReader = cmd.ExecuteReader()
If dbR.Read() Then
TB_ri_cod.Text = dbR(0).ToString.PadLeft(5, [Ô]0[Ô])
End If
End Sub
Private Sub BT_lanc_ri_sair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lanc_ri_sair.Click
Close()
End Sub
Private Sub BT_lanc_ri_gravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lanc_ri_gravar.Click
Dim conn As New OleDbConnection()
conn.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\cq.mdb[Ô]
Dim cmd As OleDbCommand = conn.CreateCommand
cmd.CommandText = [Ô]select tb_produto.cod_produto, tb_produto.descricao_produto FROM (tb_produto)where tb_produto.descricao_produto=[ô][Ô] & CB_lanc_ri_produto.Text & [Ô][ô][Ô]
conn.Open()
Dim variavel As OleDbDataReader = cmd.ExecuteReader()
[ô]Dim recebe_valor As String
If variavel.Read() Then
Label3.Text = variavel(0).ToString
End If
conn.Close()
MTB_ri_data.Text.ToString.PadLeft(10, [Ô]0[Ô])
If TB_ri_op.Text = [Ô][Ô] Then
MessageBox.Show([Ô]Digite a OP[Ô], [Ô]Atenção![Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
TB_ri_op.Focus()
Return
ElseIf CB_lanc_ri_produto.Text = [Ô][Ô] Then
MessageBox.Show([Ô]Selecione o produto[Ô], [Ô]Atenção![Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
CB_lanc_ri_produto.Focus()
Return
ElseIf CB_lanc_ri_laudo.Text = [Ô][Ô] Then
MessageBox.Show([Ô]Selecione o laudo[Ô], [Ô]Atenção![Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
CB_lanc_ri_laudo.Focus()
Return
ElseIf MTB_ri_data.Text = [Ô][Ô] Then
MessageBox.Show([Ô]Informe a data[Ô], [Ô]Atenção![Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
MTB_ri_data.Focus()
Return
End If
If sComando = [Ô]inserir[Ô] Then
cmd.CommandText = [Ô]Insert into tb_ri (cod_ri, cod_produto, ordem_producao, data_producao, laudo ) [Ô] & _
[Ô]Values ([ô][Ô] & TB_ri_cod.Text & [Ô][ô],[ô][Ô] & Label3.Text & [Ô][ô],[ô][Ô] & TB_ri_op.Text & [Ô][ô],[ô][Ô] & MTB_ri_data.Text & [Ô][ô],[ô][Ô] & CB_lanc_ri_laudo.Text & [Ô][ô])[Ô]
ElseIf sComando = [Ô]alterar[Ô] Then
cmd.CommandText = [Ô]update tb_ri set ordem_producao=[ô][Ô] & TB_ri_op.Text & [Ô][ô], cod_produto=[ô][Ô] & Label3.Text & [Ô][ô], data_producao=[ô][Ô] & MTB_ri_data.Text & [Ô][ô], laudo=[ô][Ô] & CB_lanc_ri_laudo.Text & [Ô][ô][Ô] & _
[Ô]where cod_ri=[ô][Ô] & TB_ri_cod.Text & [Ô][ô][Ô]
End If
Try
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
Catch erro As Exception
MsgBox([Ô]Erro [Ô] & vbCrLf & erro.ToString, MsgBoxStyle.Critical, [Ô]Erro[Ô])
End Try
ControlaBotoes(False)
BT_lanc_ri_sair.Enabled = True
sComando = [Ô][Ô]
TB_ri_op.Enabled = False
MTB_ri_data.Enabled = False
CB_lanc_ri_laudo.Enabled = False
CB_lanc_ri_produto.Enabled = False
GroupBox2.Enabled = True
End Sub
Private Sub BT_lanc_ri_pesq_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lanc_ri_pesq.Click
pesquisa_ri.Show()
End Sub
Private Sub BT_lanc_ri_alter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lanc_ri_alter.Click
ControlaBotoes(True)
sComando = [Ô]alterar[Ô]
CB_lanc_ri_laudo.Enabled = True
MTB_ri_data.Enabled = True
End Sub
Private Sub lancamento_ri_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
Dim result As DialogResult
If (VerificaPendentesGrid() = True) Then
result = MessageBox.Show([Ô]Existem registos pendentes, pretendes gravá-los?[Ô], [Ô]Grid[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If (result = DialogResult.Yes) Then
dtaadap.Update(dtsset.Tables(0))
End If
End If
End Sub
End Class
Consigo buscar os cabeçalhos... Porem o Datagrid que eu monto esta trazendo todos os dados, não somente o que é referente ao cabeçalho selecionado...
Agradeço desde já pelo apoio.
Imports System.Data.OleDb
Public Class lancamento_ri
Public sComando As String
Public scodigoAux As String
Dim dtsset As DataSet
Dim AccessTeste As OleDbConnection
Dim dtaadap As OleDbDataAdapter
Dim oledbCmdBuilder As OleDbCommandBuilder
Private Sub Limpar()
TB_ri_cod.Clear()
TB_ri_op.Clear()
CB_lanc_ri_laudo.Text = [Ô][Ô]
CB_lanc_ri_produto.Text = [Ô][Ô]
MTB_ri_data.Clear()
End Sub
Private Sub ControlaBotoes(ByVal Controle As Boolean)
BT_lanc_ri_gravar.Enabled = Controle
BT_lanc_ri_sair.Enabled = Controle
BT_lanc_ri_alter.Enabled = Not Controle
BT_lanc_ri_novo.Enabled = Not Controle
BT_lanc_ri_pesq.Enabled = Not Controle
End Sub
Public Sub carregaGrid()
Dim con As String = ([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\cq.mdb[Ô]) [ô]CBDW.accdb
AccessTeste = New OleDbConnection(con)
AccessTeste.Open()
[ô]OleDbDataAdapter tem que ser declarado ao nivel da classe e nao do metodo. tem que ser global
dtaadap = New OleDbDataAdapter([Ô]select * From tb_ri_lote[Ô], AccessTeste)
[ô]Necessário para salvar alterações na Grid
oledbCmdBuilder = New OleDbCommandBuilder(dtaadap)
dtsset = New DataSet
dtaadap.Fill(dtsset)
Me.DataGridView1.DataSource = dtsset.Tables(0)
[ô]Me.DataGridView1.DataMember = [Ô]marca[Ô]
End Sub
Public Function VerificaPendentesGrid() As Boolean
Dim LinhasModificadas As Integer = 0
Dim LinhasAdicionadas As Integer = 0
Dim LinhasDeletadas As Integer = 0
LinhasDeletadas = dtsset.Tables(0).Select([Ô][Ô], [Ô][Ô], DataViewRowState.Deleted).Length
LinhasAdicionadas = dtsset.Tables(0).Select([Ô][Ô], [Ô][Ô], DataViewRowState.Added).Length
LinhasModificadas = dtsset.Tables(0).Select([Ô][Ô], [Ô][Ô], DataViewRowState.ModifiedCurrent).Length
If (LinhasModificadas > 0 Or LinhasAdicionadas > 0 Or LinhasDeletadas > 0) Then
Return True
Else
Return False
End If
End Function
Private Sub lancamento_ri_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
[ô]TODO: This line of code loads data into the [ô]DataSet_Laudo.tb_laudo[ô] table. You can move, or remove it, as needed.
Me.Tb_laudoTableAdapter.Fill(Me.DataSet_Laudo.tb_laudo)
[ô]TODO: This line of code loads data into the [ô]DataSet_Produto.tb_produto[ô] table. You can move, or remove it, as needed.
Me.Tb_produtoTableAdapter.Fill(Me.DataSet_Produto.tb_produto)
[ô]TODO: This line of code loads data into the [ô]DataSet_Relac_Ri_Lote.tb_ri[ô] table. You can move, or remove it, as needed.
Me.Tb_riTableAdapter.Fill(Me.DataSet_Relac_Ri_Lote.tb_ri)
[ô]TODO: This line of code loads data into the [ô]DataSet_Relac_Ri_Lote.tb_ri_lote[ô] table. You can move, or remove it, as needed.
Me.Tb_ri_loteTableAdapter.Fill(Me.DataSet_Relac_Ri_Lote.tb_ri_lote)
CB_lanc_ri_laudo.Enabled = False
CB_lanc_ri_produto.Enabled = False
TB_ri_cod.Enabled = False
TB_ri_op.Enabled = False
MTB_ri_data.Enabled = False
[ô]GroupBox2.Enabled = False
BT_lanc_ri_gravar.Enabled = False
carregaGrid()
End Sub
Private Sub BT_lanc_ri_novo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lanc_ri_novo.Click
sComando = [Ô]inserir[Ô]
[ô]TB_ri_cod.Enabled = True
TB_ri_op.Enabled = True
CB_lanc_ri_laudo.Enabled = True
CB_lanc_ri_produto.Enabled = True
MTB_ri_data.Enabled = True
ControlaBotoes(True)
Limpar()
Dim conn As New OleDbConnection()
conn.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\cq.mdb[Ô]
Dim cmd As OleDbCommand = conn.CreateCommand
cmd.CommandText = [Ô]select max(cod_ri) + 1 from tb_ri[Ô]
conn.Open()
Dim dbR As OleDbDataReader = cmd.ExecuteReader()
If dbR.Read() Then
TB_ri_cod.Text = dbR(0).ToString.PadLeft(5, [Ô]0[Ô])
End If
End Sub
Private Sub BT_lanc_ri_sair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lanc_ri_sair.Click
Close()
End Sub
Private Sub BT_lanc_ri_gravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lanc_ri_gravar.Click
Dim conn As New OleDbConnection()
conn.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\cq.mdb[Ô]
Dim cmd As OleDbCommand = conn.CreateCommand
cmd.CommandText = [Ô]select tb_produto.cod_produto, tb_produto.descricao_produto FROM (tb_produto)where tb_produto.descricao_produto=[ô][Ô] & CB_lanc_ri_produto.Text & [Ô][ô][Ô]
conn.Open()
Dim variavel As OleDbDataReader = cmd.ExecuteReader()
[ô]Dim recebe_valor As String
If variavel.Read() Then
Label3.Text = variavel(0).ToString
End If
conn.Close()
MTB_ri_data.Text.ToString.PadLeft(10, [Ô]0[Ô])
If TB_ri_op.Text = [Ô][Ô] Then
MessageBox.Show([Ô]Digite a OP[Ô], [Ô]Atenção![Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
TB_ri_op.Focus()
Return
ElseIf CB_lanc_ri_produto.Text = [Ô][Ô] Then
MessageBox.Show([Ô]Selecione o produto[Ô], [Ô]Atenção![Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
CB_lanc_ri_produto.Focus()
Return
ElseIf CB_lanc_ri_laudo.Text = [Ô][Ô] Then
MessageBox.Show([Ô]Selecione o laudo[Ô], [Ô]Atenção![Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
CB_lanc_ri_laudo.Focus()
Return
ElseIf MTB_ri_data.Text = [Ô][Ô] Then
MessageBox.Show([Ô]Informe a data[Ô], [Ô]Atenção![Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
MTB_ri_data.Focus()
Return
End If
If sComando = [Ô]inserir[Ô] Then
cmd.CommandText = [Ô]Insert into tb_ri (cod_ri, cod_produto, ordem_producao, data_producao, laudo ) [Ô] & _
[Ô]Values ([ô][Ô] & TB_ri_cod.Text & [Ô][ô],[ô][Ô] & Label3.Text & [Ô][ô],[ô][Ô] & TB_ri_op.Text & [Ô][ô],[ô][Ô] & MTB_ri_data.Text & [Ô][ô],[ô][Ô] & CB_lanc_ri_laudo.Text & [Ô][ô])[Ô]
ElseIf sComando = [Ô]alterar[Ô] Then
cmd.CommandText = [Ô]update tb_ri set ordem_producao=[ô][Ô] & TB_ri_op.Text & [Ô][ô], cod_produto=[ô][Ô] & Label3.Text & [Ô][ô], data_producao=[ô][Ô] & MTB_ri_data.Text & [Ô][ô], laudo=[ô][Ô] & CB_lanc_ri_laudo.Text & [Ô][ô][Ô] & _
[Ô]where cod_ri=[ô][Ô] & TB_ri_cod.Text & [Ô][ô][Ô]
End If
Try
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
Catch erro As Exception
MsgBox([Ô]Erro [Ô] & vbCrLf & erro.ToString, MsgBoxStyle.Critical, [Ô]Erro[Ô])
End Try
ControlaBotoes(False)
BT_lanc_ri_sair.Enabled = True
sComando = [Ô][Ô]
TB_ri_op.Enabled = False
MTB_ri_data.Enabled = False
CB_lanc_ri_laudo.Enabled = False
CB_lanc_ri_produto.Enabled = False
GroupBox2.Enabled = True
End Sub
Private Sub BT_lanc_ri_pesq_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lanc_ri_pesq.Click
pesquisa_ri.Show()
End Sub
Private Sub BT_lanc_ri_alter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_lanc_ri_alter.Click
ControlaBotoes(True)
sComando = [Ô]alterar[Ô]
CB_lanc_ri_laudo.Enabled = True
MTB_ri_data.Enabled = True
End Sub
Private Sub lancamento_ri_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
Dim result As DialogResult
If (VerificaPendentesGrid() = True) Then
result = MessageBox.Show([Ô]Existem registos pendentes, pretendes gravá-los?[Ô], [Ô]Grid[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If (result = DialogResult.Yes) Then
dtaadap.Update(dtsset.Tables(0))
End If
End If
End Sub
End Class
Galera, acertei o codigo, agora ele ta trazendo de acordo com o codigo do cabeçalho... só que não to conseguindo fazer gravar as alterações:
Public Sub carregaGrid()
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim myConnectionString As String = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\cq.mdb[Ô]
Dim connection As New OleDbConnection(myConnectionString)
Dim query As String = [Ô]SELECT cod_ri, lote_ri, peso_ri FROM tb_ri_lote WHERE cod_ri = [ô][Ô] & TB_ri_cod.Text & [Ô][ô][Ô]
da = New OleDbDataAdapter(query, connection)
ds = New DataSet
da.Fill(ds, [Ô]rilancadas[Ô])
Me.DataGridView1.DataSource = ds.Tables([Ô]rilancadas[Ô])
connection = Nothing
End Sub
Public Sub carregaGrid()
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim myConnectionString As String = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\cq.mdb[Ô]
Dim connection As New OleDbConnection(myConnectionString)
Dim query As String = [Ô]SELECT cod_ri, lote_ri, peso_ri FROM tb_ri_lote WHERE cod_ri = [ô][Ô] & TB_ri_cod.Text & [Ô][ô][Ô]
da = New OleDbDataAdapter(query, connection)
ds = New DataSet
da.Fill(ds, [Ô]rilancadas[Ô])
Me.DataGridView1.DataSource = ds.Tables([Ô]rilancadas[Ô])
connection = Nothing
End Sub
Tópico encerrado , respostas não são mais permitidas