2016-04-12 24 views
1

'da durum Durumun 41 veya 42 değerinin olup olmadığını kontrol etmek için aşağıdaki koşulda işlem yapmak istiyorum, ardından koşuldan çıkmak istiyorum, 41 veya 42 dışındaki herhangi bir değer SendEmailCPK'yi çalıştırmak istiyorum (Msg).orElse with in VB.NET

takiben i var kod, ancak değeri 42'den ve 41 farklıysa

If (rs.Fields("machine").Value <> "42" OrElse rs.Fields("machine").Value <> "41") Then 

    SendEmailCPK(Msg) 

    EventLog1.WriteEntry(EventLog1.Source, "Coil " & rs.Fields("Lot").Value & " " & rs.Fields("Coil").Value & " Cpk is Out of Spec " & rs.Fields("cpk").Value) 

End If 
+1

sana 'AndAlso' yerine metinden kodunuzda yazdıkları değil "değeri 41 veya 42 ise o zaman durumun çıkmak" dedi OrElse' –

+0

' ait istediğini düşünüyorum. bunun yerine "eğer değer 41 değilse ve 42 değilse o zaman durumu yapın" –

+0

Değerler her zaman Numaralar mı (Integers)? – Mych

cevap

2

Yapabileceğin rs.Fields ("makine") değerleri hep sayılar ise olduğunu anlamak için kod kolaylaştırır daha düzgün çözümü aşağıda Matt tarafından belirtildiği gibi

Dim machine as Int = CInt(rs.Fields("machine").Value) 

If Not (machine >= 41 AndAlso machine <= 42) Then 
    SendEmailCPK(Msg) 

    EventLog1.WriteEntry(EventLog1.Source, "Coil " & rs.Fields("Lot").Value & " " & rs.Fields("Coil").Value & " Cpk is Out of Spec " & rs.Fields("cpk").Value) 

End If 

...

If (machine < 41 AndAlso machine > 42) Then.... 
+0

Sana tamamen katılıyorum. Ancak (kişisel görüş olarak) ilk bakışta anlamanın daha zor olduğunu düşünüyorum ... –

+1

Birin bir buçuk sürümünün altısı ... her iki versiyon da (alan değerleri sayısal olduğu sürece) çalışacak ve Birbirleri kadar kafa karıştırıcıdır ... Çoğu programda olduğu gibi, bir cevaba ulaşmanın bir yolu daha var. – Mych

+1

Doğru ... Fark ettim başka bir şey: 'CInt (rs.Fields (" makine "). Değer)' –

3

Yani çalışmıyor?

If (rs.Fields("machine").Value <> "42" AndAlso rs.Fields("machine").Value <> "41") Then 
    SendEmailCPK(Msg) 
    EventLog1.WriteEntry(EventLog1.Source, "Coil " & rs.Fields("Lot").Value & " " & rs.Fields("Coil").Value & " Cpk is Out of Spec " & rs.Fields("cpk").Value) 
End If 
+0

Martin, Hızlı yanıt için teşekkürler, Değer 41 veya 42 olamaz, Her iki değer aynı anda mevcut değil, yalnızca bu değerlerin üzerinde koşulacaktır. – MEngineer

+1

@MEngineer No. Martin´in cevabı kesinlikle doğru. Eğer değer 42 değilse ve eğer değer 41 eqaul değilse, içerideki kodun uygulanmasını istersiniz. Bilgisayar bilimlerinde AND/OR arasındaki farkı ve insan dillerindeki yorumlamayı anlamak için lütfen [mantıksal gerçek] (https://en.wikipedia.org/wiki/Truth_table) hakkında biraz bilgi edinin. –

+0

orelse koşulu burada çalışamaz çünkü her ikisi de sistemde doğruysa her zaman doğru olarak değerlendirilir? VeEğer 42 bulunursa, bir şeyler yap. 41 bulunursa, şeyler doğru mu? – codeMonger123