Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Lalikowski am Januar 22, 2022, 14:42:48

Titel: if mit mehreren Bedingungen
Beitrag von: Lalikowski am Januar 22, 2022, 14:42:48
Hallo zusammen,

ich verzweifele an einem vermeintlich einfachen Problem.... ::)

In einem Formular möchte ich in einer if-Anweisung mehrere Bedingungen anfragen, doch genau das macht er nicht....

Hier einmal ein Beispiel:
If Me!Text_Spielwert = 9 Or 10 Or 11 Or 12 Or 24 And Me!Text_erspielte_Punkte > 31 Then
    MsgBox "gewonnen"
End If

If Me!Text_Spielwert = 9 Or 10 Or 11 Or 12 Or 24 And Me!Text_erspielte_Punkte = 0 Then
    MsgBox "selbst schwarz"
End If

was mache ich bloß falsch?

Grüße

Andreas
Titel: Re: if mit mehreren Bedingungen
Beitrag von: PhilS am Januar 22, 2022, 15:02:51
Zitat von: Lalikowski am Januar 22, 2022, 14:42:48In einem Formular möchte ich in einer if-Anweisung mehrere Bedingungen anfragen, doch genau das macht er nicht....
Eine Bedingung ist ein Ausdruck, der True oder False als Ergebnis hat.

Das wird die VBA Runtime auch bei deinem Beispiel völlig korrekt verarbeiten. Allerdings anders als du vermutlich erwartest.
Wenn man mal den Teil "Or 10" als Beispiel herausgreift, wird das zu:
If 10 Then
...

Was du vermutlich schreiben wolltest ist:
If Me!Text_Spielwert = 10 Then
...
Wenn du es richtig schreibst, wird es auch wie gewünscht funktionieren.


Du könntest dir mal das Select Case Statement (https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/select-case-statement) anschauen. Das erlaubt Konstrukte, wie in deinem Beispiel.
Titel: Re: if mit mehreren Bedingungen
Beitrag von: DF6GL am Januar 22, 2022, 15:04:32
Hallo,


If (Me!Text_Spielwert = 9 Or Me!Text_Spielwert = 10 Or Me!Text_Spielwert = 11 Or Me!Text_Spielwert = 12 Or Me!Text_Spielwert = 24) And Me!Text_erspielte_Punkte > 31 Then
oder besser mit Select Case arbeiten.
Titel: Re: if mit mehreren Bedingungen
Beitrag von: Lalikowski am Januar 22, 2022, 15:19:06
Hallo Franz, hallo PhilS,

habe mir Select case kurz angeschaut, aber wie verknüpfe ich die Bedingungen damit?..

Könntet Ihr mir bitte einmal anhand einer meiner Beispiele die entsprechende Select case Anweisung schreiben?

Dann komme ich fast sicher selbst weiter.... :)
Titel: Re: if mit mehreren Bedingungen
Beitrag von: DF6GL am Januar 22, 2022, 15:49:12
Hallo,

z. B. :


Select Case Me!Text_Spielwert
   Case 9 To 12, 24
       blnCase = True
   Case Else
       blnCase = False
End Select

If blnCase And Me!Text_erspielte_Punkte > 31 Then
  MsgBox "gewonnen"
End If



Titel: Re: if mit mehreren Bedingungen
Beitrag von: PhilS am Januar 22, 2022, 15:55:32
Zitat von: DF6GL am Januar 22, 2022, 15:49:12Select Case Me!Text_Spielwert
   Case 9 To 12, 24
       blnCase = True
   Case Else
       blnCase = False
End Select

If blnCase And Me!Text_erspielte_Punkte > 31 Then
  MsgBox "gewonnen"
End If
Das entspricht nicht ganz der ursprünglichen Bedingung; bzw. meiner Interpretation derselben.
Näher dran wäre IMO dies:
Select Case Me!Text_Spielwert
   Case 9 To 12
       blnCase = True
   Case 24
      blnCase = CBool(Me!Text_erspielte_Punkte > 31 )
   Case Else
       blnCase = False
End Select

If blnCase Then
  MsgBox "gewonnen"
End If
Titel: Re: if mit mehreren Bedingungen
Beitrag von: Lalikowski am Januar 22, 2022, 16:00:51
Hallo Ihr beiden,

die Prozedur vom Franz funktioniert, somit auch die erste von Dir PhilS.

Die zweite funktioniert leider nicht.

Ist auch nicht so wild, mit der funktionierenden Prozedur komme ich ein ganzes Stück weiter.

Danke dafür und vielleicht auf ein Neues...;.)

happy weekend

Andreas
Titel: Re: if mit mehreren Bedingungen
Beitrag von: Lalikowski am Januar 22, 2022, 16:18:35
....sorry Leute, kaum angefangen und schon das nächste Problem..... :o

Select Case Me!Text_Spielwert
   Case 9 To 12, 24
       blnCase = True
   Case Else
       blnCase = False
End Select

If blnCase And Me!Text_erspielte_Punkte > 89 Then
  Call Schneider_gespielt
End If

