Configuration des marges de sécurité dans les rapports PrintBuilder
Remarque : un exemple de certificat IndySoft nommé GuardbandingExample.rtm est inclus dans le répertoire d'installation de votre module d'incertitude ; il contient l'ensemble de la mise en page et du code personnalisé mentionnés dans cette rubrique d'aide. Pour importer ce modèle de certificat dans PrintBuilder, sélectionnez le type de modèle « Certificats » dans PrintBuilder, puis cliquez sur le bouton « Importer depuis un fichier ».
La configuration de la plage de sécurité s'effectue facilement dans un rapport CERTIFICATE ou NON-CONFORMANCE d'IndySoft à l'aide de PrintBuilder. Sélectionnez le rapport souhaité, puis modifiez-le à l'aide du générateur de rapports IndySoft (double-cliquez sur le nom du rapport dans PrintBuilder). Sélectionnez le sous-rapport « CalibrationTestPoints » dans les onglets situés en bas, puis ajoutez le champ « Uncertainty » dans votre tableau « Test Points ». En voici un exemple ci-dessous :

Ajouter un champ « Uncertainty » à un certificat - Exemple
Outre le nouveau champ « Incertitude », cet exemple utilise également un symbole facultatif *** pour indiquer si un point de contrôle est susceptible de se situer hors tolérance lorsque l'incertitude est prise en compte. Vous pouvez configurer un code personnalisé permettant d'afficher ou de masquer ces *** pour chaque point de test à l'aide de l'onglet « Calc » dans IndySoft Report Designer. Vous trouverez ci-dessous un exemple de ce code personnalisé. Dans ce cas, l'événement BeforePrint est utilisé pour la bande « Detail » du sous-rapport « CalibrationTestPoints ».

Code personnalisé « DetailBeforePrint » pour afficher/masquer l'avertissement concernant les bandes de garde
Pascal
Var
dUncertainty, dAsFound, dTolerancePlus, dToleranceMinus : Double;
{afficher/masquer *** l'étiquette en fonction de la marge de sécurité}
Label3.Visible := False;
dUncertainty := CalibrationTestPoints['Uncertainty'];
dAsFound := CalibrationTestPoints['As Found'];
dTolerancePlus := CalibrationTestPoints['Tolerance +'];
dToleranceMinus := CalibrationTestPoints['Tolerance -'];
if dAsFound + dUncertainty > dTolerancePlus then Label3.Visible :=True;
if dAsFound - dUncertainty < dToleranceMinus then Label3.Visible :=True;
if Label3.Visible then Label3.Visible := True;
Enfin, il sera probablement nécessaire de mettre en forme l'affichage du champ « Incertitude » dans le certificat conformément à la résolution spécifiée dans le bilan d'incertitude (qui n'est pas nécessairement la même que celle spécifiée pour les champs « État initial », « État final » ou « Tolérance »). Cette résolution budgétaire d'incertitude est mappée dans un champ personnalisé de point de test à l'aide de la fonction « Map Unit/Res. Champ « To » dans le module « Incertitude ». Dans le cadre de cet exemple, « Custom 1 » a été sélectionné pour « Map Unit/Res. « À ». Pour mettre en forme la valeur d'incertitude dans le tableau des points de test du certificat, utilisez le code personnalisé indiqué ci-dessous :

Code « BeforeDetail » pour l'application de la résolution d'incertitude
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
{apple Résolution de l'incertitude, doit d'abord être analysée à partir de « 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 alors
begin
si ((Copy(sUncertRes, j, 1) = '0') ou (Copy(sUncertRes, j, 1) = '1') ou
((Copy(sUncertRes, j, 1) = '2') ou (Copy(sUncertRes, j, 1) = '3') ou
((Copy(sUncertRes, j, 1) = '4') ou (Copy(sUncertRes, j, 1) = '5') ou
((Copy(sUncertRes, j, 1) = '6') ou (Copy(sUncertRes, j, 1) = '7') ou
((Copy(sUncertRes, j, 1) = '8') ou (Copy(sUncertRes, j, 1) = '9')) alors
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;
Dans l'exemple de code ci-dessus, notez que Label3 fait référence au composant de texte « * * * » ajouté dans l'onglet Conception. La légende 2 fait référence à la note figurant sous les points de test, qui indique : « Les points de test marqués d'un « * * * » peuvent se situer hors tolérance si l'on tient compte de l'incertitude. » Étant donné que la propriété Visible de Label2 est définie par défaut sur False dans le tableau principal Design, Label2 ne s'affichera que s'il existe au moins un point de test marqué d'un « * * * ». |