Check the underlined solution.
Dim temp As Integer = 0
str = "select CaseId from New_Case_Id_Master where CaseId >" & temp & ""
cmd = New SqlCommand(str, cn.getConnection())
dr = cmd.ExecuteReader()
If dr.Read = False Then
Dim s_temp As String
s_temp = temp_no + "000001"
s_no = Val(s_temp)
Else
str = "select max(CaseId) from New_Case_Id_Master"
cmd = New SqlCommand(str, cn.getConnection())
dr.Close();
dr = cmd.ExecuteReader()
If dr.Read = True Then
Dim s_no_temp, s_no_temp1 As String
Dim no_temp As Integer
no_temp = dr.Item(0)
s_no_temp = no_temp.ToString
s_no_temp1 = s_no_temp.Substring(0, 4)
s_no = Val(s_no_temp1)
If temp_no > s_no Then
s_no = Val(temp_no.ToString + "000001")
Else
s_no = no_temp + 1
End If
End If
End If
Hope you are using the dr outside this function. If not, please close that data reader (dr) before exiting the function (as it seems member/global variable).