Ir diretamente para o conteúdo principal

Personalização da grelha de calibração e dos parâmetros personalizados de aprovação/reprovação

Suponha que queira fazer algumas coisas com uma grelha de pontos de teste de calibração. Por exemplo, se quiser definir os seus próprios critérios para aprovação/reprovação. Para tal, basta adicionar primeiro um gatilho de evento personalizado para «Adicionar equipamento (após)». Neste mesmo código, também é possível personalizar a forma como a resolução e o truncamento são apresentados para cada coluna — para além das formas habituais de definir a resolução. Definir PassFailOverride como True permite que o seu código de «substituição» seja executado para as respostas «Aprovado»/«Reprovado». O ResOverride indica ao seu programa para associar campos de forma a que a sua resolução seja obtida a partir de outros campos. Também pode definir o «desvio» para a resolução. Para que um campo «trunque» os dados com base na sua resolução, defina o valor de TruncFIELDNAME como True.

Pode utilizar o seguinte código:

sCompany = LookupEquipmentCompany

sID = LookupEquipmentID

If sID <> "" then

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

Se CurrentTolDir = "SPECIAL TOL." então

PassFailOverride = True <-- Isto

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: Isto só alteraria a grelha para novos eventos após a adição do equipamento — repita esta mesma lógica num «Lançamento do evento (Fim)» para que também se aplique aos eventos que estão a ser editados.

Para substituir o resultado «Aprovado/Reprovado», pode utilizar o código abaixo numa ação de gatilho «Ponto de teste antes da publicação»:

Se PassFailOverride = True, então

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

caso contrário

dTolMinus2 = dTolMinus

dStandard2 = dStandard

dTolPlus2 = dTolPlus2

fim se

Se ((tpFieldIsNull("RESULT1") <> "1") e (tpFieldIsNull("LINE_STANDARD") <> "1")) então

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

Se (DualTolerance = True), então

Se ((tpFieldIsNull("RESULT2") <> "1") e (tpFieldIsNull("EXTRA_NUM4") <> "1")) então

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

Se sVerdict = "" então

iFromType = 1

caso contrário, se sVerdict = "F" então

iFromType = 2

caso contrário, se sVerdict = "A" então

iFromType = 3

caso contrário, se sVerdict = "L" então

iFromType = 4

caso contrário, se sVerdict = "R" então

iFromType = 5

fim do caso

Se iFromType = 2, então

CalFailed = (CalFailed - 1)

; caso contrário, se iFromType = 3, então

CalFailed = (CalFailed - 1)

CalAdjusted = (CalAdjusted - 1)

; caso contrário, se iFromType = 4, então

CalFailed = (CalFailed - 1)

CalLimited = (CalLimited - 1)

elseIf iFromType = 5 then

CalROV = (CalROV - 1)

end if

Se (tpFieldIsNull("AV_AS_FOUND") <> "1") então

Se (CDbl(Abs(tpFieldByNameAsFloat("AV_AS_FOUND"))) <= CDbl(dCalTol)) então

sNewVerdict = ""

caso contrário

sNewVerdict = "F"

fim se

caso contrário

sNewVerdict = ""

fim se

Se sFailed = "1" então

sNewVerdict = "F"

fim se

Se sNewVerdict = "F" então

Se (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", então

Se sLimited = "1", então

sNewVerdict = "L"

fim se

fim se

Se sROV = "1", então

sNewVerdict = "R"

fim se

sVerdict = sNewVerdict

; Se sVerdict = "" então

; iToType = 1

; caso contrário, se sVerdict = "F" então

; iToType = 2

; caso contrário, se sVerdict = "A" então

; iToType = 3

; caso contrário, se sVerdict = "L" então

; iToType = 4

; caso contrário, se sVerdict = "R" então

; iToType = 5

; fim do caso

tpSetFieldByNameAsString("VERDICT", sVERDICT)

Se iToType = 2, então

CalFailed = (CalFailed + 1)

caso contrário, se iToType = 3, então

CalFailed = (CalFailed + 1)

CalAdjusted = (CalAdjusted + 1)

caso contrário, se iToType = 4, então

CalFailed = (CalFailed + 1)

CalLimited = (CalLimited + 1)

elseIf iToType = 5 then

CalROV = (CalROV + 1)

end if

end if |