Ir al contenido principal

Configuración de los márgenes de seguridad en los informes de PrintBuilder

Nota: En el directorio de instalación del módulo de incertidumbre se incluye un certificado de IndySoft de ejemplo llamado GuardbandingExample.rtm, que contiene todo el diseño de ejemplo y el código personalizado mencionados en este tema de ayuda. Para importar esta plantilla de certificado de ejemplo a PrintBuilder, selecciona el tipo de plantilla «Certificados» en PrintBuilder y pulsa el botón «Importar desde archivo».

La configuración de los márgenes de seguridad se puede realizar fácilmente en un informe de CERTIFICADO o de NO CONFORMIDAD de IndySoft utilizando PrintBuilder. Seleccione el informe correspondiente y edítelo con el diseñador de informes de IndySoft (haga doble clic en el nombre del informe en PrintBuilder). Selecciona el subinforme «CalibrationTestPoints» en las pestañas de la parte inferior y, a continuación, añade el campo «Uncertainty» a la tabla de puntos de prueba. A continuación se muestra un ejemplo:



Cómo añadir un campo de incertidumbre a un certificado: ejemplo

Además del nuevo campo «Incertidumbre», este ejemplo también utiliza un símbolo opcional *** para indicar si un punto de prueba podría estar fuera de tolerancia cuando se tiene en cuenta la incertidumbre. Puede configurar un código personalizado que muestre u oculte estos *** en cada punto de prueba utilizando la pestaña «Calc» del IndySoft Report Designer. A continuación se muestra un ejemplo de este código personalizado. En este caso, el evento BeforePrint se utiliza para la banda «Detail» del subinforme «CalibrationTestPoints».



Código personalizado de DetailBeforePrint para mostrar u ocultar el aviso sobre el margen de seguridad

Pascal

Var
dUncertainty, dAsFound, dTolerancePlus, dToleranceMinus : Double;

{mostrar/ocultar *** etiqueta en función del margen de seguridad}
Label3.Visible := False;
dUncertainty := CalibrationTestPoints['Uncertainty'];
dAsFound := CalibrationTestPoints['As Found'];
dTolerancePlus := CalibrationTestPoints['Tolerance +'];
dToleranciaMenos := PuntosDePruebaDeCalibración['Tolerancia -'];

si dComoSeEncontró + dIncertidumbre > dToleranciaMás entonces Etiqueta3.Visible :=True;
si dComoSeEncontró - dIncertidumbre < dToleranciaMenos entonces Etiqueta3.Visible :=True;

si Etiqueta3.Visible entonces Etiqueta3.Visible := True;

Por último, es probable que sea necesario ajustar el formato del campo «Incertidumbre» en el certificado de acuerdo con la resolución especificada en el balance de incertidumbre (que no tiene por qué coincidir con la resolución especificada para los campos «Tal y como se encontró», «Tal y como se dejó» o «Tolerancia»). Esta resolución presupuestaria de incertidumbre se asigna a un campo personalizado de punto de prueba mediante la opción «Asignar unidad/Res.». Campo «To» en el módulo de incertidumbre. A efectos de este ejemplo, se ha seleccionado «Custom 1» para «Map Unit/Res.». «A». Para dar formato al valor de la incertidumbre en la tabla de puntos de prueba del certificado, utilice el código personalizado que se muestra a continuación:



Código de BeforeDetail para aplicar la resolución de incertidumbre

Pascal

Var
I, I2, I3, iNumResolution, iResResolution, j : Integer;
sRes, sRes2 : String;
sSpecFormat, sResultFormat: String;
sUncertRes, sUncertTemp : String;
iUncertRes : Integer;
bWithinParentheses: Boolean;
dUncertainty, dAsFound, dTolerancePlus, dToleranceMinus : Double;

begin
{Resolución de incertidumbre de Apple, primero debe analizarse desde 'Custom 1'}
sUncertRes := CalibrationTestPoints['Custom 1'];
bWithinParentheses := False;
sUncertTemp := '';
for j := 0 to 29 do
begin
if Copy(sUncertRes, j, 1) = '(' then bWithinParentheses := True;
if Copy(sUncertRes, j, 1) = ')' then bWithinParentheses := False;
si bWithinParentheses entonces
begin
si ((Copy(sUncertRes, j, 1) = '0') o (Copy(sUncertRes, j, 1) = '1') o
((Copy(sUncertRes, j, 1) = '2') o (Copy(sUncertRes, j, 1) = '3') o
((Copy(sUncertRes, j, 1) = '4') o (Copy(sUncertRes, j, 1) = '5') o
((Copy(sUncertRes, j, 1) = '6') o (Copy(sUncertRes, j, 1) = '7') o
((Copy(sUncertRes, j, 1) = '8') o (Copy(sUncertRes, j, 1) = '9')) entonces
sUncertTemp := sUncertTemp + Copy(sUncertRes, j, 1);
end;

end;
iUncertRes := StrToInt(sUncertTemp);
sRes := '#######0';
if ((iUncertRes >= 0) and (iUncertRes <= 12) then i2 := iUncertRes
else i2 := 6;
if i2 > 0 then
begin
sRes := sRes + '.';
for i := 0 to i2-1 do sRes := sRes + '0';
end;
DBText1.DisplayFormat := sRes;

En el ejemplo de código anterior, ten en cuenta que Label3 hace referencia al componente de texto «***» añadido en la pestaña Diseño. La etiqueta 2 hace referencia al texto que aparece debajo de los puntos de prueba, que dice: «Los puntos de prueba marcados con «***» pueden estar fuera de tolerancia si se tiene en cuenta la incertidumbre». Dado que la propiedad «Visible» de Label2 está establecida por defecto en «False» en la tabla de diseño principal, Label2 solo se mostrará si hay al menos un punto de prueba marcado con «***». |