Solved

Object reference not set to an instance of an object.

Posted on 2012-04-03
12
446 Views
Last Modified: 2012-04-04
I am getting the following error from the below procedure at the high lighted line :

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

error line :     _CopyWorkflowItemID = command.ExecuteScalar().ToString()



Function:

 Function GetWorkFlowItemId(ByVal StID As String) As String

        Dim connection As SqlConnection = Nothing

        Try
            connection = New SqlConnection(strConnection)
            Dim command As New SqlCommand(Me.GetSPX("spx_StCopyForm_SELECT"), connection)
            command.CommandType = CommandType.StoredProcedure

            Dim StIDParam As SqlParameter = New SqlParameter("@StID", SqlDbType.VarChar, 50)
            StIDParam.Value = StID
            command.Parameters.Add(StIDParam)

            Dim StSetParam As SqlParameter = New SqlParameter("@StSet", SqlDbType.Int)
            StSetParam.Value = _StSet
            command.Parameters.Add(StSetParam)

            Dim workflowIDParam As SqlParameter = New SqlParameter("@WorkflowID", SqlDbType.VarChar, 50)
            workflowIDParam.Value = _WorkflowID
            command.Parameters.Add(workflowIDParam)
            connection.Open()
            _CopyWorkflowItemID = command.ExecuteScalar().ToString()
            If Not String.IsNullOrEmpty(_CopyWorkflowItemID) Then
                If _CopyWorkflowItemID <> _WorkflowItemID Then
                    Return _CopyWorkflowItemID
                End If
            End If
        Finally
            If Not connection Is Nothing Then connection.Close() : connection.Dispose()
        End Try

        Return _WorkflowItemID
    End Function

Open in new window



Please help me !
0
Comment
Question by:PeteEngineer
  • 5
  • 3
  • 3
  • +1
12 Comments
 
LVL 8

Author Comment

by:PeteEngineer
ID: 37800876
i think its coused because of no rows in the return of store proc
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 37800938
Instead of
           _CopyWorkflowItemID = command.ExecuteScalar().ToString()

does this work
Object obj = command.ExecuteScalar()
if not isnull(obj) then           _CopyWorkflowItemID = obj.ToString()
0
 
LVL 25

Expert Comment

by:Rouchie
ID: 37800974
Check that spx_StCopyForm_SELECT always returns a value regardless of whether data is affected or not
0
VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

 
LVL 8

Author Comment

by:PeteEngineer
ID: 37801033
I found no data in table ... and nor inserting any thing into this table anywhere in the application.

So can we do an error handling here .. ?

How to do that ...

can we do by checking null of that object using a if statement

if so , what we can write in the else statement to handle this ?

Please write the code by editing my previous function posted in question.
0
 
LVL 25

Assisted Solution

by:Rouchie
Rouchie earned 333 total points
ID: 37801063
What exactly is the purpose of spx_StCopyForm_SELECT ?
Can you post the code within it?  Once this is established we can look at where to place the handling.
0
 
LVL 8

Author Comment

by:PeteEngineer
ID: 37801107
its just a select command :



ALTER PROCEDURE [dbo].[spx_StDetailCopyForm_SELECT](
@StyleID uniqueidentifier,
@StyleSet int,
@WorkflowID uniqueidentifier)

AS 
BEGIN
	SELECT	 WorkFlowItemId 
	FROM	  pStDetailForm 
	WHERE	 StyleID = @StyleID AND 
			StyleSet = @StyleSet AND 
			WorkflowID = @WorkflowID
END

Open in new window

0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 37801140
>>can we do by checking null of that object using a if statement
See my first comment.
I'm not a VB specialist but basically split that line into two lines of code - so you can check if the command.ExecuteScalar is actually returning an object or null.
0
 
LVL 8

Author Comment

by:PeteEngineer
ID: 37801172
yes it is null ,

but i want to know what sepecally i need to handle ..what to put in else statement if it is not null
0
 
LVL 44

Assisted Solution

by:AndyAinscow
AndyAinscow earned 167 total points
ID: 37801310
?

if not isnull(obj) then          
  _CopyWorkflowItemID = obj.ToString()
  ... what you have at present
else
  msgbox "oops, nothing returned from the sql side of things"
end if
0
 
LVL 25

Accepted Solution

by:
Rouchie earned 333 total points
ID: 37801354
Only you can answer your question.  We can write the code, but we need to know your preference, e.g. what is the code attempting to do, what should it do if it succeeds, and what if it fails?
0
 
LVL 8

Author Comment

by:PeteEngineer
ID: 37801411
ok
0
 
LVL 15

Expert Comment

by:navneethegde
ID: 37804751
H!!

Where is _StSet  and _WorkflowID declared?


Thanks!
0

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question