By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,688 Members | 1,845 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,688 IT Pros & Developers. It's quick & easy.

debug error Object reference not set to an instance of an object.

P: n/a
ST
Hello everyone, Can anyone help me with this error above when I debug my web
app project in vstudio.net?? I can't figure it out! It was working fine for
months, and now all of a sudden it's not!!
This is the error:

[NullReferenceException: Object reference not set to an instance of an
object.]
biopsy.searchsubject.btnSubject_Click(Object Sender, EventArgs e) in
C:\INetPub\WWWRoot\biopsy\searchsubject.aspx.vb:19 8
System.Web.UI.WebControls.Button.OnClick(EventArgs e)

System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler
sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData)
System.Web.UI.Page.ProcessRequestMain() +1292
And this is my code on that page:

Public Class searchsubject
Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub
Dim search As Boolean = False
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Label4 As System.Web.UI.WebControls.Label
Protected WithEvents Label5 As System.Web.UI.WebControls.Label
Protected WithEvents Label6 As System.Web.UI.WebControls.Label
Protected WithEvents Label7 As System.Web.UI.WebControls.Label
Protected WithEvents Label8 As System.Web.UI.WebControls.Label
Protected WithEvents Label9 As System.Web.UI.WebControls.Label
Protected WithEvents Label10 As System.Web.UI.WebControls.Label
Protected WithEvents Label11 As System.Web.UI.WebControls.Label
Protected WithEvents Label12 As System.Web.UI.WebControls.Label
Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox
Protected WithEvents txtError As System.Web.UI.WebControls.Label
Protected WithEvents dgView As System.Web.UI.WebControls.DataGrid
Protected WithEvents rptSubject As System.Web.UI.WebControls.Repeater
Protected WithEvents txtSearch As System.Web.UI.WebControls.TextBox
Protected WithEvents btnUpdate As System.Web.UI.WebControls.Button
Protected WithEvents btnView As System.Web.UI.WebControls.Button
Protected WithEvents btnSearch As System.Web.UI.WebControls.Button
Protected WithEvents lblSearch As System.Web.UI.WebControls.Label
Protected WithEvents btnNewProc As System.Web.UI.WebControls.Button
Protected WithEvents btnMain As System.Web.UI.WebControls.Button
Protected WithEvents btnLogOff As System.Web.UI.WebControls.Button
Protected WithEvents btnSubject As System.Web.UI.WebControls.Button
Protected WithEvents txtSubject As System.Web.UI.WebControls.TextBox
Protected WithEvents lblSubject As System.Web.UI.WebControls.Label
Protected WithEvents rptSubName As System.Web.UI.WebControls.Repeater
Protected WithEvents button1 As System.Web.UI.WebControls.Button
Protected WithEvents button2 As System.Web.UI.WebControls.Button
Protected WithEvents button3 As System.Web.UI.WebControls.Button
Protected WithEvents btnDNA As System.Web.UI.WebControls.Button

'NOTE: The following placeholder declaration is required by the Web Form
Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

If Not IsPostBack Then
'Clear all session variables but save the user role variable

Dim user As String = Session("Role")
Session.Abandon()
Session("Role") = user

'Hide the datagrid
If Session("Role") = "User" Then
txtError.Visible = False
dgView.Visible = False
rptSubject.Visible = False
End If
Dim proc As Integer

'Loads existing information if user clicks 'Back to Subject
Menu' from any page.
'If subject_ID is missing then exit sub and don't load anything.
Try
proc = Request.QueryString("subject_ID")
Catch err As SystemException
proc = 0
Exit Try
End Try
If proc = 0 Then
Else
txtSearch.Text = proc
Dim sender2 As System.Object
Dim e2 As System.EventArgs
btnSearch_Click(sender2, e2)
End If
If Session("Role") = "User" Then
lblSubject.Visible = False
txtSubject.Visible = False
btnSubject.Visible = False
End If
'IsPostBack
Else

End If
End Sub 'Page_load
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSearch.Click

If txtSearch.Text = "" Then
Exit Sub
Else
If Session("Role") = "User" Then
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches
the number entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE s
LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID = bp.Procedure_ID,
BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "' and
b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
s.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds)
dgView.DataSource = ds

Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()

'Displays the datagrid and any returned information
dgView.Visible = True
search = True
End Try
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches
the number entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE s
LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID = bp.Procedure_ID,
BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "' and
b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
s.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubject.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubject.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in
the database"
lblSearch.Visible = True
End If
End Try

End If
End If

End Sub 'btnSearch_Click

Public Sub rpt_ItemCommand(ByVal Sender As Object, ByVal e As
RepeaterCommandEventArgs)
Dim test As String = e.CommandArgument
Response.Redirect(test)
End Sub

Private Sub btnMain_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnMain.Click
Response.Redirect("index.aspx")
End Sub

Private Sub btnLogOff_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnLogOff.Click
Response.Redirect("logout.aspx")
End Sub

Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnSubject.Click
If txtSubject.Text = "" Then
Exit Sub
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY,
PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the number
entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp LEFT
OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID, BIOPSY
b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text & "'
and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubName.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubName.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If
End Try
End If
End Sub
End Class

Thanks!
Nov 22 '05 #1
Share this Question
Share on Google+
8 Replies


P: n/a
Which object is it not happy about? You posted a lot of code but what we
need is what line in btnSubject_Click is bad. What that error is telling
you is that the variable does not point to an object. Most likely some
function is returning "nothing" and then you try to use the variable that
references "nothing".

example:

Dim i as String
i = SomeFunction
i.lenth() <---- Puke cuase i = nothing

Function SomeFunction() as string
Return Nothing
End Function

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:2E**********************************@microsof t.com...
Hello everyone, Can anyone help me with this error above when I debug my
web
app project in vstudio.net?? I can't figure it out! It was working fine
for
months, and now all of a sudden it's not!!
This is the error:

[NullReferenceException: Object reference not set to an instance of an
object.]
biopsy.searchsubject.btnSubject_Click(Object Sender, EventArgs e) in
C:\INetPub\WWWRoot\biopsy\searchsubject.aspx.vb:19 8
System.Web.UI.WebControls.Button.OnClick(EventArgs e)

System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String
eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler
sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData)
System.Web.UI.Page.ProcessRequestMain() +1292
And this is my code on that page:

Public Class searchsubject
Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub
Dim search As Boolean = False
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Label4 As System.Web.UI.WebControls.Label
Protected WithEvents Label5 As System.Web.UI.WebControls.Label
Protected WithEvents Label6 As System.Web.UI.WebControls.Label
Protected WithEvents Label7 As System.Web.UI.WebControls.Label
Protected WithEvents Label8 As System.Web.UI.WebControls.Label
Protected WithEvents Label9 As System.Web.UI.WebControls.Label
Protected WithEvents Label10 As System.Web.UI.WebControls.Label
Protected WithEvents Label11 As System.Web.UI.WebControls.Label
Protected WithEvents Label12 As System.Web.UI.WebControls.Label
Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox
Protected WithEvents txtError As System.Web.UI.WebControls.Label
Protected WithEvents dgView As System.Web.UI.WebControls.DataGrid
Protected WithEvents rptSubject As System.Web.UI.WebControls.Repeater
Protected WithEvents txtSearch As System.Web.UI.WebControls.TextBox
Protected WithEvents btnUpdate As System.Web.UI.WebControls.Button
Protected WithEvents btnView As System.Web.UI.WebControls.Button
Protected WithEvents btnSearch As System.Web.UI.WebControls.Button
Protected WithEvents lblSearch As System.Web.UI.WebControls.Label
Protected WithEvents btnNewProc As System.Web.UI.WebControls.Button
Protected WithEvents btnMain As System.Web.UI.WebControls.Button
Protected WithEvents btnLogOff As System.Web.UI.WebControls.Button
Protected WithEvents btnSubject As System.Web.UI.WebControls.Button
Protected WithEvents txtSubject As System.Web.UI.WebControls.TextBox
Protected WithEvents lblSubject As System.Web.UI.WebControls.Label
Protected WithEvents rptSubName As System.Web.UI.WebControls.Repeater
Protected WithEvents button1 As System.Web.UI.WebControls.Button
Protected WithEvents button2 As System.Web.UI.WebControls.Button
Protected WithEvents button3 As System.Web.UI.WebControls.Button
Protected WithEvents btnDNA As System.Web.UI.WebControls.Button

'NOTE: The following placeholder declaration is required by the Web
Form
Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

If Not IsPostBack Then
'Clear all session variables but save the user role variable

Dim user As String = Session("Role")
Session.Abandon()
Session("Role") = user

'Hide the datagrid
If Session("Role") = "User" Then
txtError.Visible = False
dgView.Visible = False
rptSubject.Visible = False
End If
Dim proc As Integer

'Loads existing information if user clicks 'Back to Subject
Menu' from any page.
'If subject_ID is missing then exit sub and don't load
anything.
Try
proc = Request.QueryString("subject_ID")
Catch err As SystemException
proc = 0
Exit Try
End Try
If proc = 0 Then
Else
txtSearch.Text = proc
Dim sender2 As System.Object
Dim e2 As System.EventArgs
btnSearch_Click(sender2, e2)
End If
If Session("Role") = "User" Then
lblSubject.Visible = False
txtSubject.Visible = False
btnSubject.Visible = False
End If
'IsPostBack
Else

End If
End Sub 'Page_load
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSearch.Click

If txtSearch.Text = "" Then
Exit Sub
Else
If Session("Role") = "User" Then
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches
the number entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE s
LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID = bp.Procedure_ID,
BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "' and
b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
s.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds)
dgView.DataSource = ds

Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()

'Displays the datagrid and any returned information
dgView.Visible = True
search = True
End Try
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches
the number entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE s
LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID = bp.Procedure_ID,
BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "' and
b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
s.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubject.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubject.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in
the database"
lblSearch.Visible = True
End If
End Try

End If
End If

End Sub 'btnSearch_Click

Public Sub rpt_ItemCommand(ByVal Sender As Object, ByVal e As
RepeaterCommandEventArgs)
Dim test As String = e.CommandArgument
Response.Redirect(test)
End Sub

Private Sub btnMain_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnMain.Click
Response.Redirect("index.aspx")
End Sub

