Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 294
  • Last Modified:

Object Reference not set to an instance of an object

Hi All,
I am in .NET 2003

I have a form and a toolbar on the form.
When the user clicks on a button on the toolbar I call
the following Sub

I get a crash on the last line:   tlbSearch.Buttons(0).Enabled = True                         ' Enable search

An unhandled exception of type "System.NullreferenceExecption" occured   etc.....
Object Reference not set to an instance of an object

How can this be?, near the stop of the Sub  I execute:   tlbSearch.Buttons(0).Enabled = False                  ' Disable search
with no problem. What could have happended  to the toolbar object?

I am new to objects, I come from a VB background.

Thanks in Advance,

Larry

 

Public Sub DoTheSearch()

   Dim intDX As Integer
   Dim Structures As New clsStructures
   Dim clsMiscProjMulti As New MiscProjectMultiTable_Handler(Permissions.ConnectionString)
   Dim SearchDataReader As SqlClient.SqlDataReader
   Dim blnWhere As Boolean = False
   Dim TheRetrievalType As RetrievalType
   Dim NotFoundMsg As String

   Dim strSelectString = "SELECT  ProjectID,Reg,Fee,Title," & _
                                  "MiscFeeTypeID," & _
                                  "Fee, Quarter, [Year],MiscProjectStatusID," & _
                                  "StatusDate,Miscellaneous_Project.Account_ID,FinalizedDate," & _
                                  "ContactEmployeeID,ContactEmail," & _
                                  "Unex_Employee.EmpFirstName + ' ' +  Unex_Employee.EmpLastName As EmpName," & _
                                  "Account.Exp_Account + '-' +  Account.Cost_Center As ExpAcctCC " & _
                          "FROM   Miscellaneous_Project " & _
                                  "Left Outer Join Unex_Employee " & _
                                  "On  Miscellaneous_Project.ContactEmployeeID = Unex_Employee.EmployeeID " & _
                                  "Left Outer Join Account " & _
                                  "On Miscellaneous_Project.Account_ID = Account.Account_ID "
   '----------

   Me.Cursor = System.Windows.Forms.Cursors.WaitCursor()
   
   tlbSearch.Buttons(0).Enabled = False                        ' Disable search - this is ok.
   menuSearch.Enabled = False

   tlbSearch.Buttons(1).Enabled = True                         ' Enable stop
   menuStop.Enabled = True

   tlbSearch.Buttons(2).Enabled = False                        ' Disable print
   menuPrint.Enabled = False

   tlbSearch.Buttons(4).Enabled = False                        ' Disable the create new button.
   menuCreateNew.Enabled = False                               ' Disable the create new menu item.

   tlbSearch.Buttons(5).Enabled = False                        ' Disable Edit
   menuEdit.Enabled = False
   stsSearch.text = "Searching....."

   ' Clear the grid.

   C1FGResults.RowSel = -1
   C1FGResults.ColSel = -1

   If C1FGResults.Rows.Count > 1 Then

      For intDX = (C1FGResults.Rows.Count - 1) To 1 Step -1
          C1FGResults().Rows.Remove(intDX)
      Next

   End If

   '-----------------------------------------------

   If Me.txtRegProjID.Text = vbNullString Then

      ' look for projects using the type, Status and Deparatment
      ' build the query string, using the parameters.

      If c1cboFeeType.SelectedIndex > 0 Then
         strSelectString = strSelectString & " Where Miscellaneous_Project.MiscFeeTypeID = " & Structures.GetComboValue(c1cboFeeType)
         blnWhere = True
      End If

      '----------

      If c1cboProjectStatus.SelectedIndex > 0 Then

         If blnWhere = False Then
            strSelectString = strSelectString & " Where "
            blnWhere = True
         Else
            strSelectString = strSelectString & " And "
         End If

         strSelectString = strSelectString & "Miscellaneous_Project.MiscProjectStatusID = " & Structures.GetComboValue(c1cboProjectStatus)
      End If

      '----------

      If c1cboDept.SelectedIndex > 0 Then

         If blnWhere = False Then
            strSelectString = strSelectString & " Where "
            blnWhere = True
         Else
            strSelectString = strSelectString & " And "
         End If

         strSelectString = strSelectString & "Miscellaneous_Project.Account_ID = " & Structures.GetComboValue(c1cboDept)

      End If

      '----------

      If clsMiscProjMulti.dbSelect_DataReader(strSelectString, SearchDataReader) = True Then

         ' No errors, did we find any records?

         If SearchDataReader.HasRows = True Then

            While SearchDataReader.Read() = True
                  Call AddARow(SearchDataReader)
            End While
         Else
            Me.Cursor = System.Windows.Forms.Cursors.Default()
            MsgBox("Unable to find any projects with the parameters selected.", MsgBoxStyle.Information + MsgBoxStyle.OKOnly, "Not Found.")
         End If
      Else
         Me.Cursor = System.Windows.Forms.Cursors.Default()
         Dim err As New errorHandler(clsMiscProjMulti.lastException, "", True)
      End If

   Else

      ' Did the user enter a project Id or a Reg number?

      If IsNumeric(Mid(txtRegProjID.Text, 1, 1)) Then
         strSelectString = strSelectString & " Where ProjectID = " & Trim$(txtRegProjID.Text)
         TheRetrievalType = RetrievalType.ProjectID
      Else
         ' the user entered a reg number.
         strSelectString = strSelectString & " Where Reg = '" & Trim$(txtRegProjID.Text) & "'"
         TheRetrievalType = RetrievalType.RegNumber
      End If

      ' do the read.

      If clsMiscProjMulti.dbSelect_DataReader(strSelectString, SearchDataReader) = True Then

         ' No errors, did we find any records?

         If SearchDataReader.HasRows = True Then
            SearchDataReader.Read()
            Call AddARow(SearchDataReader)
         Else
            Me.Cursor = System.Windows.Forms.Cursors.Default()

            If TheRetrievalType = RetrievalType.ProjectID Then
               NotFoundMsg = "Project ID of : " & Trim$(txtRegProjID.Text)
            Else
               NotFoundMsg = "Reg Number of : " & Trim$(txtRegProjID.Text)
            End If

            MsgBox("Unable to find a project with a " & NotFoundMsg, MsgBoxStyle.Information + MsgBoxStyle.OKOnly, "Not Found.")
          End If

      Else
         Me.Cursor = System.Windows.Forms.Cursors.Default()
         Dim err As New errorHandler(clsMiscProjMulti.lastException, "", True)
      End If

   End If

   '-------------------------------------------------------

   Me.Cursor = System.Windows.Forms.Cursors.Default()

   tlbSearch.Buttons(0).Enabled = True                         ' Enable search
