Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/03/2011, 12:49
TyraelMX
 
Fecha de Ingreso: julio-2006
Mensajes: 2
Antigüedad: 17 años, 9 meses
Puntos: 0
Pregunta Object reference not set to an instance of an object

Cita:
Quiza se les haga familiar el titulo, y quiza me manden al foro donde ya se resolvio, pero les comentare, ya lo lei y aun no logro solucionarlo, me lo tope en una clase que estoy haciendo, estoy ocupando VB 2010 y aun no lo corrijo, alguien puede apoyarme? es al momento de tratar de crear la conexion con la base de datos que contiene los archivos .dbf (recordemos que la base de datos es solo una carpeta)

Este es el codigo:



Código Clase VB 2010:
Ver original
  1. Imports System.Data
  2.  
  3. Public Class Connect_DataBase
  4.  
  5.     Public driver As String
  6.     Public database As System.Data.Odbc.OdbcConnection
  7.     'Public database As OleDb.OleDbConnection
  8.     Public status_message As String
  9.     Public select_string = "Select * from "
  10.  
  11.     Public Sub New(ByVal sPath As String)
  12.         driver = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & sPath & ";"
  13.         'driver = "Provider=Microsoft.Jet.OLED B.4.0;Data Source=" & sPath & "; Extended Properties=dBASE IV;"
  14.         'Dim connAs New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLED B.4.0;Data Source=C:\DB; Extended Properties=dBASE IV;")
  15.  
  16.         MessageBox.Show(driver)
  17.         Using database As New System.Data.Odbc.OdbcConnection(driver)
  18.             'Using database As New OleDb.OleDbConnection(driver)
  19.             Try
  20.                 Open()
  21.                 'Status = "Connected"
  22.             Catch ex As Exception
  23.                 MessageBox.Show("DataBase Not Found" & vbCrLf & "Select Another Path" & vbCrLf & ex.Message)
  24.                 'Status = "Error"
  25.             End Try
  26.         End Using
  27.     End Sub
  28.  
  29.     Public Property Status() As String
  30.         Get
  31.             Return status_message
  32.         End Get
  33.         Set(ByVal value As String)
  34.             MessageBox.Show("Llegando")
  35.             status_message = value
  36.         End Set
  37.     End Property
  38.  
  39.     Public Sub Open()
  40.         database.Open()
  41.     End Sub
  42.  
  43.     Public Sub Close()
  44.         database.Close()
  45.     End Sub
  46.  
  47.     Public Sub OpenTable(ByVal tableName As String)
  48.         Try
  49.             Dim data As New System.Data.Odbc.OdbcDataAdapter(select_string & tableName, database)
  50.             'Dim data As New OleDb.OleDbDataAdapter(select_string & tableName, database)
  51.         Catch ex As Exception
  52.             MessageBox.Show(ex.Message)
  53.         End Try
  54.     End Sub
  55.  
  56. End Class
Corregido, no se puede cambiar la instancia en un metodo cuando fue creada en otro, hay que enviarle por parametro el objeto correspondiente

Código Clase Corregida VB 2010:
Ver original
  1. Imports System.Data
  2.  
  3. Public Class Connect_DataBase
  4.  
  5.     Public driver As String
  6.     Public Shared database As System.Data.Odbc.OdbcConnection
  7.     Public status_message As String
  8.     Public select_string = "Select * from "
  9.  
  10.     Public Sub New(ByVal sPath As String)
  11.         driver = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & sPath & ";"
  12.         Using database As New System.Data.Odbc.OdbcConnection(driver)
  13.             Try
  14.                 Open(database)
  15.                 Status = "Connected"
  16.             Catch ex As Exception
  17.                 MessageBox.Show("DataBase Not Found" & vbCrLf & "Select Another Path")
  18.                 Status = "Error"
  19.             End Try
  20.         End Using
  21.     End Sub
  22.  
  23.     Public Property Status() As String
  24.         Get
  25.             Return status_message
  26.         End Get
  27.         Set(ByVal value As String)
  28.             status_message = value
  29.         End Set
  30.     End Property
  31.  
  32.     Public Sub Open(ByVal connection As System.Data.Odbc.OdbcConnection)
  33.         connection.Open()
  34.     End Sub
  35.  
  36.     Public Sub Close(ByVal connection As System.Data.Odbc.OdbcConnection)
  37.         connection.Close()
  38.     End Sub
  39.  
  40.     Public Sub OpenTable(ByVal tableName As String)
  41.         Try
  42.             Dim data As New System.Data.Odbc.OdbcDataAdapter(select_string & tableName, database)
  43.         Catch ex As Exception
  44.             MessageBox.Show(ex.Message)
  45.         End Try
  46.     End Sub
  47.  
  48. End Class

Este mensaje puede cerrarse para evitar futuras respuestas

Gracias por al menos leer mi duda

Última edición por TyraelMX; 22/03/2011 a las 16:01 Razón: Solución encontrada