Private Sub btnLogOff_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnLogOff.Click
Response.Redirect("logout.aspx")
End Sub

Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnSubject.Click
If txtSubject.Text = "" Then
Exit Sub
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY,
PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
number
entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
LEFT
OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
BIOPSY
b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text &
"'
and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubName.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubName.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If
End Try
End If
End Sub
End Class

Thanks!

Nov 22 '05 #2

P: n/a
ST
ooops sorry!! I meant to mark where it was before I sent it, and
forgot...anyway, it's marked below:

Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnSubject.Click
If txtSubject.Text = "" Then
Exit Sub
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY,
PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
number
entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
LEFT
OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
BIOPSY
b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text &
"'
and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubName.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubName.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows '>>**THIS IS WHERE
IT ERRORS OUT! dr=nothing when i debug??****
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If
End Try
End If
End Sub
End Class

THANKS!!

"Chris, Master of All Things Insignifican" wrote:
Which object is it not happy about? You posted a lot of code but what we
need is what line in btnSubject_Click is bad. What that error is telling
you is that the variable does not point to an object. Most likely some
function is returning "nothing" and then you try to use the variable that
references "nothing".

example:

Dim i as String
i = SomeFunction
i.lenth() <---- Puke cuase i = nothing

Function SomeFunction() as string
Return Nothing
End Function

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:2E**********************************@microsof t.com...
Hello everyone, Can anyone help me with this error above when I debug my
web
app project in vstudio.net?? I can't figure it out! It was working fine
for
months, and now all of a sudden it's not!!
This is the error:

[NullReferenceException: Object reference not set to an instance of an
object.]
biopsy.searchsubject.btnSubject_Click(Object Sender, EventArgs e) in
C:\INetPub\WWWRoot\biopsy\searchsubject.aspx.vb:19 8
System.Web.UI.WebControls.Button.OnClick(EventArgs e)

System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String
eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler
sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData)
System.Web.UI.Page.ProcessRequestMain() +1292
And this is my code on that page:

Public Class searchsubject
Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub
Dim search As Boolean = False
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Label4 As System.Web.UI.WebControls.Label
Protected WithEvents Label5 As System.Web.UI.WebControls.Label
Protected WithEvents Label6 As System.Web.UI.WebControls.Label
Protected WithEvents Label7 As System.Web.UI.WebControls.Label
Protected WithEvents Label8 As System.Web.UI.WebControls.Label
Protected WithEvents Label9 As System.Web.UI.WebControls.Label
Protected WithEvents Label10 As System.Web.UI.WebControls.Label
Protected WithEvents Label11 As System.Web.UI.WebControls.Label
Protected WithEvents Label12 As System.Web.UI.WebControls.Label
Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox
Protected WithEvents txtError As System.Web.UI.WebControls.Label
Protected WithEvents dgView As System.Web.UI.WebControls.DataGrid
Protected WithEvents rptSubject As System.Web.UI.WebControls.Repeater
Protected WithEvents txtSearch As System.Web.UI.WebControls.TextBox
Protected WithEvents btnUpdate As System.Web.UI.WebControls.Button
Protected WithEvents btnView As System.Web.UI.WebControls.Button
Protected WithEvents btnSearch As System.Web.UI.WebControls.Button
Protected WithEvents lblSearch As System.Web.UI.WebControls.Label
Protected WithEvents btnNewProc As System.Web.UI.WebControls.Button
Protected WithEvents btnMain As System.Web.UI.WebControls.Button
Protected WithEvents btnLogOff As System.Web.UI.WebControls.Button
Protected WithEvents btnSubject As System.Web.UI.WebControls.Button
Protected WithEvents txtSubject As System.Web.UI.WebControls.TextBox
Protected WithEvents lblSubject As System.Web.UI.WebControls.Label
Protected WithEvents rptSubName As System.Web.UI.WebControls.Repeater
Protected WithEvents button1 As System.Web.UI.WebControls.Button
Protected WithEvents button2 As System.Web.UI.WebControls.Button
Protected WithEvents button3 As System.Web.UI.WebControls.Button
Protected WithEvents btnDNA As System.Web.UI.WebControls.Button

'NOTE: The following placeholder declaration is required by the Web
Form
Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

If Not IsPostBack Then
'Clear all session variables but save the user role variable

Dim user As String = Session("Role")
Session.Abandon()
Session("Role") = user

'Hide the datagrid
If Session("Role") = "User" Then
txtError.Visible = False
dgView.Visible = False
rptSubject.Visible = False
End If
Dim proc As Integer

'Loads existing information if user clicks 'Back to Subject
Menu' from any page.
'If subject_ID is missing then exit sub and don't load
anything.
Try
proc = Request.QueryString("subject_ID")
Catch err As SystemException
proc = 0
Exit Try
End Try
If proc = 0 Then
Else
txtSearch.Text = proc
Dim sender2 As System.Object
Dim e2 As System.EventArgs
btnSearch_Click(sender2, e2)
End If
If Session("Role") = "User" Then
lblSubject.Visible = False
txtSubject.Visible = False
btnSubject.Visible = False
End If
'IsPostBack
Else

End If
End Sub 'Page_load
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSearch.Click

If txtSearch.Text = "" Then
Exit Sub
Else
If Session("Role") = "User" Then
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches
the number entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE s
LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID = bp.Procedure_ID,
BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "' and
b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
s.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds)
dgView.DataSource = ds

Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()

'Displays the datagrid and any returned information
dgView.Visible = True
search = True
End Try
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches
the number entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE s
LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID = bp.Procedure_ID,
BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "' and
b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
s.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubject.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubject.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in
the database"
lblSearch.Visible = True
End If
End Try

End If
End If

End Sub 'btnSearch_Click

Public Sub rpt_ItemCommand(ByVal Sender As Object, ByVal e As
RepeaterCommandEventArgs)
Dim test As String = e.CommandArgument
Response.Redirect(test)
End Sub

Private Sub btnMain_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnMain.Click
Response.Redirect("index.aspx")
End Sub

Private Sub btnLogOff_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnLogOff.Click
Response.Redirect("logout.aspx")
End Sub

Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnSubject.Click
If txtSubject.Text = "" Then
Exit Sub
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY,
PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
number
entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
LEFT
OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
BIOPSY
b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text &
"'
and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubName.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubName.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If
End Try
End If
End Sub
End Class

Thanks!


Nov 22 '05 #3

P: n/a
For Each dr In ds.Tables("SUBJECT").Rows '>>**THIS IS WHERE
IT ERRORS OUT! dr=nothing when i debug??****
lblSearch.Visible = False
exist = True
Exit For
Next

Since you're not using the variable dr inside the loop, the garbage
collector might kick in and that might be a reason you're seeing a null
value inside the loop. Add a dummy reference to the variable dr before the
"next" and see if it still shows up as null when you enter the for loop

- Shuvro

--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm.

"ST" <ST@discussions.microsoft.com> wrote in message
news:47**********************************@microsof t.com...
ooops sorry!! I meant to mark where it was before I sent it, and
forgot...anyway, it's marked below:

Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnSubject.Click
If txtSubject.Text = "" Then
Exit Sub
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY,
PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
number
entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
LEFT
OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
BIOPSY
b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text &
"'
and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubName.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubName.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows '>>**THIS IS WHERE IT ERRORS OUT! dr=nothing when i debug??****
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If
End Try
End If
End Sub
End Class

THANKS!!

"Chris, Master of All Things Insignifican" wrote:
Which object is it not happy about? You posted a lot of code but what we need is what line in btnSubject_Click is bad. What that error is telling you is that the variable does not point to an object. Most likely some
function is returning "nothing" and then you try to use the variable that references "nothing".

example:

Dim i as String
i = SomeFunction
i.lenth() <---- Puke cuase i = nothing

Function SomeFunction() as string
Return Nothing
End Function

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:2E**********************************@microsof t.com...
Hello everyone, Can anyone help me with this error above when I debug my web
app project in vstudio.net?? I can't figure it out! It was working fine for
months, and now all of a sudden it's not!!
This is the error:

[NullReferenceException: Object reference not set to an instance of an
object.]
biopsy.searchsubject.btnSubject_Click(Object Sender, EventArgs e) in
C:\INetPub\WWWRoot\biopsy\searchsubject.aspx.vb:19 8
System.Web.UI.WebControls.Button.OnClick(EventArgs e)

System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePo
stBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler
sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData)
System.Web.UI.Page.ProcessRequestMain() +1292
And this is my code on that page:

Public Class searchsubject
Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub
Dim search As Boolean = False
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Label4 As System.Web.UI.WebControls.Label
Protected WithEvents Label5 As System.Web.UI.WebControls.Label
Protected WithEvents Label6 As System.Web.UI.WebControls.Label
Protected WithEvents Label7 As System.Web.UI.WebControls.Label
Protected WithEvents Label8 As System.Web.UI.WebControls.Label
Protected WithEvents Label9 As System.Web.UI.WebControls.Label
Protected WithEvents Label10 As System.Web.UI.WebControls.Label
Protected WithEvents Label11 As System.Web.UI.WebControls.Label
Protected WithEvents Label12 As System.Web.UI.WebControls.Label
Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox Protected WithEvents txtError As System.Web.UI.WebControls.Label
Protected WithEvents dgView As System.Web.UI.WebControls.DataGrid
Protected WithEvents rptSubject As System.Web.UI.WebControls.Repeater Protected WithEvents txtSearch As System.Web.UI.WebControls.TextBox
Protected WithEvents btnUpdate As System.Web.UI.WebControls.Button
Protected WithEvents btnView As System.Web.UI.WebControls.Button
Protected WithEvents btnSearch As System.Web.UI.WebControls.Button
Protected WithEvents lblSearch As System.Web.UI.WebControls.Label
Protected WithEvents btnNewProc As System.Web.UI.WebControls.Button
Protected WithEvents btnMain As System.Web.UI.WebControls.Button
Protected WithEvents btnLogOff As System.Web.UI.WebControls.Button
Protected WithEvents btnSubject As System.Web.UI.WebControls.Button
Protected WithEvents txtSubject As System.Web.UI.WebControls.TextBox Protected WithEvents lblSubject As System.Web.UI.WebControls.Label
Protected WithEvents rptSubName As System.Web.UI.WebControls.Repeater Protected WithEvents button1 As System.Web.UI.WebControls.Button
Protected WithEvents button2 As System.Web.UI.WebControls.Button
Protected WithEvents button3 As System.Web.UI.WebControls.Button
Protected WithEvents btnDNA As System.Web.UI.WebControls.Button

