AznDevil92
AznDevil92

Reputation: 554

How to use OR in IF, ELSE, THEN Condition - VB.Net

Trying to write a IF, ELSE, THEN statement with a few conditions. Below is my vb.net code:

If AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "Egan Jones" Or _
        AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "Farient Advisors" Or _
        AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "Glass Lewis" Or _
        AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "Internal Guidelines" Or _
        AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "ISS" Or _
        AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "None" Then
            RunSql("insert into institution_has_policy (institution_id,policy_id) values (" & _
                    InstitutionID & "," & NewPolicyID & ")")
End if

Basically, I am trying to tell the program that if AdvisoryFirmNameTextBox does not equal to any of the names listed in the condition, then go ahead and save the new information into the Institution_has_Policy table.

However, every time I run it, it runs the FIRST IF condition, but skips the other 5.

Can anyone help?

Upvotes: 0

Views: 628

Answers (3)

Paul Abbott
Paul Abbott

Reputation: 7211

I know this isn't answering your question directly, but you might want to try something cleaner and easier to read:

Dim badNames = New List(Of String) From { "Eagan Jones", "Farient Advisors", "Glass Lewis", "Internal Guidelines", "ISS", "None" }

if (badNames.Contains(AdvisoryFirms.AdvisoryFirmNameTextBox.Text)) then
    ...
else
    ...
end if

Upvotes: 3

K-Dawg
K-Dawg

Reputation: 3299

Try OrElse!

If AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "Egan Jones" OrElse _
    AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "Farient Advisors" OrElse _
    AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "Glass Lewis" OrElse _
    AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "Internal Guidelines" OrElse _
    AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "ISS" OrElse _
    AdvisoryFirms.AdvisoryFirmNameTextBox.Text <> "None" Then
        RunSql("insert into institution_has_policy (institution_id,policy_id) values (" & _
                InstitutionID & "," & NewPolicyID & ")")

Upvotes: 0

Marc B
Marc B

Reputation: 360702

You're using OR, which means the if() test can bail out as soon as ANY of the conditions evaluate to boolean TRUE. e.g.

 FALSE or FALSE or FALSE or TRUE or FALSE .... FALSE = TRUE

If your .Text is NOT equal to "Egan Jones", then that's "true", and the rest of the statement becomes irrelevant and execution will skip straight into the 'true' clause.

You want AND instead.

TRUE and TRUE and FALSE and TRUE ... = FALSE

Upvotes: 2

Related Questions