none
Referência de objeto não definida para uma instância de um objeto. RRS feed

  • Pergunta

  • Olá galera sou estudante do visual basic 2008 e estou com o seguinte problema ao executar este código de uma apostila:

    Imports System.Data
    Imports System.Windows.Forms.Form
    Imports System.Data.OleDb
    Public Class Form1
        Dim cn As OleDbConnection
        Dim cmd As OleDbCommand
        Dim dr As OleDbDataReader

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                cn = New OleDbConnection("Provider=Microsoft.jet.OLEDB.4.0; Data Source = C:\Users\Inform\Documents\EMP.accdb;")
                cn.Open()
                cmd = New OleDbCommand("SElect *from alunos", cn)
                dr = cmd .ExecuteReader
                While dr.Read()
                    TextBox1.Text = dr(0)
                    TextBox2.Text = dr(1)
                    TextBox3.Text = dr(2)
                End While
                
            Catch
             
            End Try

            dr.Close()
            cn.Close()
        End Sub
    End Class
    Quando dou f5 aparece a janela com o botão e  os textboxs.

    Quando clico no botão para recuperar os dados da tabela aparece na linha "dr close()" o erro 

    "Referência de objeto não definida para uma instância de um objeto".

    Não estou conseguindo passar para frente nos estudos por isso.

    Peço a ajuda de todos


    terça-feira, 1 de outubro de 2013 01:00

Respostas

  • EstudanteVb,

    Tente dessa forma veja se resolve ou dá algum outro erro:

    Imports System.Data
    Imports System.Windows.Forms.Form
    Imports System.Data.OleDb
    Public Class Form1
        Dim cn As OleDbConnection
        Dim cmd As OleDbCommand
        Dim dr As OleDbDataReader

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                cn = New OleDbConnection("Provider=Microsoft.jet.OLEDB.4.0; Data Source = C:\Users\Inform\Documents\EMP.accdb;")
                cn.Open()
                cmd = New OleDbCommand("SElect * from alunos", cn)
                dr = cmd .ExecuteReader
                While dr.Read()
                    TextBox1.Text = dr(0)
                    TextBox2.Text = dr(1)
                    TextBox3.Text = dr(2)
                End While

            dr.Close()

                cn.Close()


            Catch

            End Try
            
        End Sub
    End Class


    Ricardo Minoru Makiyama


    • Editado RMinoru terça-feira, 1 de outubro de 2013 02:28
    • Marcado como Resposta EstudanteVb quarta-feira, 2 de outubro de 2013 09:37
    terça-feira, 1 de outubro de 2013 02:22
  • oi

    eu preferia o seguinte: comeca conforme codificaste, mas em vez só de catch poe assim:

    Catch ex as exception
    msg(ex.message)
    finnaly
    cn.close()
    end try
    end Class 

    qualquer coisa, volta a postar.

    obs: se acharas a meu post satisfatório, não esqyeca de marcar como resposta.


    "Abraão" - Apreciador de Programação "Senhor Jesus, ilumine o meu caminho..."


    terça-feira, 1 de outubro de 2013 12:41
  • Eu uso esse código:

    AbaAgenda_Compromissos_Connection = New ADODB.Connection     'conexao usando ADO
                    AbaAgenda_Compromissos_Connection.Open("Provider = MICROSOFT.JET.OLEDB.4.0;data Source= C:\Agenda\Arquivos Gerais\DataBase\Agenda.mdb ")
                    AbaAgenda_Compromissos_Recordset = New ADODB.Recordset
                    AbaAgenda_Compromissos_Recordset.Open("SELECT * from agenda ", AbaAgenda_Compromissos_Connection)

                    AbaAgenda_Compromissos_OleDbDataAdapter = New OleDbDataAdapter
                    AbaAgenda_Compromissos_DataSet = New DataSet
                    AbaAgenda_Compromissos_OleDbDataAdapter.Fill(AbaAgenda_Compromissos_DataSet, AbaAgenda_Compromissos_Recordset, "agenda")
                    DataGridView_AbaAgenda_Compromissos.DataSource = AbaAgenda_Compromissos_DataSet.Tables("agenda")

    Para passar o valor para um campo uso:

    i = DataGridView_AbaAgenda_Compromissos.CurrentRow.Index

    TextBox_AbaAgenda_DataDoCompromisso.Text = AbaAgenda_Compromissos_DataSet.Tables("agenda").Rows(i).Item(1).ToString

    • Marcado como Resposta EstudanteVb sexta-feira, 4 de outubro de 2013 21:37
    quinta-feira, 3 de outubro de 2013 14:58