'NOTE: The following placeholder declaration is required by the Web
Form
Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

If Not IsPostBack Then
'Clear all session variables but save the user role variable
Dim user As String = Session("Role")
Session.Abandon()
Session("Role") = user

'Hide the datagrid
If Session("Role") = "User" Then
txtError.Visible = False
dgView.Visible = False
rptSubject.Visible = False
End If
Dim proc As Integer

'Loads existing information if user clicks 'Back to Subject
Menu' from any page.
'If subject_ID is missing then exit sub and don't load
anything.
Try
proc = Request.QueryString("subject_ID")
Catch err As SystemException
proc = 0
Exit Try
End Try
If proc = 0 Then
Else
txtSearch.Text = proc
Dim sender2 As System.Object
Dim e2 As System.EventArgs
btnSearch_Click(sender2, e2)
End If
If Session("Role") = "User" Then
lblSubject.Visible = False
txtSubject.Visible = False
btnSubject.Visible = False
End If
'IsPostBack
Else

End If
End Sub 'Page_load
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click

If txtSearch.Text = "" Then
Exit Sub
Else
If Session("Role") = "User" Then
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the number entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE s LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID = bp.Procedure_ID, BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "' and b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
s.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds)
dgView.DataSource = ds

Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()

'Displays the datagrid and any returned information
dgView.Visible = True
search = True
End Try
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the number entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE s LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID = bp.Procedure_ID, BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "' and b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
s.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubject.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubject.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the database"
lblSearch.Visible = True
End If
End Try

End If
End If

End Sub 'btnSearch_Click

Public Sub rpt_ItemCommand(ByVal Sender As Object, ByVal e As
RepeaterCommandEventArgs)
Dim test As String = e.CommandArgument
Response.Redirect(test)
End Sub

Private Sub btnMain_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnMain.Click
Response.Redirect("index.aspx")
End Sub

Private Sub btnLogOff_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnLogOff.Click
Response.Redirect("logout.aspx")
End Sub

Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnSubject.Click
If txtSubject.Text = "" Then
Exit Sub
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
number
entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
LEFT
OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
BIOPSY
b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text & "'
and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubName.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubName.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the database"
lblSearch.Visible = True
End If
End Try
End If
End Sub
End Class

Thanks!


Nov 22 '05 #4

P: n/a
Well there is an easy solution to your problem. Why it is happening will be
hard for me to tell you right now. Couple of things I notice...

1. You have an Exit For in your For loop. This mean it will just look at
the first item and then leave. Why do a for each loop? You just want to
know if rows exist, do a Rows.Count.
Dim DT as DataTable
DT = ds.Tables("SUBJECT")
if (not DT is nothing) andalso DT.Rows.Count > 0 then
Exist = True
else
Exist = False
end if
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If

2. To handle the error how you have it coded, just do this:
For Each dr In ds.Tables("SUBJECT").Rows
if dr is nothing then

else
lblSearch.Visible = False
exist = True
Exit For
end if
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If

I got back to my number 1 point though, you shouldn't be using a For Each in
this case. What are you trying to accomplish in this loop?

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:47**********************************@microsof t.com...
ooops sorry!! I meant to mark where it was before I sent it, and
forgot...anyway, it's marked below:

Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnSubject.Click
If txtSubject.Text = "" Then
Exit Sub
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY,
PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
number
entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
LEFT
OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
BIOPSY
b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text &
"'
and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubName.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubName.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows '>>**THIS IS
WHERE
IT ERRORS OUT! dr=nothing when i debug??****
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If
End Try
End If
End Sub
End Class

THANKS!!

"Chris, Master of All Things Insignifican" wrote:
Which object is it not happy about? You posted a lot of code but what we
need is what line in btnSubject_Click is bad. What that error is telling
you is that the variable does not point to an object. Most likely some
function is returning "nothing" and then you try to use the variable that
references "nothing".

example:

Dim i as String
i = SomeFunction
i.lenth() <---- Puke cuase i = nothing

Function SomeFunction() as string
Return Nothing
End Function

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:2E**********************************@microsof t.com...
> Hello everyone, Can anyone help me with this error above when I debug
> my
> web
> app project in vstudio.net?? I can't figure it out! It was working
> fine
> for
> months, and now all of a sudden it's not!!
> This is the error:
>
> [NullReferenceException: Object reference not set to an instance of an
> object.]
> biopsy.searchsubject.btnSubject_Click(Object Sender, EventArgs e) in
> C:\INetPub\WWWRoot\biopsy\searchsubject.aspx.vb:19 8
> System.Web.UI.WebControls.Button.OnClick(EventArgs e)
>
> System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String
> eventArgument)
> System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler
> sourceControl, String eventArgument)
> System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData)
> System.Web.UI.Page.ProcessRequestMain() +1292
>
>
> And this is my code on that page:
>
> Public Class searchsubject
> Inherits System.Web.UI.Page
>
> #Region " Web Form Designer Generated Code "
>
> 'This call is required by the Web Form Designer.
> <System.Diagnostics.DebuggerStepThrough()> Private Sub
> InitializeComponent()
>
> End Sub
> Dim search As Boolean = False
> Protected WithEvents Label2 As System.Web.UI.WebControls.Label
> Protected WithEvents Label4 As System.Web.UI.WebControls.Label
> Protected WithEvents Label5 As System.Web.UI.WebControls.Label
> Protected WithEvents Label6 As System.Web.UI.WebControls.Label
> Protected WithEvents Label7 As System.Web.UI.WebControls.Label
> Protected WithEvents Label8 As System.Web.UI.WebControls.Label
> Protected WithEvents Label9 As System.Web.UI.WebControls.Label
> Protected WithEvents Label10 As System.Web.UI.WebControls.Label
> Protected WithEvents Label11 As System.Web.UI.WebControls.Label
> Protected WithEvents Label12 As System.Web.UI.WebControls.Label
> Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox
> Protected WithEvents txtError As System.Web.UI.WebControls.Label
> Protected WithEvents dgView As System.Web.UI.WebControls.DataGrid
> Protected WithEvents rptSubject As
> System.Web.UI.WebControls.Repeater
> Protected WithEvents txtSearch As System.Web.UI.WebControls.TextBox
> Protected WithEvents btnUpdate As System.Web.UI.WebControls.Button
> Protected WithEvents btnView As System.Web.UI.WebControls.Button
> Protected WithEvents btnSearch As System.Web.UI.WebControls.Button
> Protected WithEvents lblSearch As System.Web.UI.WebControls.Label
> Protected WithEvents btnNewProc As System.Web.UI.WebControls.Button
> Protected WithEvents btnMain As System.Web.UI.WebControls.Button
> Protected WithEvents btnLogOff As System.Web.UI.WebControls.Button
> Protected WithEvents btnSubject As System.Web.UI.WebControls.Button
> Protected WithEvents txtSubject As System.Web.UI.WebControls.TextBox
> Protected WithEvents lblSubject As System.Web.UI.WebControls.Label
> Protected WithEvents rptSubName As
> System.Web.UI.WebControls.Repeater
> Protected WithEvents button1 As System.Web.UI.WebControls.Button
> Protected WithEvents button2 As System.Web.UI.WebControls.Button
> Protected WithEvents button3 As System.Web.UI.WebControls.Button
> Protected WithEvents btnDNA As System.Web.UI.WebControls.Button
>
> 'NOTE: The following placeholder declaration is required by the Web
> Form
> Designer.
> 'Do not delete or move it.
> Private designerPlaceholderDeclaration As System.Object
>
>
> Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Init
> 'CODEGEN: This method call is required by the Web Form Designer
> 'Do not modify it using the code editor.
> InitializeComponent()
> End Sub
>
> #End Region
>
> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
>
> If Not IsPostBack Then
> 'Clear all session variables but save the user role variable
>
> Dim user As String = Session("Role")
> Session.Abandon()
> Session("Role") = user
>
> 'Hide the datagrid
> If Session("Role") = "User" Then
> txtError.Visible = False
> dgView.Visible = False
> rptSubject.Visible = False
> End If
> Dim proc As Integer
>
> 'Loads existing information if user clicks 'Back to Subject
> Menu' from any page.
> 'If subject_ID is missing then exit sub and don't load
> anything.
> Try
> proc = Request.QueryString("subject_ID")
> Catch err As SystemException
> proc = 0
> Exit Try
> End Try
> If proc = 0 Then
> Else
> txtSearch.Text = proc
> Dim sender2 As System.Object
> Dim e2 As System.EventArgs
> btnSearch_Click(sender2, e2)
> End If
> If Session("Role") = "User" Then
> lblSubject.Visible = False
> txtSubject.Visible = False
> btnSubject.Visible = False
> End If
> 'IsPostBack
> Else
>
> End If
> End Sub 'Page_load
>
>
> Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e
> As
> System.EventArgs) Handles btnSearch.Click
>
> If txtSearch.Text = "" Then
> Exit Sub
> Else
> If Session("Role") = "User" Then
> Dim connstr As New SqlConnection(Application("cn"))
> 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id
> matches
> the number entered into the text box
> Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE
> s
> LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID =
> bp.Procedure_ID,
> BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "'
> and
> b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
> s.PROCEDURE_ID"
> Dim da As New SqlDataAdapter(c, connstr)
> Dim ds As New DataSet
> Try
> da.Fill(ds)
> dgView.DataSource = ds
>
> Catch myerr As SqlException
> txtError.Text = myerr.Message
> txtError.Visible = True
> Finally
> DataBind()
>
> 'Displays the datagrid and any returned information
> dgView.Visible = True
> search = True
> End Try
> Else
> Dim connstr As New SqlConnection(Application("cn"))
> 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id
> matches
> the number entered into the text box
> Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE
> s
> LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID =
> bp.Procedure_ID,
> BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "'
> and
> b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
> s.PROCEDURE_ID"
> Dim da As New SqlDataAdapter(c, connstr)
> Dim ds As New DataSet
> Try
> da.Fill(ds, "SUBJECT")
> rptSubject.DataSource = ds
> Catch myerr As SqlException
> txtError.Text = myerr.Message
> txtError.Visible = True
> Finally
> DataBind()
> 'Displays the datagrid and any returned information
> rptSubject.Visible = True
> search = True
> Dim dr As DataRow
> Dim exist As Boolean = False
> For Each dr In ds.Tables("SUBJECT").Rows
> lblSearch.Visible = False
> exist = True
> Exit For
> Next
> If exist = False Then
> lblSearch.Text = "Subject number does not exist
> in
> the database"
> lblSearch.Visible = True
> End If
> End Try
>
> End If
> End If
>
> End Sub 'btnSearch_Click
>
> Public Sub rpt_ItemCommand(ByVal Sender As Object, ByVal e As
> RepeaterCommandEventArgs)
> Dim test As String = e.CommandArgument
> Response.Redirect(test)
> End Sub
>
> Private Sub btnMain_Click(ByVal Sender As Object, ByVal e As
> System.EventArgs) Handles btnMain.Click
> Response.Redirect("index.aspx")
> End Sub
>
> Private Sub btnLogOff_Click(ByVal Sender As Object, ByVal e As
> System.EventArgs) Handles btnLogOff.Click
> Response.Redirect("logout.aspx")
> End Sub
>
> Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
> System.EventArgs) Handles btnSubject.Click
> If txtSubject.Text = "" Then
> Exit Sub
> Else
> Dim connstr As New SqlConnection(Application("cn"))
> 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> BIOPSY,
> PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
> number
> entered into the text box
> Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
> LEFT
> OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
> BIOPSY
> b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text
> &
> "'
> and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
> p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
> Dim da As New SqlDataAdapter(c, connstr)
> Dim ds As New DataSet
> Try
> da.Fill(ds, "SUBJECT")
> rptSubName.DataSource = ds
> Catch myerr As SqlException
> txtError.Text = myerr.Message
> txtError.Visible = True
> Finally
> DataBind()
> 'Displays the datagrid and any returned information
> rptSubName.Visible = True
> search = True
> Dim dr As DataRow
> Dim exist As Boolean = False
> For Each dr In ds.Tables("SUBJECT").Rows
> lblSearch.Visible = False
> exist = True
> Exit For
> Next
> If exist = False Then
> lblSearch.Text = "Subject number does not exist in
> the
> database"
> lblSearch.Visible = True
> End If
> End Try
> End If
> End Sub
> End Class
>
> Thanks!


