tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: IF文で判断ミス
投稿日: 2009/05/15(Fri) 09:46
投稿者GOD
> 例えば、検査項目cに関して規格最大が6規格最小が0の場合でグリッド上の
> 検査結果が5でも判定結果が不良と判断されたり、同検査項目で検査結果が1
> で合格と判断されます。
> 私が見る限りではおかしい所は無いと思えるのですが、記述の誤りで判断結果
> がおかしいのか、それともIF文自体をこういった形でたくさん使用しているの
> が悪いのか、ご指摘ご指導して頂ければ勉強になります。
>
投稿されたコードに c 部分がないので正しいかどうかは掲示板を見ている人には分かりません。

余分なことかもしれませんが↓は関数化できませんか。(aとbの比較法が同じなのでできると思うのですが、c〜zでは違う方法で比較しているのかな。)
>   Select Case INSDATARS!Max a
>     Case "0"
>            Select Case INSDATARS!Min a
>                 Case 0 '●規格無
>                 Case Is > 0 '●下限片側規格
>                     If .TextMatrix(ROWNO, 2) < INSDATARS!Min a Then OUT_F = "1"
>            End Select
>     Case Is > 0
>             Select Case INSDATARS!Min a
>                 Case 0 '●上限片側規格
>                     If .TextMatrix(ROWNO, 2) > INSDATARS!Max a Then OUT_F = "1"
>                
>                 Case Is > 0 '●両側規格
>                     If .TextMatrix(ROWNO, 2) > INSDATARS!Max a Then OUT_F = "1"
>                     If .TextMatrix(ROWNO, 2) < INSDATARS!Min a Then OUT_F = "1"
>             End Select
>     End Select
----------- 呼び出し側
    Dim OUT_F As Boolean
    Dim strErr As String

    Do Until INSDATARS.EOF
        With MSFlexGrid1
            'aの処理
            OUT_F = FuncName(.TextMatrix(ROWNO, 2), INSDATARS!Min a, INSDATARS!Max a)
            If OUT_F Then
                strErr = strErr & "a不良,"
            End If
            'bの処理
            OUT_F = FuncName(.TextMatrix(ROWNO, 3), INSDATARS!Min b, INSDATARS!Max b)
            If OUT_F Then
                strErr = strErr & "b不良,"
            End If
            'c〜zの処理
            '
            If Right(strErr, 1) = "," Then
                strErr = Left(strErr, Len(strErr) - 1)
            End If
            .TextMatrix(ROWNO, 20) = strErr
        End With
        ROWNO = ROWNO + 1
        INSDATARS.MoveNext
    Loop
----------------------------------
'【機 能】
'   CompVal が規格内に収まっているか確認する
'【引き数】
'   CompVal     :比較する値
'   MinVal      :最小値
'   MaxVal      :最大値
'【戻り値】
'   True        :正常値
'   False       :異常値
Private Function FuncName(CompVal As Long, MinVal As Long, MaxVal As Long) As Boolean
     blnRet As Boolean

     blnRet = True
     Select Case MaxVal
     Case 0
            Select Case MinVal
                 Case 0 '●規格無
                 Case Is > 0 '●下限片側規格
                     If CompVal < MinVal Then blnRet = False
            End Select
     Case Is > 0
             Select Case MinVal
                 Case 0 '●上限片側規格
                     If CompVal > MaxVal Then blnRet = False
                
                 Case Is > 0 '●両側規格
                     If CompVal > MaxVal Then blnRet = False
                     If CompVal < MinVal Then blnRet = False
             End Select
     End Select
End Function

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。