ERRO AO SALVAR DADOS

MARCOSARANTESJ 28/07/2010 00:41:34
#348666
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
FOXMAN 28/07/2010 02:18:22
#348669
Resposta escolhida
tente trocar :

 [ô]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)
MARCOSARANTESJ 28/07/2010 09:29:04
#348683
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