Nov 22 '05 #5

P: n/a
I didn't even catch that dr wasn't used in the loop. It has to be that
ds.Tables("SUBJECT") is returning "nothing" and then the calls to .Rows is
throwing the exception. I'd bet money dr has nothing to do with the
problem. Look at my post though, I think there is a better way to write the
code.

Chris

"Shuvro Mazumder [MSFT]" <sh*****@online.microsoft.com> wrote in message
news:e6****************@TK2MSFTNGP10.phx.gbl...
For Each dr In ds.Tables("SUBJECT").Rows '>>**THIS IS WHERE
IT ERRORS OUT! dr=nothing when i debug??****
lblSearch.Visible = False
exist = True
Exit For
Next

Since you're not using the variable dr inside the loop, the garbage
collector might kick in and that might be a reason you're seeing a null
value inside the loop. Add a dummy reference to the variable dr before the
"next" and see if it still shows up as null when you enter the for loop

- Shuvro

--
This posting is provided "AS IS" with no warranties, and confers no
rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm.

"ST" <ST@discussions.microsoft.com> wrote in message
news:47**********************************@microsof t.com...
ooops sorry!! I meant to mark where it was before I sent it, and
forgot...anyway, it's marked below:

Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnSubject.Click
If txtSubject.Text = "" Then
Exit Sub
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY,
PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
number
entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
LEFT
OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
BIOPSY
b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text &
"'
and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubName.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubName.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows '>>**THIS IS

WHERE
IT ERRORS OUT! dr=nothing when i debug??****
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in
the
database"
lblSearch.Visible = True
End If
End Try
End If
End Sub
End Class

THANKS!!

"Chris, Master of All Things Insignifican" wrote:
> Which object is it not happy about? You posted a lot of code but what we > need is what line in btnSubject_Click is bad. What that error is telling > you is that the variable does not point to an object. Most likely some
> function is returning "nothing" and then you try to use the variable that > references "nothing".
>
> example:
>
> Dim i as String
> i = SomeFunction
> i.lenth() <---- Puke cuase i = nothing
>
> Function SomeFunction() as string
> Return Nothing
> End Function
>
> Chris
>
> "ST" <ST@discussions.microsoft.com> wrote in message
> news:2E**********************************@microsof t.com...
> > Hello everyone, Can anyone help me with this error above when I debug my > > web
> > app project in vstudio.net?? I can't figure it out! It was working fine > > for
> > months, and now all of a sudden it's not!!
> > This is the error:
> >
> > [NullReferenceException: Object reference not set to an instance of
> > an
> > object.]
> > biopsy.searchsubject.btnSubject_Click(Object Sender, EventArgs e)
> > in
> > C:\INetPub\WWWRoot\biopsy\searchsubject.aspx.vb:19 8
> > System.Web.UI.WebControls.Button.OnClick(EventArgs e)
> >
> > System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePo
stBackEvent(String > > eventArgument)
> > System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler
> > sourceControl, String eventArgument)
> > System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData)
> > System.Web.UI.Page.ProcessRequestMain() +1292
> >
> >
> > And this is my code on that page:
> >
> > Public Class searchsubject
> > Inherits System.Web.UI.Page
> >
> > #Region " Web Form Designer Generated Code "
> >
> > 'This call is required by the Web Form Designer.
> > <System.Diagnostics.DebuggerStepThrough()> Private Sub
> > InitializeComponent()
> >
> > End Sub
> > Dim search As Boolean = False
> > Protected WithEvents Label2 As System.Web.UI.WebControls.Label
> > Protected WithEvents Label4 As System.Web.UI.WebControls.Label
> > Protected WithEvents Label5 As System.Web.UI.WebControls.Label
> > Protected WithEvents Label6 As System.Web.UI.WebControls.Label
> > Protected WithEvents Label7 As System.Web.UI.WebControls.Label
> > Protected WithEvents Label8 As System.Web.UI.WebControls.Label
> > Protected WithEvents Label9 As System.Web.UI.WebControls.Label
> > Protected WithEvents Label10 As System.Web.UI.WebControls.Label
> > Protected WithEvents Label11 As System.Web.UI.WebControls.Label
> > Protected WithEvents Label12 As System.Web.UI.WebControls.Label
> > Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox > > Protected WithEvents txtError As System.Web.UI.WebControls.Label
> > Protected WithEvents dgView As System.Web.UI.WebControls.DataGrid
> > Protected WithEvents rptSubject As System.Web.UI.WebControls.Repeater > > Protected WithEvents txtSearch As
> > System.Web.UI.WebControls.TextBox
> > Protected WithEvents btnUpdate As System.Web.UI.WebControls.Button
> > Protected WithEvents btnView As System.Web.UI.WebControls.Button
> > Protected WithEvents btnSearch As System.Web.UI.WebControls.Button
> > Protected WithEvents lblSearch As System.Web.UI.WebControls.Label
> > Protected WithEvents btnNewProc As
> > System.Web.UI.WebControls.Button
> > Protected WithEvents btnMain As System.Web.UI.WebControls.Button
> > Protected WithEvents btnLogOff As System.Web.UI.WebControls.Button
> > Protected WithEvents btnSubject As
> > System.Web.UI.WebControls.Button
> > Protected WithEvents txtSubject As System.Web.UI.WebControls.TextBox > > Protected WithEvents lblSubject As System.Web.UI.WebControls.Label
> > Protected WithEvents rptSubName As System.Web.UI.WebControls.Repeater > > Protected WithEvents button1 As System.Web.UI.WebControls.Button
> > Protected WithEvents button2 As System.Web.UI.WebControls.Button
> > Protected WithEvents button3 As System.Web.UI.WebControls.Button
> > Protected WithEvents btnDNA As System.Web.UI.WebControls.Button
> >
> > 'NOTE: The following placeholder declaration is required by the
> > Web
> > Form
> > Designer.
> > 'Do not delete or move it.
> > Private designerPlaceholderDeclaration As System.Object
> >
> >
> > Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
> > System.EventArgs) Handles MyBase.Init
> > 'CODEGEN: This method call is required by the Web Form
> > Designer
> > 'Do not modify it using the code editor.
> > InitializeComponent()
> > End Sub
> >
> > #End Region
> >
> > Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
> > System.EventArgs) Handles MyBase.Load
> >
> > If Not IsPostBack Then
> > 'Clear all session variables but save the user role variable > >
> > Dim user As String = Session("Role")
> > Session.Abandon()
> > Session("Role") = user
> >
> > 'Hide the datagrid
> > If Session("Role") = "User" Then
> > txtError.Visible = False
> > dgView.Visible = False
> > rptSubject.Visible = False
> > End If
> > Dim proc As Integer
> >
> > 'Loads existing information if user clicks 'Back to
> > Subject
> > Menu' from any page.
> > 'If subject_ID is missing then exit sub and don't load
> > anything.
> > Try
> > proc = Request.QueryString("subject_ID")
> > Catch err As SystemException
> > proc = 0
> > Exit Try
> > End Try
> > If proc = 0 Then
> > Else
> > txtSearch.Text = proc
> > Dim sender2 As System.Object
> > Dim e2 As System.EventArgs
> > btnSearch_Click(sender2, e2)
> > End If
> > If Session("Role") = "User" Then
> > lblSubject.Visible = False
> > txtSubject.Visible = False
> > btnSubject.Visible = False
> > End If
> > 'IsPostBack
> > Else
> >
> > End If
> > End Sub 'Page_load
> >
> >
> > Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As > > System.EventArgs) Handles btnSearch.Click
> >
> > If txtSearch.Text = "" Then
> > Exit Sub
> > Else
> > If Session("Role") = "User" Then
> > Dim connstr As New SqlConnection(Application("cn"))
> > 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> > BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches > > the number entered into the text box
> > Dim c As String = "Select * from
> > SUBJECT_DIAG_PROCEDURE s > > LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID = bp.Procedure_ID, > > BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "' and > > b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER
> > BY
> > s.PROCEDURE_ID"
> > Dim da As New SqlDataAdapter(c, connstr)
> > Dim ds As New DataSet
> > Try
> > da.Fill(ds)
> > dgView.DataSource = ds
> >
> > Catch myerr As SqlException
> > txtError.Text = myerr.Message
> > txtError.Visible = True
> > Finally
> > DataBind()
> >
> > 'Displays the datagrid and any returned
> > information
> > dgView.Visible = True
> > search = True
> > End Try
> > Else
> > Dim connstr As New SqlConnection(Application("cn"))
> > 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> > BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches > > the number entered into the text box
> > Dim c As String = "Select * from
> > SUBJECT_DIAG_PROCEDURE s > > LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID = bp.Procedure_ID, > > BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "' and > > b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER
> > BY
> > s.PROCEDURE_ID"
> > Dim da As New SqlDataAdapter(c, connstr)
> > Dim ds As New DataSet
> > Try
> > da.Fill(ds, "SUBJECT")
> > rptSubject.DataSource = ds
> > Catch myerr As SqlException
> > txtError.Text = myerr.Message
> > txtError.Visible = True
> > Finally
> > DataBind()
> > 'Displays the datagrid and any returned
> > information
> > rptSubject.Visible = True
> > search = True
> > Dim dr As DataRow
> > Dim exist As Boolean = False
> > For Each dr In ds.Tables("SUBJECT").Rows
> > lblSearch.Visible = False
> > exist = True
> > Exit For
> > Next
> > If exist = False Then
> > lblSearch.Text = "Subject number does not
> > exist in > > the database"
> > lblSearch.Visible = True
> > End If
> > End Try
> >
> > End If
> > End If
> >
> > End Sub 'btnSearch_Click
> >
> > Public Sub rpt_ItemCommand(ByVal Sender As Object, ByVal e As
> > RepeaterCommandEventArgs)
> > Dim test As String = e.CommandArgument
> > Response.Redirect(test)
> > End Sub
> >
> > Private Sub btnMain_Click(ByVal Sender As Object, ByVal e As
> > System.EventArgs) Handles btnMain.Click
> > Response.Redirect("index.aspx")
> > End Sub
> >
> > Private Sub btnLogOff_Click(ByVal Sender As Object, ByVal e As
> > System.EventArgs) Handles btnLogOff.Click
> > Response.Redirect("logout.aspx")
> > End Sub
> >
> > Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
> > System.EventArgs) Handles btnSubject.Click
> > If txtSubject.Text = "" Then
> > Exit Sub
> > Else
> > Dim connstr As New SqlConnection(Application("cn"))
> > 'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY, > > PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches
> > the
> > number
> > entered into the text box
> > Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE
> > sdp
> > LEFT
> > OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
> > BIOPSY
> > b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" &
> > txtSubject.Text & > > "'
> > and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
> > p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
> > Dim da As New SqlDataAdapter(c, connstr)
> > Dim ds As New DataSet
> > Try
> > da.Fill(ds, "SUBJECT")
> > rptSubName.DataSource = ds
> > Catch myerr As SqlException
> > txtError.Text = myerr.Message
> > txtError.Visible = True
> > Finally
> > DataBind()
> > 'Displays the datagrid and any returned information
> > rptSubName.Visible = True
> > search = True
> > Dim dr As DataRow
> > Dim exist As Boolean = False
> > For Each dr In ds.Tables("SUBJECT").Rows
> > lblSearch.Visible = False
> > exist = True
> > Exit For
> > Next
> > If exist = False Then
> > lblSearch.Text = "Subject number does not exist in the > > database"
> > lblSearch.Visible = True
> > End If
> > End Try
> > End If
> > End Sub
> > End Class
> >
> > Thanks!
>
>
>


