Solved

If statement to exclude 2 values

Posted on 2014-03-11
17
180 Views
Last Modified: 2014-03-18
It seems like a simple logic, but apparently this isn't working correctly.  
I have 2 accounts that I want the procedure to not run on, but with the way it is written now.  Every time I log in with my account "111111111", it still goes through the procedure although it shouldn't and just skip ahead.

 if (Session["Account"].ToString() != ("111111111") || Session["Account"].ToString() != ("000000000"))
                {
                    ds_mbr_Pen.SelectParameters["AccountType"].DefaultValue = "AX21";
                    ds_mbr_Pen.SelectParameters["Account"].DefaultValue = Session["Account"].ToString();
                    ds_Pen_Totals.SelectParameters["AccountType"].DefaultValue = "AX22";
                    
                }

Open in new window

0
Comment
Question by:Shade22
  • 8
  • 6
  • 3
17 Comments
 
LVL 22

Expert Comment

by:p_davis
ID: 39921566
it might be better to check them as integers
0
 

Author Comment

by:Shade22
ID: 39921573
If I write it out as
if (Session["Account"].ToString() != ("111111111")
{
}

Open in new window

It has no issues, but when I start using the or statement "||" that is when it stops working.  Can you please provide examples of how you would write it?
0
 
LVL 22

Expert Comment

by:p_davis
ID: 39921580
if (Convert.ToInt32(Session["Account"]) != 111111111)
{
}
0
Resolve Critical IT Incidents Fast

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

 

Author Comment

by:Shade22
ID: 39921616
It works when I just use the !=111111111, but when I try to put in the or statement "||" I am unable to get it to work.  I need it to say that if it does not equal "111111111" or "000000000".
0
 
LVL 22

Expert Comment

by:p_davis
ID: 39921621
OK what's the error?
0
 
LVL 44

Accepted Solution

by:
AndyAinscow earned 500 total points
ID: 39921710
if (Session["Account"].ToString() != ("111111111") || Session["Account"].ToString() != ("000000000"))
               
If the session account is 111111111 then you have (false or true) which is true - so the code will run

if (Session["Account"].ToString() != ("111111111")

If the session account is 111111111 then you have false - so the code does not run

what I think you need is the following logic:
NOT (account == "111111111" OR account == "00000000")
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 39921724
sorry, make that
NOT (account != "111111111" AND account != "00000000")

(my brain is going to sleep)
0
 

Author Comment

by:Shade22
ID: 39926049
That is the logic I am looking for, but how would I write it for C#?

NOT (account != "111111111" AND account != "00000000")
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 39926135
well NOT is ! and AND is &&
(I do see that you do understand not equals is != and the OR statement in C# is || )
0
 

Author Comment

by:Shade22
ID: 39926165
Yes I do, and that is why I think this code should work but it doesn't.
if (Session["Account"].ToString() != ("111111111") || Session["Account"].ToString() != ("000000000"))

Open in new window

I just want it to skip the steps within the procedure if it matches "111111111" or "000000000".  If it doesn't match, I want it to step into the procedure.
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 39926433
To repeat myself about why your initial attempt does not work:

If the session account is 111111111 then you have (false or true) which is true - so the code will run
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 39926435
00000000 is NOT 11111111
0
 

Author Comment

by:Shade22
ID: 39926545
I am using the != which I believe is "Not Equal" to in C#.  So, I am telling it to run any account number besides "111111111" and "000000000".  Am I getting this wrong?
0
 

Assisted Solution

by:Shade22
Shade22 earned 0 total points
ID: 39926616
I had a friend help me out with what you were saying Andy, and was able to get it to work with this.  I didn't try to use the "&" rather than the "||" because in the past I have had issues of it wanting two criteria's to hit but in this case it worked.

Thanks for your help.

if (Session["Account"].ToString() != ("111111111") & Session["Account"].ToString() !=("000000000"))

Open in new window

0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 39926688
I'm still not convinced you have grasped why.  (Yes != is not equals)

You had if (X or Y) then run the code.  I'll use 11 and 00 as shorthand for your values.

eg. try with 42 as the session ID
if (42 != 11 OR 42 != 00) then your code will run because 42 is not equals to 11

Now try with 11 as the session ID
if (11 != 11 OR 11 != 00) then the code will still run.  Yes 11 is equal to 11 BUT 11 is not equal to 00.


ps.
The single & that you have is a bitwise operator - that is extremely dangerous code you have come up with.
http://msdn.microsoft.com/en-us/library/sbf85k1c.aspx
http://msdn.microsoft.com/en-us/library/2a723cdk.aspx
0
 

Author Comment

by:Shade22
ID: 39926971
Thanks Andy.  I was not aware of the difference between "&" and "&&".
0
 

Author Closing Comment

by:Shade22
ID: 39936362
Andy's assistance help me come to a simple logic.
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

Suggested Solutions

It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

839 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