Bei >89 muss zwischen 31 und 89 abgefragt werden.....
Titel: Re: if mit mehreren Bedingungen
Beitrag von: PhilS am Januar 22, 2022, 16:32:36
Zitat von: Lalikowski am Januar 22, 2022, 16:00:51die Prozedur vom Franz funktioniert, somit auch die erste von Dir PhilS.
Die zweite funktioniert leider nicht.
Beide Varianten funktionieren technisch gesehen! - Sie haben nur unterschiedliche Ergebnisse.
Bei der Abweichung, die ich aufgezeigt habe, ging es darum dass die logische Verknüpfung von OR und AND aus deiner ursprünglichen Codezeile, wenn sie denn funktioniert hätte, ein anderes Ergebnis hat, als Franz' Select Case Beispiel.


Zitat von: Lalikowski am Januar 22, 2022, 16:18:35Bei >89 muss zwischen 31 und 89 abgefragt werden.....
Hier ist für mich keine verständliche Fragestellung erkennbar.
Titel: Re: if mit mehreren Bedingungen
Beitrag von: Lalikowski am Januar 22, 2022, 17:01:15
...sry, habe mich vielleicht nur unverständlich ausgedrückt...

Ich möchte, dass die Bedingung >89 durch zwischen 31 und 89 ersetzt wird.
Ist das überhaupt möglich?
Titel: Re: if mit mehreren Bedingungen
Beitrag von: DF6GL am Januar 22, 2022, 19:05:26
Hallo,

<quote>Ist das überhaupt möglich?</quote>
ja, warum denn nicht?

Nach meiner Interpretation Deiner Bedingungs-Kombinatorik könnte es so aussehen:


If blnCase And Me!Text_erspielte_Punkte >= 31 And  Me!Text_erspielte_Punkte <= 89 Then
Titel: Re: if mit mehreren Bedingungen
Beitrag von: Lalikowski am Januar 23, 2022, 07:05:45
....funktioniert hervorragend

DANKE
Titel: Re: if mit mehreren Bedingungen
Beitrag von: Beaker s.a. am Januar 23, 2022, 14:09:49
Hallo,
Wozu dient denn der Spielwert in dieser Berechnung?
Das Ergebnis (gewonnen, verloren, Schneider, schwarz) bzw.
die Punktzahl der erhaltenen Stiche ist davon doch völlig
unabhängig. Er wird doch nur für die Berechnung der Punkte
auf dem Board benötigt (mit/ohne * Spielwert).

gruss ekkehard
Titel: Re: if mit mehreren Bedingungen
Beitrag von: Lalikowski am Januar 24, 2022, 11:53:02
hallo Ekkehard,

vielleicht bin ich da tatsächlich zu umständlich.

Meine Überlegung dabei ist, dass die erzielten Augen im Zusammenhang mit dem Spiel zu sehen ist.

Beispiel:
Bei einem Spielwert von 23(Null) dürfen die erzielten Punkte nicht >0 sein, ansonsten verloren, anders bei einem Farbenspiel.
Titel: Re: if mit mehreren Bedingungen
Beitrag von: Beaker s.a. am Januar 24, 2022, 17:48:24
Das ist aber auch die einzige Ausnahme. Und du musst doch eh
beides (Spielwert/Stiche) eingeben um die Punkte zu berechnen,
oder woher kommen diese Variablen?
Titel: Re: if mit mehreren Bedingungen
Beitrag von: ebs17 am Januar 24, 2022, 21:25:34
Ich habe auch schon mal Skat gespielt. Ein Nullspiel hat man verloren, wenn man einen Stich bekommt, wobei das auch Luschen mit 0 Augen sein können.
Titel: Re: if mit mehreren Bedingungen
Beitrag von: Lalikowski am Januar 25, 2022, 11:10:25
...ich gebe bereits bei Spielansage vor, wie viele Punkte zum Gewinn nötig sind.
Ein anderes Beispiel wäre die Ansage von Schneider.

Gleichzeitig vergleiche ich den Reizwert mit dem tatsächlichen Spielwert, um auch eine Überreizung auswerten zu können.

Titel: Re: if mit mehreren Bedingungen
Beitrag von: Lalikowski am Januar 26, 2022, 19:17:46
Zitat von: ebs17 am Januar 24, 2022, 21:25:34Ich habe auch schon mal Skat gespielt. Ein Nullspiel hat man verloren, wenn man einen Stich bekommt, wobei das auch Luschen mit 0 Augen sein können.

...ups, das ist in der Tat ein Problem.
Werde vorerst wohl mit der Eingabe von fiktiven Augen arbeiten müssen.

Gehe das Problem mal an....

Danke für den Tip..
Titel: Re: if mit mehreren Bedingungen
Beitrag von: Lalikowski am Januar 27, 2022, 09:10:30
...das Problem mit den Null-Spielen habe ich jetzt wie folgt gelöst:

Das Feld der erspielten Augen steht standardmäßig auf NULL.
Wenn nun ein Null-Spiel gespielt wird und der Wert der erspielten Augen >=0 ist, dann ist das Spiel verloren.
Bleibt der Wert weiter NULL, dann ist das Spiel gewonnen, d.h. also keine Stich bekommen.

Nochmals Danke für den Einwand......