Avatar billede nannami Nybegynder
19. februar 2005 - 15:08 Der er 7 kommentarer og
1 løsning

Object reference not set to an instance of an object.

Hej, jeg må lige have lidt hjælp til denne her. Hvad er normalt årsagen til fejlmeddelelsen

"Object reference not set to an instance of an object. " ?

Jeg er ved at fylde en listboks  Sub Page_Load()

      Dim strConn As String
      Dim objConn As OleDbConnection
      Dim objComm As OleDbCommand
      Dim objDataReader As OleDbDataReader 

          OpenDB("db")

          if not Page.ispostback Then
              objConn.Open()
              Fyld_Listboks1
              Lst.SelectedIndex = "0"
              objConn.Close()
          end if
      End Sub

Og den melder allerede fejl ved "objConn.Open()"
Kan de være fordi jeg blander code behind og inline code sammen.
Jeg er nemlig ved at eksperimentere med code behind og bruger en Public Sub min .vb-fil til at åbne min database med...

Takker.
Avatar billede driis Nybegynder
19. februar 2005 - 15:18 #1
Jeg går ud fra at
OpenDB("db")

Skal åbne DB'en. Den bør så returnere et åbent OleDbConnection objekt.

Din nuværende kode fejler fordi objConn aldrig får tildelt en værdi og derfor er null.
Avatar billede driis Nybegynder
19. februar 2005 - 15:19 #2
F.eks.

      Dim strConn As String
      Dim objConn As OleDbConnection
      Dim objComm As OleDbCommand
      Dim objDataReader As OleDbDataReader

          objConn = OpenDB("db")

          if not Page.ispostback Then
              objConn.Open()
              Fyld_Listboks1
              Lst.SelectedIndex = "0"
              objConn.Close()
          end if
      End Sub

Så skal du lave din OpenDB om til en funktion der returnerer en åbnet OleDBConnection.
Avatar billede nannami Nybegynder
19. februar 2005 - 15:30 #3
Det jeg plejer at skrive i stedet for at bruge OpenDB("db") er

strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.Mappath("db.mdb") & ";"
objConn = New OleDbConnection(strConn)

Den funktion jeg bruger i min code behind hedder:

Public Sub OpenDB(databasename)
     
DBSti = ConfigurationSettings.AppSettings("databasepath") &  databasename & ".mdb"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;"
strConn += "Data Source=" & DBSti
ObjConn = new OledbConnection(strConn)
objConn.Open()
           
End Sub

Hvad er det jeg gør forkert når jeg bruger OpenDB frem for at skrive de 2 linier?
Avatar billede jaffafo Nybegynder
19. februar 2005 - 16:34 #4
Hej

Dig må jeg kende da jeg har set den kode før ;)

men ellers.. hvorfor bruge objConn.Open() når der allerede er en connection?

Du åbner jo en connection så snart du skriver openDB("db")

så prøv dette:

      Dim strConn As String
      Dim objConn As OleDbConnection
      Dim objComm As OleDbCommand
      Dim objDataReader As OleDbDataReader 

          OpenDB("db")

          if not Page.ispostback Then
              Fyld_Listboks1
              Lst.SelectedIndex = "0"
          end if
      End Sub
Avatar billede softspot Forsker
19. februar 2005 - 18:54 #5
Kan du ikke prøve at vise lidt mere kode og gerne i hele rutiner. Det er lidt svært at være sikker på hvor problemet ligger, når man ikke præcis kan se hvad det er du har lavet.

Umiddelbart ser det ud til at objConn er et lokalt objekt i Page_Load-rutinen og det kan OpenDB ikke få fat i, derfor vil den variabel ikke blive sat med mindre du gør som driis foreslår, men som sagt sikre svar hvis man må se lidt mere... :)
Avatar billede nannami Nybegynder
20. februar 2005 - 16:59 #6
Jeg har fået det løst ind til videre, ved at fjerne objConn.Open()
Men jeg vender tilbage hvis det driller igen :-)

I kan bare lægge svar og dele pointse :-)
Avatar billede jaffafo Nybegynder
20. februar 2005 - 22:21 #7
svar ;)
Avatar billede nannami Nybegynder
23. februar 2005 - 01:54 #8
In memory of OHP og LW.. ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester