473,394 Members | 1,693 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,394 software developers and data experts.

If statement not catching on conditions

I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that can
anyone help me

Urgent!!!!!!

If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2 And
Not muxClass.COM1Active = 1 Then
Exit Sub
End If
Oct 29 '08 #1
16 1537

"cmdolcet69" <co************@hotmail.comwrote in message
news:0f**********************************@m32g2000 hsf.googlegroups.com...
>I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that can
anyone help me

Urgent!!!!!!

If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2 And
Not muxClass.COM1Active = 1 Then
Exit Sub
End If
Any = Or
All = And

your statement wants all the conditions to be met before the exit will
occur.

LS

Oct 29 '08 #2
Did you want an OR connector instead of AND?
You said: should catch if ANY of the conditions are met

Would
If (not boolDSIFlushGapReading) OR (muxClass.DSIValues.Count < 2) OR
(muxClass.COM1Active <1) Then

do it?

"cmdolcet69" wrote:
I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that can
anyone help me

Urgent!!!!!!

If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2 And
Not muxClass.COM1Active = 1 Then
Exit Sub
End If
Oct 29 '08 #3
On Wed, 29 Oct 2008 10:20:57 -0700 (PDT), cmdolcet69
<co************@hotmail.comwrote:
>I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that can
anyone help me

Urgent!!!!!!

If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2 And
Not muxClass.COM1Active = 1 Then
Exit Sub
End If
Your statement says to execut the Exit Sub only if all three
conditions are met. In your example the first one is not met and the
other two are.

Apparently you want Or instead of And. An Or test is true if either
item is true, and And test is true of both items are true.

Also, you should use AndAlso and OrElse instead of And and Or for
tests like this.
Oct 29 '08 #4
On Oct 29, 1:39*pm, Jack Jackson <jjack...@cinnovations.netwrote:
On Wed, 29 Oct 2008 10:20:57 -0700 (PDT), cmdolcet69

<colin_dolce...@hotmail.comwrote:
I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that can
anyone help me
Urgent!!!!!!
If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2 And
Not muxClass.COM1Active = 1 Then
* * * * * * * *Exit Sub
* * * * * *End If

Your statement says to execut the Exit Sub only if all three
conditions are met. *In your example the first one is not met and the
other two are.

Apparently you want Or instead of And. *An Or test is true if either
item is true, and And test is true of both items are true.

Also, you should use AndAlso and OrElse instead of And and Or for
tests like this.

Ok a step further lets say:
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =2 it will not exit the program???

How can I fix that.......
Oct 29 '08 #5
On Oct 29, 1:27*pm, "Lloyd Sheen" <sql...@hotmail.comwrote:
"cmdolcet69" <colin_dolce...@hotmail.comwrote in message

news:0f**********************************@m32g2000 hsf.googlegroups.com...
I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that can
anyone help me
Urgent!!!!!!
If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2 And
Not muxClass.COM1Active = 1 Then
* * * * * * * *Exit Sub
* * * * * *End If

Any = Or
All = And

your statement wants all the conditions to be met before the exit will
occur.

LS
No what happends is that DSIValues.Count can =1 but then the
muxclass.COM1Active = 0
The only wat it doesn;t exist is that DSIValues.Count can =2 but then
the muxclass.COM1Active = 1 or

DSIValues.Count can =1 but then the muxclass.COM2Active = 2
Oct 29 '08 #6
"cmdolcet69" <co************@hotmail.comschrieb
I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that
can anyone help me

Urgent!!!!!!

If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2
And Not muxClass.COM1Active = 1 Then
Exit Sub
End If

First I thought it could be a matter of operator precedence
(http://msdn.microsoft.com/en-us/library/fw84t893.aspx), but it's correct.

You expect the program to exit. Have you tested if the "Exit sub" statement
is reached (Debug.Print)? Or maybe it is reached but it doesn't cause the
expected behavior? Exit Sub exits the sub, not the program.
Armin

Oct 29 '08 #7
On Oct 29, 3:51*pm, "Armin Zingler" <az.nos...@freenet.dewrote:
"cmdolcet69" <colin_dolce...@hotmail.comschrieb
I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that
can anyone help me
Urgent!!!!!!
If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2
And Not muxClass.COM1Active = 1 Then
* * * * * * * *Exit Sub
* * * * * *End If

First I thought it could be a matter of operator precedence
(http://msdn.microsoft.com/en-us/library/fw84t893.aspx), but it's correct..

You expect the program to exit. Have you tested if the "Exit sub" statement
is reached (Debug.Print)? Or maybe it is reached but it doesn't cause the
expected behavior? Exit Sub exits the sub, not the program.

Armin
Armin it never exit the Sub and that all I want it to do is exit the
sub
Oct 29 '08 #8
"cmdolcet69" <co************@hotmail.comschrieb
Armin it never exit the Sub and that all I want it to do is exit the
sub

It's possible that debugging has an influence on the result, in particular
as you are handling COM ports here (I guess) where the state can change
while debugging. For example, if you set a breakpoint and examine the
values, they can be different from those if you had not interrupted the
execution. Therefore, try this:

debug.write(boolDSIFlushGapReading & " ")
debug.write(muxClass.DSIValues.Count & " ")
debug.writeline(muxClass.COM1Active)

If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2 _
And Not muxClass.COM1Active = 1 Then
debug.writeline("exit sub")
Exit Sub
End If
I can not debug it here, so maybe exit sub is reached but the function is
called again and you think it is never left? I don't know. Is "exit sub"
ever shown in the debug/output window? Do you ever get the value combination
that you think should make the sub exit?

Armin

Oct 29 '08 #9
On Wed, 29 Oct 2008 11:38:16 -0700 (PDT), cmdolcet69
<co************@hotmail.comwrote:
>On Oct 29, 1:39*pm, Jack Jackson <jjack...@cinnovations.netwrote:
>On Wed, 29 Oct 2008 10:20:57 -0700 (PDT), cmdolcet69

<colin_dolce...@hotmail.comwrote:
>I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that can
anyone help me
>Urgent!!!!!!
>If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2 And
Not muxClass.COM1Active = 1 Then
* * * * * * * *Exit Sub
* * * * * *End If

Your statement says to execut the Exit Sub only if all three
conditions are met. *In your example the first one is not met and the
other two are.

Apparently you want Or instead of And. *An Or test is true if either
item is true, and And test is true of both items are true.

Also, you should use AndAlso and OrElse instead of And and Or for
tests like this.


Ok a step further lets say:
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =2 it will not exit the program???

How can I fix that.......
I don't understand what behavior you want.

In the example above, it would not exit because only one of the
conditions is true, and when you use And all must be true.

If you use Or, then if any condition is true it will exit, so in your
example above if you changed the Ands to Ors (or preferrably OrElse)
it would exit since muxClass.DSIValues.Count is < 2.
Oct 29 '08 #10
Why are you not reading what everybody writes, but does not want to give you
the fish but tries to teach you how to catch the fish.

Here is the fish

\\\
If boolDSIFlushGapReading = False OrElse muxClass.DSIValues.Count < 2 OrElse
muxClass.COM1Active <1 Then
Exit Sub
End If
///

This means that if any of this tests is true, then it will Exit Sub

Do they all have to be true then it is

\\\
If boolDSIFlushGapReading = False AndAlso muxClass.DSIValues.Count < 2
AndAlso
muxClass.COM1Active <1 Then
Exit Sub
End If
///
Cor

"cmdolcet69" <co************@hotmail.comwrote in message
news:0f**********************************@m32g2000 hsf.googlegroups.com...
>I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that can
anyone help me

Urgent!!!!!!

If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2 And
Not muxClass.COM1Active = 1 Then
Exit Sub
End If
Oct 30 '08 #11
cmdolcet69 wrote:
I have the below if statement, that should catch if any of the
conditions are met.....however for some reasons if my
boolDSIFlushGapReading = true and MuxClass.DSIValues.count =1 and my
muxclass.COM1Active =1 it will not exit the program??? Why is that can
anyone help me
If boolDSIFlushGapReading = False And muxClass.DSIValues.Count < 2 And
Not muxClass.COM1Active = 1 Then
Exit Sub
End If
This is why everyone is saying to use "or" rather than "and": you're not
translating English into computer the right way round.

English: let's have all the apples and bananas->let's have all the apples
and let's have all the bananas

Computer: (all the items where x is an apple) + (all the items where x is a
banana)

Logically, the + translates to "or", not "and".
If in doubt, write it as three separate conditions to make it obvious:

if not(boolDSIFlushGapReading) then
exit sub
end if

if MuxClass.DSIValues.count < 2 then
exit sub
end if

if muxClass.COM1Active <1 then
exit sub
end if

Remember the syntax is "if <booleanthen...", so you shouldn't test boolean
values: you should treat it directly as a boolean, which is why I changed
your "If boolDSIFlushGapReading = False" to "if
not(boolDSIFlushGapReading)".

Also, I think that "if muxClass.COM1Active <1" is easier to read than "if
Not muxClass.COM1Active = 1".

HTH

Andrew
Oct 30 '08 #12
"easier to read" is open to debate (although I don't disagree), but
if Not muxClass.COM1Active = 1
relies on precedence, whereas
if muxClass.COM1Active <1
does not. Barely significant in this example, but it can save a lot of
headscratching in more complex cases.

"Andrew Morton" <ak*@in-press.co.uk.invalidwrote in message
news:6m************@mid.individual.net...
snip <

Also, I think that "if muxClass.COM1Active <1" is easier to read than
"if Not muxClass.COM1Active = 1".

HTH

Andrew
Oct 30 '08 #13
I thought my threads were weird.

James, do you mean:
Not muxClass.COM1Active = 1
is interpreted as:
(Not muxClass.COM1Active) = 1
which would never be true, because true equates to -1, false to 0, and is
different from:
Not (muxClass.COM1Active = 1)

parens can be your friends...

maybe the whole problem is he should be testing for -1 instead of 1,
I don't know.

"James Hahn" wrote:
"easier to read" is open to debate (although I don't disagree), but
if Not muxClass.COM1Active = 1
relies on precedence, whereas
if muxClass.COM1Active <1
does not. Barely significant in this example, but it can save a lot of
headscratching in more complex cases.

"Andrew Morton" <ak*@in-press.co.uk.invalidwrote in message
news:6m************@mid.individual.net...
snip <

Also, I think that "if muxClass.COM1Active <1" is easier to read than
"if Not muxClass.COM1Active = 1".

HTH

Andrew

Nov 3 '08 #14
No. The two expressions are equivalent. I was simply commenting that the
form
Not muxClass.COM1Active = 1
relies on
muxClass.COM1Active = 1
having a higher precedence than the Not. My preference is for having an
expression that doesn't rely on the default precedence rules, therefore I
would use either
Not (muxClass.COM1Active = 1)
which makes it explicit or (much simpler)
if muxClass.COM1Active <1

So not only does it _look_ more sensible but there's some programming sense
behind the choice - just a tiny bit in this case, but possibly relevant in
more complex cases. The original code was complicated enough without the
possibility of misunderstanding the implied precedence rules.

"Beth" <Be**@discussions.microsoft.comwrote in message
news:3C**********************************@microsof t.com...
>I thought my threads were weird.

James, do you mean:
Not muxClass.COM1Active = 1
is interpreted as:
(Not muxClass.COM1Active) = 1
which would never be true, because true equates to -1, false to 0, and is
different from:
Not (muxClass.COM1Active = 1)

parens can be your friends...

maybe the whole problem is he should be testing for -1 instead of 1,
I don't know.

"James Hahn" wrote:
>"easier to read" is open to debate (although I don't disagree), but
if Not muxClass.COM1Active = 1
relies on precedence, whereas
if muxClass.COM1Active <1
does not. Barely significant in this example, but it can save a lot of
headscratching in more complex cases.

"Andrew Morton" <ak*@in-press.co.uk.invalidwrote in message
news:6m************@mid.individual.net...
snip <

Also, I think that "if muxClass.COM1Active <1" is easier to read than
"if Not muxClass.COM1Active = 1".

HTH

Andrew

Nov 3 '08 #15
so you're saying you don't like the left-to-right thing being overridden by
the precedence rules, because who remembers the precedence rules anyways (I
don't, obviously. I use parens.)

I don't know why this guy's confused, then.

"James Hahn" wrote:
No. The two expressions are equivalent. I was simply commenting that the
form
Not muxClass.COM1Active = 1
relies on
muxClass.COM1Active = 1
having a higher precedence than the Not. My preference is for having an
expression that doesn't rely on the default precedence rules, therefore I
would use either
Not (muxClass.COM1Active = 1)
which makes it explicit or (much simpler)
if muxClass.COM1Active <1

So not only does it _look_ more sensible but there's some programming sense
behind the choice - just a tiny bit in this case, but possibly relevant in
more complex cases. The original code was complicated enough without the
possibility of misunderstanding the implied precedence rules.

"Beth" <Be**@discussions.microsoft.comwrote in message
news:3C**********************************@microsof t.com...
I thought my threads were weird.

James, do you mean:
Not muxClass.COM1Active = 1
is interpreted as:
(Not muxClass.COM1Active) = 1
which would never be true, because true equates to -1, false to 0, and is
different from:
Not (muxClass.COM1Active = 1)

parens can be your friends...

maybe the whole problem is he should be testing for -1 instead of 1,
I don't know.

"James Hahn" wrote:
"easier to read" is open to debate (although I don't disagree), but
if Not muxClass.COM1Active = 1
relies on precedence, whereas
if muxClass.COM1Active <1
does not. Barely significant in this example, but it can save a lot of
headscratching in more complex cases.

"Andrew Morton" <ak*@in-press.co.uk.invalidwrote in message
news:6m************@mid.individual.net...
snip <

Also, I think that "if muxClass.COM1Active <1" is easier to read than
"if Not muxClass.COM1Active = 1".

HTH

Andrew


Nov 3 '08 #16
I don't think anyone knows why OP is confused because he never comes back to
indicate whether or not he worked it out. He just asks another question
from somewhere else in the project.

"Beth" <Be**@discussions.microsoft.comwrote in message
news:BD**********************************@microsof t.com...
so you're saying you don't like the left-to-right thing being overridden
by
the precedence rules, because who remembers the precedence rules anyways
(I
don't, obviously. I use parens.)

I don't know why this guy's confused, then.
Nov 3 '08 #17

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

28
by: Fábio Mendes | last post by:
I'm sorry if it's an replicate. Either my e-mail program is messing with things or the python-list sent my msg to /dev/null. I couldn't find anything related in previous PEP's, so here it goes a...
26
by: Joe Stevenson | last post by:
Hi all, I skimmed through the docs for Python, and I did not find anything like a case or switch statement. I assume there is one and that I just missed it. Can someone please point me to the...
7
by: Guy Hocking | last post by:
Hi there, I have a problem in my ASP/SQL Server application i am developing, i hope you guys can help. I have a ASP form with list boxes populated by SQL tables. When a user selects a value...
1
by: M Wells | last post by:
Hi All, Just wondering if anyone can tell me if you can test for multiple conditions as part of an "IF" statement in T-SQL in SQL Server 2000? ie something like: IF @merr = 1 or @merr=2...
5
by: Alvin Bruney | last post by:
Is a switch more efficient than an if statement? I observe thru the debugger that a switch statement jumps directly to its case handler where as an if statement examines all conditions...
1
by: priyanka2203 | last post by:
Hi guys, I have a doubt regarding the CASE statement. It might sound silly, but me being new to DB2, it is kind of a genuine doubt. Try helping me with this.. When we use a case statement...
12
by: Karlo Lozovina | last post by:
I'm not sure if Python can do this, and I can't find it on the web. So, here it goes: try: some_function() except SomeException: some_function2() some_function3() ...
0
by: rohitkishoregupta | last post by:
Hi, Table A Col1 Col2 Col3 Col4 Table B Col5 Both tables are not linked to each other.
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.