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,
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
Claes Bergefall - 24 Mar 2006 16:19 GMT
What object is giving the exception? Is it the button (Buttons(0)) or the
entire toolbar?
I would add both tlbSearch and tlbSearch.Buttons(0) to the watch window and
then step through the entire method and see if either of them changes
somewhere. It looks like some method that you call modifies the toolbar.
/claes
> Hi All,
> I am in .NET 2003
[quoted text clipped - 213 lines]
> tlbSearch.Buttons(0).Enabled = True ' Enable
> search
JohnOb - 27 Mar 2006 18:35 GMT
Thank you for the suggestion,
I did what you said, and found out what was going wrong.
In one of the procs I called, I was causing the form the be closed,
(unloaded), this was causing the toolbar buttons object collection to not
exist.
Thanks Again
>What object is giving the exception? Is it the button (Buttons(0)) or the
>entire toolbar?
[quoted text clipped - 9 lines]
>> tlbSearch.Buttons(0).Enabled = True ' Enable
>> search