0
misdevelopers
Asked:
misdevelopers
  • 3
  • 2
1 Solution
 
Bob LearnedCommented:
When is all this occurring?  Has the toolbar been initialized at this point?  Check toolbar button count.

Bob
0
 
misdevelopersAuthor Commented:
It is occuring at the last line

tlbSearch.Buttons(0).Enabled = True                         ' Enable search

at the top of the Sub, I set the tlbSearch.Buttons(0).enabled = false
at that works fine.

What could have happended to it.

I will check the toolbar button count, and  get back to you.
Larry

0
 
misdevelopersAuthor Commented:

The toolbar button count, tlbSearch.buttons.count is zero.

Do I have to constantly declare and substantiate a toolbar and the buttons collection every time
I refer to them?
I referred to the buttons collection at the top of the proc with no problems.

Thanks in Advance,

Larry  

 
0
 
Bob LearnedCommented:
I can't see the entire picture of how you are interacting with the ToolBar control, but normally all you have to do is define buttons at design time.  If you are doing something different, or at an unusual time, then you are going to have to give me more information, in order to give you a good recommendation.

Bob
0
 
misdevelopersAuthor Commented:
Thank You for your help.

I found the problem, in one of the procedures that I was calling, I was doing something
that caused the form to be unloaded (Closed), this caused the toolbar button object to not exist.

Larry
 
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now