Todas as Respostas

  • EstudanteVb,

    Tente dessa forma veja se resolve ou dá algum outro erro:

    Imports System.Data
    Imports System.Windows.Forms.Form
    Imports System.Data.OleDb
    Public Class Form1
        Dim cn As OleDbConnection
        Dim cmd As OleDbCommand
        Dim dr As OleDbDataReader

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                cn = New OleDbConnection("Provider=Microsoft.jet.OLEDB.4.0; Data Source = C:\Users\Inform\Documents\EMP.accdb;")
                cn.Open()
                cmd = New OleDbCommand("SElect * from alunos", cn)
                dr = cmd .ExecuteReader
                While dr.Read()
                    TextBox1.Text = dr(0)
                    TextBox2.Text = dr(1)
                    TextBox3.Text = dr(2)
                End While

            dr.Close()

                cn.Close()


            Catch

            End Try
            
        End Sub
    End Class


    Ricardo Minoru Makiyama


    • Editado RMinoru terça-feira, 1 de outubro de 2013 02:28
    • Marcado como Resposta EstudanteVb quarta-feira, 2 de outubro de 2013 09:37
    terça-feira, 1 de outubro de 2013 02:22
  • oi

    eu preferia o seguinte: comeca conforme codificaste, mas em vez só de catch poe assim:

    Catch ex as exception
    msg(ex.message)
    finnaly
    cn.close()
    end try
    end Class 

    qualquer coisa, volta a postar.

    obs: se acharas a meu post satisfatório, não esqyeca de marcar como resposta.


    "Abraão" - Apreciador de Programação "Senhor Jesus, ilumine o meu caminho..."


    terça-feira, 1 de outubro de 2013 12:41
  • Bom Fiz exatamente como me disseram e em todos ficou assim:

    Quando dou f5 abre a janela do formulário sem erros, porém nada acontece quando clico no botão 1.

    Permanece em branco.



    • Editado EstudanteVb quinta-feira, 3 de outubro de 2013 00:37
    quinta-feira, 3 de outubro de 2013 00:34
  • Eu uso esse código:

    AbaAgenda_Compromissos_Connection = New ADODB.Connection     'conexao usando ADO
                    AbaAgenda_Compromissos_Connection.Open("Provider = MICROSOFT.JET.OLEDB.4.0;data Source= C:\Agenda\Arquivos Gerais\DataBase\Agenda.mdb ")
                    AbaAgenda_Compromissos_Recordset = New ADODB.Recordset
                    AbaAgenda_Compromissos_Recordset.Open("SELECT * from agenda ", AbaAgenda_Compromissos_Connection)

                    AbaAgenda_Compromissos_OleDbDataAdapter = New OleDbDataAdapter
                    AbaAgenda_Compromissos_DataSet = New DataSet
                    AbaAgenda_Compromissos_OleDbDataAdapter.Fill(AbaAgenda_Compromissos_DataSet, AbaAgenda_Compromissos_Recordset, "agenda")
                    DataGridView_AbaAgenda_Compromissos.DataSource = AbaAgenda_Compromissos_DataSet.Tables("agenda")

    Para passar o valor para um campo uso:

    i = DataGridView_AbaAgenda_Compromissos.CurrentRow.Index

    TextBox_AbaAgenda_DataDoCompromisso.Text = AbaAgenda_Compromissos_DataSet.Tables("agenda").Rows(i).Item(1).ToString

    • Marcado como Resposta EstudanteVb sexta-feira, 4 de outubro de 2013 21:37
    quinta-feira, 3 de outubro de 2013 14:58
  • Olá amigo como faço a tabela do Access para este código. 
    sexta-feira, 4 de outubro de 2013 21:37