Anpassen des Kalibrierungsrasters und benutzerdefinierter Parameter für „Bestanden/Nicht bestanden“
Angenommen, Sie möchten ein paar Dinge mit einem Raster aus Kalibrierungstestpunkten machen. Zum Beispiel – wenn Sie Ihre eigenen Kriterien für „Bestanden“ oder „Nicht bestanden“ festlegen möchten. Dazu fügen Sie zunächst einen benutzerdefinierten Ereignisauslöser für „Ausrüstung hinzufügen (nachher)“ hinzu. In diesem Code können Sie zudem festlegen, wie die Auflösung und die Rundung für jede Spalte angezeigt werden sollen – über die üblichen Einstellungsmöglichkeiten für die Auflösung hinaus. Wenn Sie „PassFailOverride“ auf „True“ setzen, wird Ihr „Override“-Code bei „Pass“ und „Fail“ ausgeführt. Mit „ResOverride“ weisen Sie Ihr Programm an, Felder so zu verknüpfen, dass deren Werte aus anderen Feldern übernommen werden. Sie können auch den „Offset“ für die Auflösung einstellen. Damit ein Feld Daten entsprechend seiner Auflösung „kürzt“, setzen Sie den Wert von „TruncFIELDNAME“ auf „True“.
Sie könnten den folgenden Code verwenden:
sCompany = LookupEquipmentCompany
sID = LookupEquipmentID
If sID <> "", then
CurrentTolDir = ReturnFromSQL("SELECT TOL_DIRECTION FROM GAGES WHERE COMPANY='" & sCompany & "' AND GAGE_SN='" & sID & "'")
Wenn CurrentTolDir = "SPECIAL TOL." dann
PassFailOverride = True <-- Dies
ResOverride = True
TruncTol = True
SetResTol = True
ResFieldTol = "AV_RES"
TruncStandard = True
SetResStandard = True
ResFieldStandard = "NUM_RESOLUTION"
ResStandardOffset = 1
TruncExtra4 = True
SetResExtra4 = True
ResFieldExtra4 = "NUM_RESOLUTION"
ResExtra4Offset = 1
TruncExtra3 = True
SetResExtra3 = True
ResFieldExtra3 = "AV_RES"
TruncExtra5 = True
SetResExtra5 = True
ResFieldExtra5 = "AV_RES"
SetResAVResult = True
ResFieldAVResult = "AV_RES"
SetResExtra2 = True
ResFieldExtra2 = "AV_RES"
SetResUsedWarnTol = True
ResFieldUsedWarnTol = "AV_RES"
ResUsedWarnTolOffset = 2
else
PassFailOverride = False
ResOverride = False
end if
end if
Hinweis: Dies würde das Raster nur für neue Veranstaltungen ändern, nachdem Ausrüstung hinzugefügt wurde – wiederhole diesen Vorgang in einem „Event Launch (End)“, um dies auch für Veranstaltungen zu berücksichtigen, die gerade bearbeitet werden.
Um das Ergebnis „Bestanden/Nicht bestanden“ zu überschreiben, können Sie den folgenden Code in einer Trigger-Aktion vom Typ „Testpunkt vor dem Posten“ verwenden:
Wenn PassFailOverride = True, dann
dStandard = tpFieldByNameAsFloat("LINE_STANDARD")
dTolPlus = tpFieldByNameAsFloat("TOLERANCE1")
dTolMinus = tpFieldByNameAsFloat("TOLERANCE2")
dAsFound = tpFieldByNameAsFloat("RESULT1")
dAsLeft = tpFieldByNameAsFloat("RESULT2")
sFailed = tpFieldByNameAsString("OUT_OF_TOL")
sAdjusted = tpFieldByNameAsString("ADJUSTED")
sROV = tpFieldByNameAsString("ROV")
sLimited = tpFieldByNameAsString("LIMITED")
iAV_RES = tpFieldBynameAsInteger("AV_RES")
dCalTol = tpFieldByNameAsFloat("TEST_ACCURACY")
If (DualTolerance = True) then
dTolMinus2 = tpFieldByNameAsFloat("EXTRA_NUM3")
dStandard2 = tpFieldByNameAsFloat("EXTRA_NUM4")
dTolPlus2 = tpFieldByNameAsFloat("EXTRA_NUM5")
else
dTolMinus2 = dTolMinus
dStandard2 = dStandard
dTolPlus2 = dTolPlus2
end if
Wenn ((tpFieldIsNull("RESULT1") <> "1") und (tpFieldIsNull("LINE_STANDARD") <> "1")) then
dCalcDev = (dAsFound - dStandard)
tpSetFieldByNameAsFloat("UTOLERANCE2_WARN", dCalcDev)
dCalcDev = RoundToDecimal(dCalcDev,iAV_RES)
tpSetFieldByNameAsFloat("AV_AS_FOUND", dCalcDev)
else
tpSetFieldByNameNull("UTOLERANCE2_WARN")
tpSetFieldByNameNull("AV_AS_FOUND")
end if
Wenn (DualTolerance = True), dann
Wenn ((tpFieldIsNull("RESULT2") <> "1") und (tpFieldIsNull("EXTRA_NUM4") <> "1")) dann
dCalcDev2 = (dAsLeft - dStandard2)
tpSetFieldByNameAsFloat("UTOLERANCE1_WARN", dCalcDev2)
dCalcDev2 = RoundToDecimal(dCalcDev2,iAV_RES)
tpSetFieldByNameAsFloat("EXTRA_NUM2", dCalcDev2)
else
tpSetFieldByNameNull("UTOLERANCE1_WARN")
tpSetFieldByNameNull("EXTRA_NUM2")
end if
else
If ((tpFieldIsNull("RESULT2") <> "1") und (tpFieldIsNull("LINE_STANDARD") <> "1")) dann
dCalcDev2 = (dAsLeft - dStandard2)
tpSetFieldByNameAsFloat("UTOLERANCE1_WARN", dCalcDev2)
dCalcDev2 = RoundToDecimal(dCalcDev2,iAV_RES)
tpSetFieldByNameAsFloat("EXTRA_NUM2", dCalcDev2)
else
tpSetFieldByNameNull("UTOLERANCE1_WARN")
tpSetFieldByNameNull("EXTRA_NUM2")
end if
end if
sVerdict = tpFieldByNameAsString("VERDICT")
Wenn sVerdict = "" dann
iFromType = 1
sonstWenn sVerdict = "F" dann
iFromType = 2
sonstWenn sVerdict = "A" dann
iFromType = 3
sonstWenn sVerdict = "L" dann
iFromType = 4
sonstWenn sVerdict = "R" dann
iFromType = 5
Ende Wenn
Wenn iFromType = 2, dann
CalFailed = (CalFailed - 1)
elseIf iFromType = 3, dann
CalFailed = (CalFailed - 1)
CalAdjusted = (CalAdjusted - 1)
elseIf iFromType = 4, dann
CalFailed = (CalFailed - 1)
CalLimited = (CalLimited - 1)
elseIf iFromType = 5 then
CalROV = (CalROV - 1)
end if
Wenn (tpFieldIsNull("AV_AS_FOUND") <> "1") dann
Wenn (CDbl(Abs(tpFieldByNameAsFloat("AV_AS_FOUND"))) <= CDbl(dCalTol)) dann
sNewVerdict = ""
sonst
sNewVerdict = "F"
end if
sonst
sNewVerdict = ""
end if
Wenn sFailed = "1" dann
sNewVerdict = "F"
end if
Wenn sNewVerdict = "F" dann
Wenn (tpFieldIsNull("EXTRA_NUM2") <> "1") then
If (CDbl(Abs(tpFieldByNameAsFloat("EXTRA_NUM2"))) <= CDbl(dCalTol)) then
sNewVerdict = "A"
end if
end if
If sAdjusted = "1" then
sNewVerdict = "A"
end if
end if
If sNewVerdict = "F", dann
Wenn sLimited = "1", dann
sNewVerdict = "L"
end if
end if
Wenn sROV = "1", dann
sNewVerdict = "R"
end if
sVerdict = sNewVerdict
; Wenn sVerdict = "" dann
; iToType = 1
; elseif sVerdict = "F" dann
; iToType = 2
; elseif sVerdict = "A" dann
; iToType = 3
; elseif sVerdict = "L" dann
; iToType = 4
; elseif sVerdict = "R" dann
; iToType = 5
; end if
tpSetFieldByNameAsString("VERDICT", sVERDICT)
Wenn iToType = 2, dann
CalFailed = (CalFailed + 1)
sonstWenn iToType = 3, dann
CalFailed = (CalFailed + 1)
CalAdjusted = (CalAdjusted + 1)
sonstWenn iToType = 4, dann
CalFailed = (CalFailed + 1)
CalLimited = (CalLimited + 1)
elseIf iToType = 5 then
CalROV = (CalROV + 1)
end if
end if |