Nov 22 '05 #6

P: n/a
ST
Hi! I'm going to take a look at your suggestions right now and get back to
you. Oh, I'm actually taking over for someone else who wrote this code. I
just recently started trying to work with this code...and I'm also a newbie
web developer (trying to learn everything on my own)! Thanks so much for the
help! I'll be back with a response shortly...

"Chris, Master of All Things Insignifican" wrote:
Well there is an easy solution to your problem. Why it is happening will be
hard for me to tell you right now. Couple of things I notice...

1. You have an Exit For in your For loop. This mean it will just look at
the first item and then leave. Why do a for each loop? You just want to
know if rows exist, do a Rows.Count.
Dim DT as DataTable
DT = ds.Tables("SUBJECT")
if (not DT is nothing) andalso DT.Rows.Count > 0 then
Exist = True
else
Exist = False
end if
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If

2. To handle the error how you have it coded, just do this:
For Each dr In ds.Tables("SUBJECT").Rows
if dr is nothing then

else
lblSearch.Visible = False
exist = True
Exit For
end if
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If

I got back to my number 1 point though, you shouldn't be using a For Each in
this case. What are you trying to accomplish in this loop?

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:47**********************************@microsof t.com...
ooops sorry!! I meant to mark where it was before I sent it, and
forgot...anyway, it's marked below:

Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnSubject.Click
If txtSubject.Text = "" Then
Exit Sub
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY,
PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
number
entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
LEFT
OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
BIOPSY
b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text &
"'
and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubName.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubName.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows '>>**THIS IS
WHERE
IT ERRORS OUT! dr=nothing when i debug??****
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If
End Try
End If
End Sub
End Class

THANKS!!

"Chris, Master of All Things Insignifican" wrote:
Which object is it not happy about? You posted a lot of code but what we
need is what line in btnSubject_Click is bad. What that error is telling
you is that the variable does not point to an object. Most likely some
function is returning "nothing" and then you try to use the variable that
references "nothing".

example:

Dim i as String
i = SomeFunction
i.lenth() <---- Puke cuase i = nothing

Function SomeFunction() as string
Return Nothing
End Function

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:2E**********************************@microsof t.com...
> Hello everyone, Can anyone help me with this error above when I debug
> my
> web
> app project in vstudio.net?? I can't figure it out! It was working
> fine
> for
> months, and now all of a sudden it's not!!
> This is the error:
>
> [NullReferenceException: Object reference not set to an instance of an
> object.]
> biopsy.searchsubject.btnSubject_Click(Object Sender, EventArgs e) in
> C:\INetPub\WWWRoot\biopsy\searchsubject.aspx.vb:19 8
> System.Web.UI.WebControls.Button.OnClick(EventArgs e)
>
> System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String
> eventArgument)
> System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler
> sourceControl, String eventArgument)
> System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData)
> System.Web.UI.Page.ProcessRequestMain() +1292
>
>
> And this is my code on that page:
>
> Public Class searchsubject
> Inherits System.Web.UI.Page
>
> #Region " Web Form Designer Generated Code "
>
> 'This call is required by the Web Form Designer.
> <System.Diagnostics.DebuggerStepThrough()> Private Sub
> InitializeComponent()
>
> End Sub
> Dim search As Boolean = False
> Protected WithEvents Label2 As System.Web.UI.WebControls.Label
> Protected WithEvents Label4 As System.Web.UI.WebControls.Label
> Protected WithEvents Label5 As System.Web.UI.WebControls.Label
> Protected WithEvents Label6 As System.Web.UI.WebControls.Label
> Protected WithEvents Label7 As System.Web.UI.WebControls.Label
> Protected WithEvents Label8 As System.Web.UI.WebControls.Label
> Protected WithEvents Label9 As System.Web.UI.WebControls.Label
> Protected WithEvents Label10 As System.Web.UI.WebControls.Label
> Protected WithEvents Label11 As System.Web.UI.WebControls.Label
> Protected WithEvents Label12 As System.Web.UI.WebControls.Label
> Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox
> Protected WithEvents txtError As System.Web.UI.WebControls.Label
> Protected WithEvents dgView As System.Web.UI.WebControls.DataGrid
> Protected WithEvents rptSubject As
> System.Web.UI.WebControls.Repeater
> Protected WithEvents txtSearch As System.Web.UI.WebControls.TextBox
> Protected WithEvents btnUpdate As System.Web.UI.WebControls.Button
> Protected WithEvents btnView As System.Web.UI.WebControls.Button
> Protected WithEvents btnSearch As System.Web.UI.WebControls.Button
> Protected WithEvents lblSearch As System.Web.UI.WebControls.Label
> Protected WithEvents btnNewProc As System.Web.UI.WebControls.Button
> Protected WithEvents btnMain As System.Web.UI.WebControls.Button
> Protected WithEvents btnLogOff As System.Web.UI.WebControls.Button
> Protected WithEvents btnSubject As System.Web.UI.WebControls.Button
> Protected WithEvents txtSubject As System.Web.UI.WebControls.TextBox
> Protected WithEvents lblSubject As System.Web.UI.WebControls.Label
> Protected WithEvents rptSubName As
> System.Web.UI.WebControls.Repeater
> Protected WithEvents button1 As System.Web.UI.WebControls.Button
> Protected WithEvents button2 As System.Web.UI.WebControls.Button
> Protected WithEvents button3 As System.Web.UI.WebControls.Button
> Protected WithEvents btnDNA As System.Web.UI.WebControls.Button
>
> 'NOTE: The following placeholder declaration is required by the Web
> Form
> Designer.
> 'Do not delete or move it.
> Private designerPlaceholderDeclaration As System.Object
>
>
> Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Init
> 'CODEGEN: This method call is required by the Web Form Designer
> 'Do not modify it using the code editor.
> InitializeComponent()
> End Sub
>
> #End Region
>
> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
>
> If Not IsPostBack Then
> 'Clear all session variables but save the user role variable
>
> Dim user As String = Session("Role")
> Session.Abandon()
> Session("Role") = user
>
> 'Hide the datagrid
> If Session("Role") = "User" Then
> txtError.Visible = False
> dgView.Visible = False
> rptSubject.Visible = False
> End If
> Dim proc As Integer
>
> 'Loads existing information if user clicks 'Back to Subject
> Menu' from any page.
> 'If subject_ID is missing then exit sub and don't load
> anything.
> Try
> proc = Request.QueryString("subject_ID")
> Catch err As SystemException
> proc = 0
> Exit Try
> End Try
> If proc = 0 Then
> Else
> txtSearch.Text = proc
> Dim sender2 As System.Object
> Dim e2 As System.EventArgs
> btnSearch_Click(sender2, e2)
> End If
> If Session("Role") = "User" Then
> lblSubject.Visible = False
> txtSubject.Visible = False
> btnSubject.Visible = False
> End If
> 'IsPostBack
> Else
>
> End If
> End Sub 'Page_load
>
>
> Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e
> As
> System.EventArgs) Handles btnSearch.Click
>
> If txtSearch.Text = "" Then
> Exit Sub
> Else
> If Session("Role") = "User" Then
> Dim connstr As New SqlConnection(Application("cn"))
> 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id
> matches
> the number entered into the text box
> Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE
> s
> LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID =
> bp.Procedure_ID,
> BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "'
> and
> b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
> s.PROCEDURE_ID"
> Dim da As New SqlDataAdapter(c, connstr)
> Dim ds As New DataSet
> Try
> da.Fill(ds)
> dgView.DataSource = ds
>
> Catch myerr As SqlException
> txtError.Text = myerr.Message
> txtError.Visible = True
> Finally
> DataBind()
>
> 'Displays the datagrid and any returned information
> dgView.Visible = True
> search = True
> End Try
> Else
> Dim connstr As New SqlConnection(Application("cn"))
> 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id
> matches
> the number entered into the text box
> Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE
> s
> LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID =
> bp.Procedure_ID,
> BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "'
> and
> b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
> s.PROCEDURE_ID"
> Dim da As New SqlDataAdapter(c, connstr)
> Dim ds As New DataSet
> Try
> da.Fill(ds, "SUBJECT")
> rptSubject.DataSource = ds
> Catch myerr As SqlException
> txtError.Text = myerr.Message
> txtError.Visible = True
> Finally
> DataBind()
> 'Displays the datagrid and any returned information
> rptSubject.Visible = True
> search = True
> Dim dr As DataRow
> Dim exist As Boolean = False
> For Each dr In ds.Tables("SUBJECT").Rows
> lblSearch.Visible = False
> exist = True
> Exit For
> Next
> If exist = False Then
> lblSearch.Text = "Subject number does not exist
> in
> the database"
> lblSearch.Visible = True
> End If
> End Try
>
> End If
> End If
>
> End Sub 'btnSearch_Click
>
> Public Sub rpt_ItemCommand(ByVal Sender As Object, ByVal e As
> RepeaterCommandEventArgs)
> Dim test As String = e.CommandArgument
> Response.Redirect(test)
> End Sub
>
> Private Sub btnMain_Click(ByVal Sender As Object, ByVal e As
> System.EventArgs) Handles btnMain.Click
> Response.Redirect("index.aspx")
> End Sub
>
> Private Sub btnLogOff_Click(ByVal Sender As Object, ByVal e As
> System.EventArgs) Handles btnLogOff.Click
> Response.Redirect("logout.aspx")
> End Sub
>
> Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
> System.EventArgs) Handles btnSubject.Click
> If txtSubject.Text = "" Then
> Exit Sub
> Else
> Dim connstr As New SqlConnection(Application("cn"))
> 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> BIOPSY,
> PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
> number
> entered into the text box
> Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
> LEFT
> OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
> BIOPSY
> b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text
> &
> "'
> and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
> p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
> Dim da As New SqlDataAdapter(c, connstr)
> Dim ds As New DataSet
> Try
> da.Fill(ds, "SUBJECT")
> rptSubName.DataSource = ds
> Catch myerr As SqlException
> txtError.Text = myerr.Message
> txtError.Visible = True
> Finally
> DataBind()
> 'Displays the datagrid and any returned information
> rptSubName.Visible = True
> search = True
> Dim dr As DataRow
> Dim exist As Boolean = False
> For Each dr In ds.Tables("SUBJECT").Rows
> lblSearch.Visible = False
> exist = True
> Exit For
> Next
> If exist = False Then
> lblSearch.Text = "Subject number does not exist in
> the
> database"
> lblSearch.Visible = True
> End If
> End Try
> End If
> End Sub
> End Class
>
> Thanks!


