Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola, eu outra vez :)
Agora eu estou com problema na hora de alterar algum dado, é o seguinte:
Quando eu faço a alteração da o erro: No data exists for the row/column, mas isso só acontece no campo nome os outros eu consigo fazer a alteração normalmente.
Depois quando eu abro minha aplicação novamente o campo nome aparece alterado. Fiz o debug e me parece que o erro tem alguma relação com o carregamento do grid.
Funciona assim: Quando eu clico em um contato no grid o mesmo é carregado para o formulario, o erro acontece na hora de carregar os campos no formulario.
Código para carregar os campos.
Private Sub carrCampos()
Dim conexao As New OleDbConnection
Dim comando As New OleDbCommand
Dim leitor As OleDbDataReader
'Dim da As OleDbDataAdapter = New OleDbDataAdapter
'Dim ds As DataSet = New DataSet
conexao.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=G:\Curso_VB.Net\Projetos\Agenda\Agenda\BD_Agenda.accdb"
conexao.Open()
comando.CommandText = "Select * From TB_Ctto Where Nome = '" & dgvContato.CurrentRow.Cells(0).Value & "'"
comando.CommandType = CommandType.Text
comando.Connection = conexao
leitor = comando.ExecuteReader
leitor.Read()
txtNome.Text = leitor("Nome")
txtEmail.Text = leitor("Email")
mskTelCel.Text = leitor("Tel_Cel")
mskTelRes.Text = leitor("Tel_Res")
cbxReferencia.Text = leitor("Referencia")
cbxSexo.Text = leitor("Sexo")
dtpCad.Value = leitor("Dt_Cad")
dtpNasc.Value = leitor("Dt_Nasc")
codCtto = leitor("Cod_Ctto")
leitor.Close()
conexao.Close()
End Sub
Código para a alteração:
Dim conexao As New OleDbConnection
Dim comando As New OleDbCommand
Dim cmdNonQuey As Integer
conexao.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=G:\Curso_VB.Net\Projetos\Agenda\Agenda\BD_Agenda.accdb"
conexao.Open()
comando.CommandText = "Update TB_Ctto Set Nome = '" & txtNome.Text & "' ," & _
"Tel_Res = '" & mskTelRes.Text & "' ," & _
"Tel_Cel = '" & mskTelCel.Text & "' ," & _
"Dt_Nasc = '" & dtpNasc.Text & "' ," & _
"Dt_Cad = '" & dtpCad.Text & "' ," & _
"Referencia = '" & cbxReferencia.Text & "' ," & _
"Sexo = '" & cbxSexo.Text & "' ," & _
"Email = '" & txtEmail.Text & "' " & _
"Where Cod_Ctto = " & codCtto
comando.CommandType = CommandType.Text
comando.Connection = conexao
Try
cmdNonQuey = comando.ExecuteNonQuery
Catch ex As Exception
MessageBox.Show("Erro ao salvar dados no Banco de Dados: " & ex.Message)
Return
End Try
MessageBox.Show(String.Format("Dados salvos com sucesso! - {0} Registros atualizados.", cmdNonQuey))
carrGrid()
conexao.Close()
Código de carregamento do grid.
Private Sub carrGrid()
'Variavel de conexão com o BD
Dim conexao As New OleDbConnection
'Criando um DataAdapter
Dim da As OleDbDataAdapter = New OleDbDataAdapter
'Criando um DataSet
Dim ds As DataSet = New DataSet
'String de conexão com o BD
conexao.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=G:\Curso_VB.Net\Projetos\Agenda\Agenda\BD_Agenda.accdb"
'Atribuindo ao meu DataAdapter meu comando SQL e minha conexão
da.SelectCommand = New OleDbCommand("Select Nome, Tel_Res, Tel_Cel, Referencia From TB_Ctto Order By Nome", conexao)
'Meu DataAdapter conecta com o BD, abre e fecha a conexão e executa o comando
da.Fill(ds, "TB_Ctto")
'Carregando para o meu Grid os dados selecionados da minha tabela com o comando
dgvContato.DataSource = ds.Tables("TB_Ctto")
'Alterando o cabeçalho do Grid
dgvContato.Columns(0).HeaderText = "Nome"
dgvContato.Columns(1).HeaderText = "Tel Residencial"
dgvContato.Columns(2).HeaderText = "Celular"
dgvContato.Columns(3).HeaderText = "Referencia"
End SubCarregando comentários...