none
System.InvalidOperationException was unhandled RRS feed

  • Pergunta

  • Pessoal, boa tarde. Estou com essa exception, estava tudo normal e apareceu a poucas horas:

    System.InvalidOperationException was unhandled
      Message="Erro ao criar o formulário. Consulte Exception.InnerException para obter detalhes. O erro é: Referência de objeto não definida para uma instância de um objeto."
      Source="Produtos"
      StackTrace:
           em Produtos.My.MyProject.MyForms.Create__Instance__[T](T Instance) na 17d14f5c-a337-4978-8281-53493378c1071.vb:linha 190
           em Produtos.My.MyProject.MyForms.get_Produtos()
           em Produtos.My.MyApplication.OnCreateMainForm() na C:\Documents and Settings\Meus documentos\VB Projetos\Produtos\Produtos\My Project\Application.Designer.vb:linha 35
           em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
           em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
           em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
           em Produtos.My.MyApplication.Main(String[] Args) na 17d14f5c-a337-4978-8281-53493378c1071.vb:linha 81
           em System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
           em System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           em Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           em System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           em System.Threading.ThreadHelper.ThreadStart()
      InnerException: System.NullReferenceException
           Message="Referência de objeto não definida para uma instância de um objeto."
           Source="Produtos"
           StackTrace:
                em Produtos.Produtos..ctor() na C:\Documents and Settings\Meus documentos\VB Projetos\Produtos\Produtos\Produtos.vb:linha 7
           InnerException: 



    terça-feira, 5 de maio de 2015 18:47

Respostas

  • Então, encontrei onde estava o problema:

    Tinha criado uma variável pública sConnectionString dentro da class Produto:

    Public Class Produtos
    
        'Define a conexão com o banco de dados SQLite
        Public sConnectionString As String = "Data Source=" & TxbBanco.Text & ";Version=3;New=True;Compress=True;"
    
        'Conecta banco de dados SQLite
        Private Sub BtnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConectar.Click
    
        End Sub
    
    End Class

    Para resolver o problema eu tive que jogar sConnectionString dentro do evento Click do botão conectar:

    Public Class Produtos
    
        'Conecta banco de dados SQLite
        Private Sub BtnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConectar.Click
    
                   'Define a conexão com o banco de dados SQLite
                    Dim sConnectionString As String = Nothing
                    sConnectionString = "Data Source=" & TxbBanco.Text & ";Version=3;New=True;Compress=True;"
    
        End Sub
    
    End Class
    Porém gostaria de acessar sConnectionString de outras parte do código e não estou acertando onde criar.

    quarta-feira, 6 de maio de 2015 13:30
  • Acabei fazendo na correria, peço desculpas.

    Tente o seguinte:

    Public Class Produtos
    
        Public Shared sConnectionString As String
    
        'Conecta banco de dados SQLite
        Private Sub BtnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConectar.Click
                   'Define a conexão com o banco de dados SQLite
                    sConnectionString = "Data Source=" & TxbBanco.Text & ";Version=3;New=True;Compress=True;"
        End Sub
    
    End Class

    • Marcado como Resposta Marques Junior quarta-feira, 6 de maio de 2015 16:26
    quarta-feira, 6 de maio de 2015 14:51

Todas as Respostas

  • É possível que seu método get_Produtos não esteja retornando nenhum dado (uma lista vazia) ou aconteça algum erro na tentativa de acesso a uma tabela de Produtos.

    Tente debugar o código e analisar melhor o que está acontecendo utilizando a função Step Into (tecla F11).

    terça-feira, 5 de maio de 2015 19:38
  • Você instanciou o objeto (As New)?
    terça-feira, 5 de maio de 2015 19:39
  • Então, encontrei onde estava o problema:

    Tinha criado uma variável pública sConnectionString dentro da class Produto:

    Public Class Produtos
    
        'Define a conexão com o banco de dados SQLite
        Public sConnectionString As String = "Data Source=" & TxbBanco.Text & ";Version=3;New=True;Compress=True;"
    
        'Conecta banco de dados SQLite
        Private Sub BtnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConectar.Click
    
        End Sub
    
    End Class

    Para resolver o problema eu tive que jogar sConnectionString dentro do evento Click do botão conectar:

    Public Class Produtos
    
        'Conecta banco de dados SQLite
        Private Sub BtnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConectar.Click
    
                   'Define a conexão com o banco de dados SQLite
                    Dim sConnectionString As String = Nothing
                    sConnectionString = "Data Source=" & TxbBanco.Text & ";Version=3;New=True;Compress=True;"
    
        End Sub
    
    End Class
    Porém gostaria de acessar sConnectionString de outras parte do código e não estou acertando onde criar.

    quarta-feira, 6 de maio de 2015 13:30
  • Marques,

    Altere sua classe Produtos para que a propriedade que sConnectionString fique como Shared (assim outros tipos poderão acessar este valor, sem que se precise instanciar a classe produto):

    Public Class Produtos
    
        'Define a conexão com o banco de dados SQLite
        Public Shared sConnectionString As String = "Data Source=" & TxbBanco.Text & ";Version=3;New=True;Compress=True;"
    
        'Conecta banco de dados SQLite
        Private Sub BtnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConectar.Click
    
        End Sub
    
    End Class

    quarta-feira, 6 de maio de 2015 13:35
  • Renato, fico esse erro na TxbBanco.Text 

    Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.

    quarta-feira, 6 de maio de 2015 13:52
  • Acabei fazendo na correria, peço desculpas.

    Tente o seguinte:

    Public Class Produtos
    
        Public Shared sConnectionString As String
    
        'Conecta banco de dados SQLite
        Private Sub BtnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConectar.Click
                   'Define a conexão com o banco de dados SQLite
                    sConnectionString = "Data Source=" & TxbBanco.Text & ";Version=3;New=True;Compress=True;"
        End Sub
    
    End Class

    • Marcado como Resposta Marques Junior quarta-feira, 6 de maio de 2015 16:26
    quarta-feira, 6 de maio de 2015 14:51
  • Perfeito, isso mesmo. Obrigado.
    quarta-feira, 6 de maio de 2015 16:25