Ir al contenido principal

Personalización de la tabla de calibración y de los parámetros personalizados de «aprobado/suspendido»

Imagina que quieres hacer un par de cosas con una cuadrícula de puntos de prueba de calibración. Por ejemplo, si quisieras establecer tus propios criterios para aprobar o suspender. Para ello, primero hay que añadir un desencadenador de evento personalizado para «Añadir equipo (después)». En este mismo código también puedes personalizar cómo se muestran la resolución y el truncamiento de cada columna, más allá de las formas habituales en que se configura la resolución. Si se establece PassFailOverride en True, se ejecutará el código de «anulación» tanto en caso de aprobado como de suspenso. ResOverride indica a tu programa que vincule los campos para que su resolución se obtenga a partir de otros campos. También puedes configurar el «desplazamiento» para la resolución. Para que un campo «trunque» los datos en función de su resolución, establezca el valor de TruncFIELDNAME en True.

Podrías utilizar el siguiente código:

sCompany = LookupEquipmentCompany

sID = LookupEquipmentID

If sID <> "" then

CurrentTolDir = ReturnFromSQL("SELECT TOL_DIRECTION FROM GAGES WHERE COMPANY='" & sCompany & "' AND GAGE_SN='" & sID & "'")

Si CurrentTolDir = "SPECIAL TOL." entonces

PassFailOverride = True <-- Esto

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

Nota: Esto solo modificaría la cuadrícula de los nuevos eventos una vez que se haya añadido el equipo; repite esta misma lógica en un «Inicio (Fin) del evento» para que también se aplique a los eventos que se estén editando.

Para anular el resultado «Aprobado/Suspendido», puedes utilizar el código siguiente en una acción de activador «Punto de prueba antes de la publicación»:

Si PassFailOverride = True, entonces

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

Si ((tpFieldIsNull("RESULT1") <> "1") y (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

Si (DualTolerance = True), entonces

Si ((tpFieldIsNull("RESULT2") <> "1") y (tpFieldIsNull("EXTRA_NUM4") <> "1")) entonces

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") and (tpFieldIsNull("LINE_STANDARD") <> "1")) then

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")

Si sVerdict = "" entonces

iFromType = 1

elseIf sVerdict = "F" entonces

iFromType = 2

elseIf sVerdict = "A" entonces

iFromType = 3

elseIf sVerdict = "L" entonces

iFromType = 4

elseIf sVerdict = "R" entonces

iFromType = 5

end if

Si iFromType = 2, entonces

CalFailed = (CalFailed - 1)

; si no, si iFromType = 3, entonces

CalFailed = (CalFailed - 1)

CalAdjusted = (CalAdjusted - 1)

; si no, si iFromType = 4, entonces

CalFailed = (CalFailed - 1)

CalLimited = (CalLimited - 1)

elseIf iFromType = 5 then

CalROV = (CalROV - 1)

end if

Si (tpFieldIsNull("AV_AS_FOUND") <> "1") entonces

Si (CDbl(Abs(tpFieldByNameAsFloat("AV_AS_FOUND"))) <= CDbl(dCalTol)) entonces

sNewVerdict = ""

else

sNewVerdict = "F"

end if

else

sNewVerdict = ""

end if

Si sFailed = "1" entonces

sNewVerdict = "F"

end if

Si sNewVerdict = "F" entonces

Si (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", entonces

Si sLimited = "1", entonces

sNewVerdict = "L"

fin si

fin si

Si sROV = "1", entonces

sNewVerdict = "R"

fin si

sVerdict = sNewVerdict

; Si sVerdict = "" entonces

; iToType = 1

; elseif sVerdict = "F" entonces

; iToType = 2

; elseif sVerdict = "A" entonces

; iToType = 3

; elseIf sVerdict = "L" entonces

; iToType = 4

; elseIf sVerdict = "R" entonces

; iToType = 5

; end if

tpSetFieldByNameAsString("VERDICT", sVERDICT)

Si iToType = 2, entonces

CalFailed = (CalFailed + 1)

; si no, si iToType = 3, entonces

CalFailed = (CalFailed + 1)

CalAdjusted = (CalAdjusted + 1)

; si no, si iToType = 4, entonces

CalFailed = (CalFailed + 1)

CalLimited = (CalLimited + 1)

elseIf iToType = 5 then

CalROV = (CalROV + 1)

end if

end if |