Nov 22 '05 #7

P: n/a
ST
hmmm, well that got rid of the error i was getting before, but now it's not
searching for the subject ID i typed it...i just keeps saying "subject does
not exist" for any ID i search for.

I also noticed that the "login failed for biopsyuser" is showing up. the
way the web app works is that anyone that is logged in as a biopsyuser CANNOT
search, and anyone logged in who belongs to a superuser group CAN run this
search. So I'm thinking this might have something to do with it...

"Chris, Master of All Things Insignifican" wrote:
Well there is an easy solution to your problem. Why it is happening will be
hard for me to tell you right now. Couple of things I notice...

1. You have an Exit For in your For loop. This mean it will just look at
the first item and then leave. Why do a for each loop? You just want to
know if rows exist, do a Rows.Count.
Dim DT as DataTable
DT = ds.Tables("SUBJECT")
if (not DT is nothing) andalso DT.Rows.Count > 0 then
Exist = True
else
Exist = False
end if
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If

2. To handle the error how you have it coded, just do this:
For Each dr In ds.Tables("SUBJECT").Rows
if dr is nothing then

else
lblSearch.Visible = False
exist = True
Exit For
end if
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If

I got back to my number 1 point though, you shouldn't be using a For Each in
this case. What are you trying to accomplish in this loop?

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:47**********************************@microsof t.com...
ooops sorry!! I meant to mark where it was before I sent it, and
forgot...anyway, it's marked below:

Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
System.EventArgs) Handles btnSubject.Click
If txtSubject.Text = "" Then
Exit Sub
Else
Dim connstr As New SqlConnection(Application("cn"))
'SELECTS information from the SUBJECT_DIAG_PROCEDURE, BIOPSY,
PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
number
entered into the text box
Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
LEFT
OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
BIOPSY
b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text &
"'
and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
Dim da As New SqlDataAdapter(c, connstr)
Dim ds As New DataSet
Try
da.Fill(ds, "SUBJECT")
rptSubName.DataSource = ds
Catch myerr As SqlException
txtError.Text = myerr.Message
txtError.Visible = True
Finally
DataBind()
'Displays the datagrid and any returned information
rptSubName.Visible = True
search = True
Dim dr As DataRow
Dim exist As Boolean = False
For Each dr In ds.Tables("SUBJECT").Rows '>>**THIS IS
WHERE
IT ERRORS OUT! dr=nothing when i debug??****
lblSearch.Visible = False
exist = True
Exit For
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in the
database"
lblSearch.Visible = True
End If
End Try
End If
End Sub
End Class

THANKS!!

"Chris, Master of All Things Insignifican" wrote:
Which object is it not happy about? You posted a lot of code but what we
need is what line in btnSubject_Click is bad. What that error is telling
you is that the variable does not point to an object. Most likely some
function is returning "nothing" and then you try to use the variable that
references "nothing".

example:

Dim i as String
i = SomeFunction
i.lenth() <---- Puke cuase i = nothing

