Access vba. Boolean vergeljking werkt niet

Status
Niet open voor verdere reacties.

KPTPTT

Gebruiker
Lid geworden
2 mrt 2018
Berichten
321
Hallo,
Ik heb een probleem met een Boolean vergelijking die voorheen werkte maar zonder aanpassingen nu niet meer werkt. Hoe iets eenvoudigs een kwelling kan zijn.
Code:
Dim sStatus1a As Integer
Dim sStatus1b As Integer
Dim sStatusTotal1 As Boolean

           MsgBox sStatus1a
           MsgBox sStatus1b
           If sStatus1a And sStatus1b <> 0 Then
                sStatusTotal1 = True
           End if
           MsgBox sStatusTotal1

Als sStatus1a en sStatus1b allebei <0> zijn dan is waarde van sStatusTotal1 <Waar>, dat kan toch niet. De oorspronkelijke setting van sStatusTotal1 was ook Integer maar dat werkte niet en dan <sStatusTotal1 = 1>. Wat zie ik over het hoofd, wat kan ik doen? Doet de onderliggende Interperter vervelend?
 
Je vergelijkt 2 Integers als waren het Booleans.
Dit zal beter gaan:
Code:
If sStatus1a + sStatus1b > 0 Then
    sStatusTotal1 = True
End if
 
Laatst bewerkt:
Dank voor je reactie. Je opmerking had ik ook getest, maar maakt het niet beter. Het is zelfs zo, als ik <sStatus1a = 12> maak, dan blijft de uitkomst van <sStatusTotal1 Onwaar>. Ik heb als extra een begingwaarde <sStatusTotal1 = False> van toegevoegd maar ook dat helpt niet.

Intussen na volharding gaat het nu goed. Ik heb vooraf aan de vergelijking sStatus1a en sStatus1b = O en sStatusTotal1 = False gemaakt en nu werkt het. Zo'n kort overleg op het forum dat helpt je weer op weg als je vast zit. Super, bedankt.
 
Ik denk dat je je nog eens goed moet verdiepen in het concept van Booleans.
 
Dank voor het meedenken. de integers hebben in het programma de waarde bv. 17 en 4, dus groter dan 0 of allebei de waarde 0. Dan klopt de vergelijking toch. Vervolgens mag ik sStatusTotal1 de Boolean waarde True toewijzen. Wat is daar verkeerd aan.? Ik had in eerste instantie sStatusTotal1 ook als interger en de waarde 1 gegeven maar dat werkte ook niet niet.
Inmiddels heb ik het met de oplossing #1 opgelost.
 
Waarom niet zo?
Code:
     If sStatus1a > 0 And sStatus1b > 0 Then sStatusTotal1 = True
 
Of zo
Code:
sStatusTotal1 = sStatus1a * sStatus1b > 0
 
Allemaal bedankt. Had ik nog niet bedacht, er zijn veel wegen naar Rome. Ik heb die van OctaFish toegepast en het werkt nu goed en ben weer terug op het rechte pad. Het probleem was de initialisatie. De vergelijking was één van de velen vergelijingen en was aan het vergelijken met voorgaande waarden en dat gaat niet goed.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan