If statement to exclude 2 values

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

Shade22Asked:
Who is Participating?
 
AndyAinscowConnect With a Mentor Freelance programmer / ConsultantCommented:
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
 
p_davisCommented:
it might be better to check them as integers
0
 
Shade22Author Commented:
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
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
p_davisCommented:
if (Convert.ToInt32(Session["Account"]) != 111111111)
{
}
0
 
Shade22Author Commented:
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
 
p_davisCommented:
OK what's the error?
0
 
AndyAinscowFreelance programmer / ConsultantCommented:
sorry, make that
NOT (account != "111111111" AND account != "00000000")

(my brain is going to sleep)
0
 
Shade22Author Commented:
That is the logic I am looking for, but how would I write it for C#?

NOT (account != "111111111" AND account != "00000000")
0
 
AndyAinscowFreelance programmer / ConsultantCommented:
well NOT is ! and AND is &&
(I do see that you do understand not equals is != and the OR statement in C# is || )
0
 
Shade22Author Commented:
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
 
AndyAinscowFreelance programmer / ConsultantCommented:
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
 
AndyAinscowFreelance programmer / ConsultantCommented:
00000000 is NOT 11111111
0
 
Shade22Author Commented:
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
 
Shade22Connect With a Mentor Author Commented:
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
 
AndyAinscowFreelance programmer / ConsultantCommented:
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
 
Shade22Author Commented:
Thanks Andy.  I was not aware of the difference between "&" and "&&".
0
 
Shade22Author Commented:
Andy's assistance help me come to a simple logic.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.