Function SomeFunction() as string
Return Nothing
End Function

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:2E**********************************@microsof t.com...
> Hello everyone, Can anyone help me with this error above when I debug
> my
> web
> app project in vstudio.net?? I can't figure it out! It was working
> fine
> for
> months, and now all of a sudden it's not!!
> This is the error:
>
> [NullReferenceException: Object reference not set to an instance of an
> object.]
> biopsy.searchsubject.btnSubject_Click(Object Sender, EventArgs e) in
> C:\INetPub\WWWRoot\biopsy\searchsubject.aspx.vb:19 8
> System.Web.UI.WebControls.Button.OnClick(EventArgs e)
>
> System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String
> eventArgument)
> System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler
> sourceControl, String eventArgument)
> System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData)
> System.Web.UI.Page.ProcessRequestMain() +1292
>
>
> And this is my code on that page:
>
> Public Class searchsubject
> Inherits System.Web.UI.Page
>
> #Region " Web Form Designer Generated Code "
>
> 'This call is required by the Web Form Designer.
> <System.Diagnostics.DebuggerStepThrough()> Private Sub
> InitializeComponent()
>
> End Sub
> Dim search As Boolean = False
> Protected WithEvents Label2 As System.Web.UI.WebControls.Label
> Protected WithEvents Label4 As System.Web.UI.WebControls.Label
> Protected WithEvents Label5 As System.Web.UI.WebControls.Label
> Protected WithEvents Label6 As System.Web.UI.WebControls.Label
> Protected WithEvents Label7 As System.Web.UI.WebControls.Label
> Protected WithEvents Label8 As System.Web.UI.WebControls.Label
> Protected WithEvents Label9 As System.Web.UI.WebControls.Label
> Protected WithEvents Label10 As System.Web.UI.WebControls.Label
> Protected WithEvents Label11 As System.Web.UI.WebControls.Label
> Protected WithEvents Label12 As System.Web.UI.WebControls.Label
> Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox
> Protected WithEvents txtError As System.Web.UI.WebControls.Label
> Protected WithEvents dgView As System.Web.UI.WebControls.DataGrid
> Protected WithEvents rptSubject As
> System.Web.UI.WebControls.Repeater
> Protected WithEvents txtSearch As System.Web.UI.WebControls.TextBox
> Protected WithEvents btnUpdate As System.Web.UI.WebControls.Button
> Protected WithEvents btnView As System.Web.UI.WebControls.Button
> Protected WithEvents btnSearch As System.Web.UI.WebControls.Button
> Protected WithEvents lblSearch As System.Web.UI.WebControls.Label
> Protected WithEvents btnNewProc As System.Web.UI.WebControls.Button
> Protected WithEvents btnMain As System.Web.UI.WebControls.Button
> Protected WithEvents btnLogOff As System.Web.UI.WebControls.Button
> Protected WithEvents btnSubject As System.Web.UI.WebControls.Button
> Protected WithEvents txtSubject As System.Web.UI.WebControls.TextBox
> Protected WithEvents lblSubject As System.Web.UI.WebControls.Label
> Protected WithEvents rptSubName As
> System.Web.UI.WebControls.Repeater
> Protected WithEvents button1 As System.Web.UI.WebControls.Button
> Protected WithEvents button2 As System.Web.UI.WebControls.Button
> Protected WithEvents button3 As System.Web.UI.WebControls.Button
> Protected WithEvents btnDNA As System.Web.UI.WebControls.Button
>
> 'NOTE: The following placeholder declaration is required by the Web
> Form
> Designer.
> 'Do not delete or move it.
> Private designerPlaceholderDeclaration As System.Object
>
>
> Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Init
> 'CODEGEN: This method call is required by the Web Form Designer
> 'Do not modify it using the code editor.
> InitializeComponent()
> End Sub
>
> #End Region
>
> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
>
> If Not IsPostBack Then
> 'Clear all session variables but save the user role variable
>
> Dim user As String = Session("Role")
> Session.Abandon()
> Session("Role") = user
>
> 'Hide the datagrid
> If Session("Role") = "User" Then
> txtError.Visible = False
> dgView.Visible = False
> rptSubject.Visible = False
> End If
> Dim proc As Integer
>
> 'Loads existing information if user clicks 'Back to Subject
> Menu' from any page.
> 'If subject_ID is missing then exit sub and don't load
> anything.
> Try
> proc = Request.QueryString("subject_ID")
> Catch err As SystemException
> proc = 0
> Exit Try
> End Try
> If proc = 0 Then
> Else
> txtSearch.Text = proc
> Dim sender2 As System.Object
> Dim e2 As System.EventArgs
> btnSearch_Click(sender2, e2)
> End If
> If Session("Role") = "User" Then
> lblSubject.Visible = False
> txtSubject.Visible = False
> btnSubject.Visible = False
> End If
> 'IsPostBack
> Else
>
> End If
> End Sub 'Page_load
>
>
> Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e
> As
> System.EventArgs) Handles btnSearch.Click
>
> If txtSearch.Text = "" Then
> Exit Sub
> Else
> If Session("Role") = "User" Then
> Dim connstr As New SqlConnection(Application("cn"))
> 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id
> matches
> the number entered into the text box
> Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE
> s
> LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID =
> bp.Procedure_ID,
> BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "'
> and
> b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
> s.PROCEDURE_ID"
> Dim da As New SqlDataAdapter(c, connstr)
> Dim ds As New DataSet
> Try
> da.Fill(ds)
> dgView.DataSource = ds
>
> Catch myerr As SqlException
> txtError.Text = myerr.Message
> txtError.Visible = True
> Finally
> DataBind()
>
> 'Displays the datagrid and any returned information
> dgView.Visible = True
> search = True
> End Try
> Else
> Dim connstr As New SqlConnection(Application("cn"))
> 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id
> matches
> the number entered into the text box
> Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE
> s
> LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID =
> bp.Procedure_ID,
> BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "'
> and
> b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER BY
> s.PROCEDURE_ID"
> Dim da As New SqlDataAdapter(c, connstr)
> Dim ds As New DataSet
> Try
> da.Fill(ds, "SUBJECT")
> rptSubject.DataSource = ds
> Catch myerr As SqlException
> txtError.Text = myerr.Message
> txtError.Visible = True
> Finally
> DataBind()
> 'Displays the datagrid and any returned information
> rptSubject.Visible = True
> search = True
> Dim dr As DataRow
> Dim exist As Boolean = False
> For Each dr In ds.Tables("SUBJECT").Rows
> lblSearch.Visible = False
> exist = True
> Exit For
> Next
> If exist = False Then
> lblSearch.Text = "Subject number does not exist
> in
> the database"
> lblSearch.Visible = True
> End If
> End Try
>
> End If
> End If
>
> End Sub 'btnSearch_Click
>
> Public Sub rpt_ItemCommand(ByVal Sender As Object, ByVal e As
> RepeaterCommandEventArgs)
> Dim test As String = e.CommandArgument
> Response.Redirect(test)
> End Sub
>
> Private Sub btnMain_Click(ByVal Sender As Object, ByVal e As
> System.EventArgs) Handles btnMain.Click
> Response.Redirect("index.aspx")
> End Sub
>
> Private Sub btnLogOff_Click(ByVal Sender As Object, ByVal e As
> System.EventArgs) Handles btnLogOff.Click
> Response.Redirect("logout.aspx")
> End Sub
>
> Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
> System.EventArgs) Handles btnSubject.Click
> If txtSubject.Text = "" Then
> Exit Sub
> Else
> Dim connstr As New SqlConnection(Application("cn"))
> 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> BIOPSY,
> PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
> number
> entered into the text box
> Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
> LEFT
> OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
> BIOPSY
> b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text
> &
> "'
> and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
> p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
> Dim da As New SqlDataAdapter(c, connstr)
> Dim ds As New DataSet
> Try
> da.Fill(ds, "SUBJECT")
> rptSubName.DataSource = ds
> Catch myerr As SqlException
> txtError.Text = myerr.Message
> txtError.Visible = True
> Finally
> DataBind()
> 'Displays the datagrid and any returned information
> rptSubName.Visible = True
> search = True
> Dim dr As DataRow
> Dim exist As Boolean = False
> For Each dr In ds.Tables("SUBJECT").Rows
> lblSearch.Visible = False
> exist = True
> Exit For
> Next
> If exist = False Then
> lblSearch.Text = "Subject number does not exist in
> the
> database"
> lblSearch.Visible = True
> End If
> End Try
> End If
> End Sub
> End Class
>
> Thanks!


Nov 22 '05 #8

P: n/a
In your case it means that the dataset does not contain the "SUBJECT" table.
You will have to research where the "SUBJECT" table was suppose to get added
to the dataset. How are you logging into your database? Sounds like the
database is rejecting your user maybe?

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:41**********************************@microsof t.com...
hmmm, well that got rid of the error i was getting before, but now it's
not
searching for the subject ID i typed it...i just keeps saying "subject
does
not exist" for any ID i search for.

I also noticed that the "login failed for biopsyuser" is showing up. the
way the web app works is that anyone that is logged in as a biopsyuser
CANNOT
search, and anyone logged in who belongs to a superuser group CAN run this
search. So I'm thinking this might have something to do with it...

"Chris, Master of All Things Insignifican" wrote:
Well there is an easy solution to your problem. Why it is happening will
be
hard for me to tell you right now. Couple of things I notice...

1. You have an Exit For in your For loop. This mean it will just look at
the first item and then leave. Why do a for each loop? You just want to
know if rows exist, do a Rows.Count.
Dim DT as DataTable
DT = ds.Tables("SUBJECT")
if (not DT is nothing) andalso DT.Rows.Count > 0 then
Exist = True
else
Exist = False
end if
If exist = False Then
lblSearch.Text = "Subject number does not exist in
the
database"
lblSearch.Visible = True
End If

2. To handle the error how you have it coded, just do this:
For Each dr In ds.Tables("SUBJECT").Rows
if dr is nothing then

else
lblSearch.Visible = False
exist = True
Exit For
end if
Next
If exist = False Then
lblSearch.Text = "Subject number does not exist in
the
database"
lblSearch.Visible = True
End If

I got back to my number 1 point though, you shouldn't be using a For Each
in
this case. What are you trying to accomplish in this loop?

Chris

