Имеете: Работа для цикла, который считает нарушения и отправляет электронное письмо, Необходимость: Также включать имена оскорбительных переменных - PullRequest
0 голосов
/ 03 июня 2019

У меня в программе есть параметры процесса аудита.Создан скрипт, который проверяет, нарушает ли аудит какой-либо из диапазонов спецификации (Upper Spec Limit = USL и Lower Spec Limit = LSL).В настоящее время, если нарушения> 0, он отправит электронное письмо, предупреждая инженера о необходимости проверки параметров.Я также хочу, чтобы он сообщал мне о параметрах / полях оповещения в теле письма, а не только о количестве нарушений.Это возможно?Вот функция в скрипте, которая проверяет нарушения.

Пробная переменная измерения в цикле for, а затем присваивает текущее проверенное поле имени индексированной переменной ...

Function AfterUpdateValuesSource(QWFunction)
    '---------------------------------------------------------------------------------------
    ' This script is called after the Source template is modified (Add or Edit last record).
    ' It then checks for Rule Violations RElated to Control Limits and sends an email if there are any rules violations
    ' Currently it prints the sum of the LCL and UCL violations
    ' Setting for QWField.limits.UCLtype will be set to 1 (calculated)  
    '---------------------------------------------------------------------------------------
    Dim oQWMisc, qwField, qwRule, BegRec, EndRec, Rec, Found, Count
    Dim ViolationsUCL, ViolationsLCL, ViolationsTot 
    Dim Answer, Msg, UcFieldName, I, UcRuleName, Value,varname
    Dim ruleUSL, ruleLSL, ruleUCL, ruleLCL

    'Ignore if not an Add or Edit of Last Record
    If Not (QWFunction = "A" Or _
           (QWFunction = "E" And QWRep.CurrentRecord = QWRep.RecordCount)) Then
       Exit Function
    End If

    'ViolationsUCL = 0
    'ViolationsLCL = 0
    'ViolationsTot = 0

    ruleUSL = 0
    ruleLSL = 0
    ruleUCL = 0
    ruleLCL = 0

    Count = 0
    For Each qwField in QWRep.Fields
        Count = Count + 1
    varname= qwField

        UcFieldName = Ucase(Replace(qwField.FieldName,"_"," "))
        If qwField.FieldType >= 4 And qwField.FieldType <= 7 Then
            Value = QWFile.Value(qwField.VariableNo) & ""
            'Calculate statistics for the population data current loaded in QW5.
            QWRep.CalcStatistics Count, 1
            If Value <> "" Then
                'Check USL Violation
                Select Case qwField.Limits.USLType
                    Case 1 'Calculated
                        If CDbl(value) > qwField.Selections(1).CalculatedLimits.USL Then
                            ruleUSL = ruleUSL + 1
                        End If
                    Case 2 'Fixed
                        If CDbl(value) > qwField.Limits.USL Then
                            ruleUSL = ruleUSL + 1

                        End If
                End Select

                'Check LSL Violation
                Select Case qwField.Limits.LSLType
                    Case 1 'Calculated
                        If CDbl(value) < qwField.Selections(1).CalculatedLimits.LSL Then
                            ruleLSL = ruleLSL + 1
                        End If
                    Case 2 'Fixed
                        If CDbl(value) < qwField.Limits.LSL Then
                            ruleLSL = ruleLSL + 1
                        End If
                End Select

                'Check UCL Violation
                Select Case qwField.Limits.UCLType
                    Case 1 'Calculated
                        If CDbl(value) > qwField.Selections(1).CalculatedLimits.UCL Then
                            ruleUCL = ruleUCL + 1
                        End If
                    Case 2 'Fixed
                        If CDbl(value) > qwField.Limits.UCL Then
                            ruleUCL = ruleUCL + 1
                        End If
                End Select

                'Check LCL Violation
                Select Case qwField.Limits.LCLType
                    Case 1 'Calculated
                        If CDbl(value) < qwField.Selections(1).CalculatedLimits.LCL Then
                            ruleLCL = ruleLCL + 1
                        End If
                    Case 2 'Fixed
                        If CDbl(value) < qwField.Limits.LCL Then
                            ruleLCL = ruleLCL + 1
                        End If
                End Select              
            End If
        End If
...