Solved

If statement to exclude 2 values

Posted on 2014-03-11
17
186 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
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.

 

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

Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.

Question has a verified solution.

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

We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
In this video, viewers are given an introduction to using the Windows 10 Snipping Tool, how to quickly locate it when it's needed and also how make it always available with a single click of a mouse button, by pinning it to the Desktop Task Bar. Int…
Michael from AdRem Software outlines event notifications and Automatic Corrective Actions in network monitoring. Automatic Corrective Actions are scripts, which can automatically run upon discovery of a certain undesirable condition in your network.…

635 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