"ST" <ST@discussions.microsoft.com> wrote in message
news:47**********************************@microsof t.com...
> ooops sorry!! I meant to mark where it was before I sent it, and
> forgot...anyway, it's marked below:
>
> Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
> System.EventArgs) Handles btnSubject.Click
> If txtSubject.Text = "" Then
> Exit Sub
> Else
> Dim connstr As New SqlConnection(Application("cn"))
> 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
> BIOPSY,
> PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches the
> number
> entered into the text box
> Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE sdp
> LEFT
> OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID = bp.Procedure_ID,
> BIOPSY
> b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" & txtSubject.Text
> &
> "'
> and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID and
> p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
> Dim da As New SqlDataAdapter(c, connstr)
> Dim ds As New DataSet
> Try
> da.Fill(ds, "SUBJECT")
> rptSubName.DataSource = ds
> Catch myerr As SqlException
> txtError.Text = myerr.Message
> txtError.Visible = True
> Finally
> DataBind()
> 'Displays the datagrid and any returned information
> rptSubName.Visible = True
> search = True
> Dim dr As DataRow
> Dim exist As Boolean = False
> For Each dr In ds.Tables("SUBJECT").Rows '>>**THIS IS
> WHERE
> IT ERRORS OUT! dr=nothing when i debug??****
> lblSearch.Visible = False
> exist = True
> Exit For
> Next
> If exist = False Then
> lblSearch.Text = "Subject number does not exist in
> the
> database"
> lblSearch.Visible = True
> End If
> End Try
> End If
> End Sub
> End Class
>
> THANKS!!
>
> "Chris, Master of All Things Insignifican" wrote:
>
>> Which object is it not happy about? You posted a lot of code but what
>> we
>> need is what line in btnSubject_Click is bad. What that error is
>> telling
>> you is that the variable does not point to an object. Most likely
>> some
>> function is returning "nothing" and then you try to use the variable
>> that
>> references "nothing".
>>
>> example:
>>
>> Dim i as String
>> i = SomeFunction
>> i.lenth() <---- Puke cuase i = nothing
>>
>> Function SomeFunction() as string
>> Return Nothing
>> End Function
>>
>> Chris
>>
>> "ST" <ST@discussions.microsoft.com> wrote in message
>> news:2E**********************************@microsof t.com...
>> > Hello everyone, Can anyone help me with this error above when I
>> > debug
>> > my
>> > web
>> > app project in vstudio.net?? I can't figure it out! It was working
>> > fine
>> > for
>> > months, and now all of a sudden it's not!!
>> > This is the error:
>> >
>> > [NullReferenceException: Object reference not set to an instance of
>> > an
>> > object.]
>> > biopsy.searchsubject.btnSubject_Click(Object Sender, EventArgs e)
>> > in
>> > C:\INetPub\WWWRoot\biopsy\searchsubject.aspx.vb:19 8
>> > System.Web.UI.WebControls.Button.OnClick(EventArgs e)
>> >
>> > System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String
>> > eventArgument)
>> > System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler
>> > sourceControl, String eventArgument)
>> > System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection
>> > postData)
>> > System.Web.UI.Page.ProcessRequestMain() +1292
>> >
>> >
>> > And this is my code on that page:
>> >
>> > Public Class searchsubject
>> > Inherits System.Web.UI.Page
>> >
>> > #Region " Web Form Designer Generated Code "
>> >
>> > 'This call is required by the Web Form Designer.
>> > <System.Diagnostics.DebuggerStepThrough()> Private Sub
>> > InitializeComponent()
>> >
>> > End Sub
>> > Dim search As Boolean = False
>> > Protected WithEvents Label2 As System.Web.UI.WebControls.Label
>> > Protected WithEvents Label4 As System.Web.UI.WebControls.Label
>> > Protected WithEvents Label5 As System.Web.UI.WebControls.Label
>> > Protected WithEvents Label6 As System.Web.UI.WebControls.Label
>> > Protected WithEvents Label7 As System.Web.UI.WebControls.Label
>> > Protected WithEvents Label8 As System.Web.UI.WebControls.Label
>> > Protected WithEvents Label9 As System.Web.UI.WebControls.Label
>> > Protected WithEvents Label10 As System.Web.UI.WebControls.Label
>> > Protected WithEvents Label11 As System.Web.UI.WebControls.Label
>> > Protected WithEvents Label12 As System.Web.UI.WebControls.Label
>> > Protected WithEvents CheckBox1 As
>> > System.Web.UI.WebControls.CheckBox
>> > Protected WithEvents txtError As System.Web.UI.WebControls.Label
>> > Protected WithEvents dgView As System.Web.UI.WebControls.DataGrid
>> > Protected WithEvents rptSubject As
>> > System.Web.UI.WebControls.Repeater
>> > Protected WithEvents txtSearch As
>> > System.Web.UI.WebControls.TextBox
>> > Protected WithEvents btnUpdate As
>> > System.Web.UI.WebControls.Button
>> > Protected WithEvents btnView As System.Web.UI.WebControls.Button
>> > Protected WithEvents btnSearch As
>> > System.Web.UI.WebControls.Button
>> > Protected WithEvents lblSearch As System.Web.UI.WebControls.Label
>> > Protected WithEvents btnNewProc As
>> > System.Web.UI.WebControls.Button
>> > Protected WithEvents btnMain As System.Web.UI.WebControls.Button
>> > Protected WithEvents btnLogOff As
>> > System.Web.UI.WebControls.Button
>> > Protected WithEvents btnSubject As
>> > System.Web.UI.WebControls.Button
>> > Protected WithEvents txtSubject As
>> > System.Web.UI.WebControls.TextBox
>> > Protected WithEvents lblSubject As
>> > System.Web.UI.WebControls.Label
>> > Protected WithEvents rptSubName As
>> > System.Web.UI.WebControls.Repeater
>> > Protected WithEvents button1 As System.Web.UI.WebControls.Button
>> > Protected WithEvents button2 As System.Web.UI.WebControls.Button
>> > Protected WithEvents button3 As System.Web.UI.WebControls.Button
>> > Protected WithEvents btnDNA As System.Web.UI.WebControls.Button
>> >
>> > 'NOTE: The following placeholder declaration is required by the
>> > Web
>> > Form
>> > Designer.
>> > 'Do not delete or move it.
>> > Private designerPlaceholderDeclaration As System.Object
>> >
>> >
>> > Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
>> > System.EventArgs) Handles MyBase.Init
>> > 'CODEGEN: This method call is required by the Web Form
>> > Designer
>> > 'Do not modify it using the code editor.
>> > InitializeComponent()
>> > End Sub
>> >
>> > #End Region
>> >
>> > Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
>> > System.EventArgs) Handles MyBase.Load
>> >
>> > If Not IsPostBack Then
>> > 'Clear all session variables but save the user role
>> > variable
>> >
>> > Dim user As String = Session("Role")
>> > Session.Abandon()
>> > Session("Role") = user
>> >
>> > 'Hide the datagrid
>> > If Session("Role") = "User" Then
>> > txtError.Visible = False
>> > dgView.Visible = False
>> > rptSubject.Visible = False
>> > End If
>> > Dim proc As Integer
>> >
>> > 'Loads existing information if user clicks 'Back to
>> > Subject
>> > Menu' from any page.
>> > 'If subject_ID is missing then exit sub and don't load
>> > anything.
>> > Try
>> > proc = Request.QueryString("subject_ID")
>> > Catch err As SystemException
>> > proc = 0
>> > Exit Try
>> > End Try
>> > If proc = 0 Then
>> > Else
>> > txtSearch.Text = proc
>> > Dim sender2 As System.Object
>> > Dim e2 As System.EventArgs
>> > btnSearch_Click(sender2, e2)
>> > End If
>> > If Session("Role") = "User" Then
>> > lblSubject.Visible = False
>> > txtSubject.Visible = False
>> > btnSubject.Visible = False
>> > End If
>> > 'IsPostBack
>> > Else
>> >
>> > End If
>> > End Sub 'Page_load
>> >
>> >
>> > Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal
>> > e
>> > As
>> > System.EventArgs) Handles btnSearch.Click
>> >
>> > If txtSearch.Text = "" Then
>> > Exit Sub
>> > Else
>> > If Session("Role") = "User" Then
>> > Dim connstr As New SqlConnection(Application("cn"))
>> > 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
>> > BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id
>> > matches
>> > the number entered into the text box
>> > Dim c As String = "Select * from
>> > SUBJECT_DIAG_PROCEDURE
>> > s
>> > LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID =
>> > bp.Procedure_ID,
>> > BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "'
>> > and
>> > b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER
>> > BY
>> > s.PROCEDURE_ID"
>> > Dim da As New SqlDataAdapter(c, connstr)
>> > Dim ds As New DataSet
>> > Try
>> > da.Fill(ds)
>> > dgView.DataSource = ds
>> >
>> > Catch myerr As SqlException
>> > txtError.Text = myerr.Message
>> > txtError.Visible = True
>> > Finally
>> > DataBind()
>> >
>> > 'Displays the datagrid and any returned
>> > information
>> > dgView.Visible = True
>> > search = True
>> > End Try
>> > Else
>> > Dim connstr As New SqlConnection(Application("cn"))
>> > 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
>> > BIOPSY, PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id
>> > matches
>> > the number entered into the text box
>> > Dim c As String = "Select * from
>> > SUBJECT_DIAG_PROCEDURE
>> > s
>> > LEFT OUTER JOIN BIOPSY_PATHOLOGY bp ON s.Procedure_ID =
>> > bp.Procedure_ID,
>> > BIOPSY b, PHYSICIAN p where s.subject_id = '" & txtSearch.Text & "'
>> > and
>> > b.BIOPSY_ID = s.BIOPSY_ID and p.PHYSICIAN_ID = s.PHYSICIAN_ID ORDER
>> > BY
>> > s.PROCEDURE_ID"
>> > Dim da As New SqlDataAdapter(c, connstr)
>> > Dim ds As New DataSet
>> > Try
>> > da.Fill(ds, "SUBJECT")
>> > rptSubject.DataSource = ds
>> > Catch myerr As SqlException
>> > txtError.Text = myerr.Message
>> > txtError.Visible = True
>> > Finally
>> > DataBind()
>> > 'Displays the datagrid and any returned
>> > information
>> > rptSubject.Visible = True
>> > search = True
>> > Dim dr As DataRow
>> > Dim exist As Boolean = False
>> > For Each dr In ds.Tables("SUBJECT").Rows
>> > lblSearch.Visible = False
>> > exist = True
>> > Exit For
>> > Next
>> > If exist = False Then
>> > lblSearch.Text = "Subject number does not
>> > exist
>> > in
>> > the database"
>> > lblSearch.Visible = True
>> > End If
>> > End Try
>> >
>> > End If
>> > End If
>> >
>> > End Sub 'btnSearch_Click
>> >
>> > Public Sub rpt_ItemCommand(ByVal Sender As Object, ByVal e As
>> > RepeaterCommandEventArgs)
>> > Dim test As String = e.CommandArgument
>> > Response.Redirect(test)
>> > End Sub
>> >
>> > Private Sub btnMain_Click(ByVal Sender As Object, ByVal e As
>> > System.EventArgs) Handles btnMain.Click
>> > Response.Redirect("index.aspx")
>> > End Sub
>> >
>> > Private Sub btnLogOff_Click(ByVal Sender As Object, ByVal e As
>> > System.EventArgs) Handles btnLogOff.Click
>> > Response.Redirect("logout.aspx")
>> > End Sub
>> >
>> > Private Sub btnSubject_Click(ByVal Sender As Object, ByVal e As
>> > System.EventArgs) Handles btnSubject.Click
>> > If txtSubject.Text = "" Then
>> > Exit Sub
>> > Else
>> > Dim connstr As New SqlConnection(Application("cn"))
>> > 'SELECTS information from the SUBJECT_DIAG_PROCEDURE,
>> > BIOPSY,
>> > PHYSICIAN and BIOPSY_PATHOLOGY tables where the subject_id matches
>> > the
>> > number
>> > entered into the text box
>> > Dim c As String = "Select * from SUBJECT_DIAG_PROCEDURE
>> > sdp
>> > LEFT
>> > OUTER JOIN BIOPSY_PATHOLOGY bp ON sdp.Procedure_ID =
>> > bp.Procedure_ID,
>> > BIOPSY
>> > b, PHYSICIAN p, SUBJECT s where s.SUBJECT_LNAME = '" &
>> > txtSubject.Text
>> > &
>> > "'
>> > and sdp.SUBJECT_ID = s.SUBJECT_ID and b.BIOPSY_ID = sdp.BIOPSY_ID
>> > and
>> > p.PHYSICIAN_ID = sdp.PHYSICIAN_ID ORDER BY sdp.PROCEDURE_ID"
>> > Dim da As New SqlDataAdapter(c, connstr)
>> > Dim ds As New DataSet
>> > Try
>> > da.Fill(ds, "SUBJECT")
>> > rptSubName.DataSource = ds
>> > Catch myerr As SqlException
>> > txtError.Text = myerr.Message
>> > txtError.Visible = True
>> > Finally
>> > DataBind()
>> > 'Displays the datagrid and any returned information
>> > rptSubName.Visible = True
>> > search = True
>> > Dim dr As DataRow
>> > Dim exist As Boolean = False
>> > For Each dr In ds.Tables("SUBJECT").Rows
>> > lblSearch.Visible = False
>> > exist = True
>> > Exit For
>> > Next
>> > If exist = False Then
>> > lblSearch.Text = "Subject number does not exist
>> > in
>> > the
>> > database"
>> > lblSearch.Visible = True
>> > End If
>> > End Try
>> > End If
>> > End Sub
>> > End Class
>> >
>> > Thanks!
>>
>>
>>


Nov 22 '05 #9

This discussion thread is closed

Replies have been disabled for this discussion.