ERRO AO SALVAR DADOS
Erro: Referência de objeto não definida para uma instância de um objeto.
Segue o código abaixo e o trecho do erro é esse: dt.DefaultView.Sort = [Ô]descricao[Ô]
Código do LOAD do form. Antes do LOAD defina como variáveis públicas:
Dim Conn As MySqlConnection
Dim cmd As MySqlCommand
Dim dt As DataTable
Dim CManager As CurrencyManager
Dim da As MySqlDataAdapter
Dim ds As DataSet
Dim c As New conexao [ô]A string de conexão eu já tenho feita em uma classe
Dim b As New BD
Dim mMarcador As Object
Dim mEstado As String
Private Sub frmCadObras_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
[ô]Carrega os dados
[ô]conecta com o banco de dados e abre a conexão
Try
Conn = New MySqlConnection(c.connString)
Conn.Open()
[ô]define um objeto command
cmd = New MySqlCommand([Ô]SELECT descricao,area,endereco,quadra,lote From obra[Ô], Conn)
[ô]define um dataAdapter
da = New MySqlDataAdapter()
da.SelectCommand = cmd
[ô]define e preenche um DataTable com os dados
Dim dt As New DataTable
da.Fill(dt)
[ô]txtCodigo.DataBindings.Add([Ô]Text[Ô], dt, [Ô]idObra[Ô])
txtDescricao.DataBindings.Add([Ô]Text[Ô], dt, [Ô]descricao[Ô])
txtArea.DataBindings.Add([Ô]Text[Ô], dt, [Ô]area[Ô])
txtEndereco.DataBindings.Add([Ô]Text[Ô], dt, [Ô]endereco[Ô])
txtQuadra.DataBindings.Add([Ô]Text[Ô], dt, [Ô]quadra[Ô])
txtLote.DataBindings.Add([Ô]Text[Ô], dt, [Ô]lote[Ô])
[ô]estabelece o currencyManager
CManager = DirectCast(BindingContext(dt), CurrencyManager)
Catch ex As Exception
MsgBox([Ô]Erro [Ô] & ex.Message, MsgBoxStyle.Critical, [Ô]Aviso[Ô])
Finally
Conn.Close()
End Try
definirEstado([Ô]Ver[Ô])
GroupBox1.Enabled = False
Private Sub btnNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNovo.Click
[ô]define a posicao atual do currencyManager
mMarcador = CManager.Position
[ô]define o estado no modo inclusão
Call definirEstado([Ô]Novo[Ô])
[ô]Adiciona
CManager.AddNew()
[ô]txtCodigo.Text = CManager.Count
[ô]define as propriedades
[ô]rdoMasculino.Checked = True : lblSexo.Text = [Ô]M[Ô]
[ô]rdoPrimeiro.Checked = True : lblGrau.Text = [Ô]1[Ô]
End Sub
Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click
Dim itemSalvo As String = txtDescricao.Text
Dim linhaSalva As Integer
[ô]encerra edição do CurrencyManager
CManager.EndCurrentEdit()
[ô]define o modo de exibição ordenado por Nome
[ô]O erro está na linha abaixo
dt.DefaultView.Sort = [Ô]descricao[Ô]
[ô]obtem o id da linha Salva
linhaSalva = dt.DefaultView.Find(itemSalvo)
CManager.Position = linhaSalva
If CManager.Position = CManager.Count - 1 Then
btnProximo.Enabled = False
btnUltimo.Enabled = False
End If
btnAnterior.Enabled = True
btnPrimeiro.Enabled = True
End Sub
Segue o código abaixo e o trecho do erro é esse: dt.DefaultView.Sort = [Ô]descricao[Ô]
Código do LOAD do form. Antes do LOAD defina como variáveis públicas:
Dim Conn As MySqlConnection
Dim cmd As MySqlCommand
Dim dt As DataTable
Dim CManager As CurrencyManager
Dim da As MySqlDataAdapter
Dim ds As DataSet
Dim c As New conexao [ô]A string de conexão eu já tenho feita em uma classe
Dim b As New BD
Dim mMarcador As Object
Dim mEstado As String
Private Sub frmCadObras_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
[ô]Carrega os dados
[ô]conecta com o banco de dados e abre a conexão
Try
Conn = New MySqlConnection(c.connString)
Conn.Open()
[ô]define um objeto command
cmd = New MySqlCommand([Ô]SELECT descricao,area,endereco,quadra,lote From obra[Ô], Conn)
[ô]define um dataAdapter
da = New MySqlDataAdapter()
da.SelectCommand = cmd
[ô]define e preenche um DataTable com os dados
Dim dt As New DataTable
da.Fill(dt)
[ô]txtCodigo.DataBindings.Add([Ô]Text[Ô], dt, [Ô]idObra[Ô])
txtDescricao.DataBindings.Add([Ô]Text[Ô], dt, [Ô]descricao[Ô])
txtArea.DataBindings.Add([Ô]Text[Ô], dt, [Ô]area[Ô])
txtEndereco.DataBindings.Add([Ô]Text[Ô], dt, [Ô]endereco[Ô])
txtQuadra.DataBindings.Add([Ô]Text[Ô], dt, [Ô]quadra[Ô])
txtLote.DataBindings.Add([Ô]Text[Ô], dt, [Ô]lote[Ô])
[ô]estabelece o currencyManager
CManager = DirectCast(BindingContext(dt), CurrencyManager)
Catch ex As Exception
MsgBox([Ô]Erro [Ô] & ex.Message, MsgBoxStyle.Critical, [Ô]Aviso[Ô])
Finally
Conn.Close()
End Try
definirEstado([Ô]Ver[Ô])
GroupBox1.Enabled = False
Private Sub btnNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNovo.Click
[ô]define a posicao atual do currencyManager
mMarcador = CManager.Position
[ô]define o estado no modo inclusão
Call definirEstado([Ô]Novo[Ô])
[ô]Adiciona
CManager.AddNew()
[ô]txtCodigo.Text = CManager.Count
[ô]define as propriedades
[ô]rdoMasculino.Checked = True : lblSexo.Text = [Ô]M[Ô]
[ô]rdoPrimeiro.Checked = True : lblGrau.Text = [Ô]1[Ô]
End Sub
Private Sub btnSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click
Dim itemSalvo As String = txtDescricao.Text
Dim linhaSalva As Integer
[ô]encerra edição do CurrencyManager
CManager.EndCurrentEdit()
[ô]define o modo de exibição ordenado por Nome
[ô]O erro está na linha abaixo
dt.DefaultView.Sort = [Ô]descricao[Ô]
[ô]obtem o id da linha Salva
linhaSalva = dt.DefaultView.Find(itemSalvo)
CManager.Position = linhaSalva
If CManager.Position = CManager.Count - 1 Then
btnProximo.Enabled = False
btnUltimo.Enabled = False
End If
btnAnterior.Enabled = True
btnPrimeiro.Enabled = True
End Sub
tente trocar :
Por :
[ô]define e preenche um DataTable com os dados
Dim dt As New DataTable
da.Fill(dt)
Por :
[ô]define e preenche um DataTable com os dados
dt = New DataTable
da.Fill(dt)
Agora não deu mais erro, mas não está salvando os dados. Eu acho que seria melhor eu usar um DataSet para salvar os dados.
Tópico encerrado , respostas não são mais permitidas