Vai al contenuto principale

Configurazione delle bande di protezione nei report di PrintBuilder

Nota: nella directory di installazione del Modulo di incertezza è incluso un certificato IndySoft di esempio denominato GuardbandingExample.rtm, che contiene tutti i layout di esempio e il codice personalizzato menzionati in questa sezione della guida. Per importare questo modello di certificato di esempio in PrintBuilder, selezionare il tipo di modello "Certificati" in PrintBuilder e premere il pulsante "Importa da file".

La funzione di guardbanding può essere facilmente configurata in un rapporto CERTIFICATE o NON-CONFORMANCE di IndySoft utilizzando PrintBuilder. Seleziona il report desiderato e modificalo utilizzando il generatore di report IndySoft (fai doppio clic sul nome del report in PrintBuilder). Seleziona il sottorapporto "CalibrationTestPoints" dalle schede in basso, quindi aggiungi il campo "Incertezza" alla griglia dei punti di prova. Di seguito è riportato un esempio:



Aggiunta del campo "Uncertainty" al certificato - Esempio

Oltre al nuovo campo "Incertezza", questo esempio utilizza anche un simbolo facoltativo *** per indicare se un punto di prova è potenzialmente fuori tolleranza quando si tiene conto dell'incertezza. È possibile impostare un codice personalizzato che mostri o nasconda questi *** per ogni punto di test utilizzando la scheda "Calc" in IndySoft Report Designer. Di seguito è riportato un esempio di questo codice personalizzato. In questo caso, l'evento BeforePrint viene utilizzato per la banda "Detail" del sottorapporto "CalibrationTestPoints".



Codice personalizzato per la visualizzazione/occultamento dell'avviso relativo alla banda di sicurezza in DetailBeforePrint

Pascal

Var
dUncertainty, dAsFound, dTolerancePlus, dToleranceMinus : Double;

{mostra/nascondi *** etichetta in base al guardbanding}
Label3.Visible := False;
dUncertainty := CalibrationTestPoints['Uncertainty'];
dAsFound := CalibrationTestPoints['As Found'];
dTolerancePlus := CalibrationTestPoints['Tolerance +'];
dTolleranzaMinus := PuntiTestCalibrazione['Tolleranza -'];

se dComeTrovato + dIncertezza > dTolleranzaPlus allora Etichetta3.Visibile :=True;
se dComeTrovato - dIncertezza < dTolleranzaMinus allora Etichetta3.Visibile :=True;

se Etichetta3.Visibile allora Etichetta3.Visibile := True;

Infine, è probabilmente necessario impostare la visualizzazione del campo "Incertezza" nel certificato in base alla risoluzione specificata nel bilancio di incertezza (che non è necessariamente la risoluzione specificata per i campi "As Found", "As Left" o "Tolleranza"). Questa risoluzione del budget di incertezza viene mappata in un campo personalizzato di punto di prova utilizzando l'opzione «Mappa unità/ris. Campo "To" nel modulo "Incertezza". Ai fini di questo esempio, è stata selezionata l'opzione «Custom 1» per «Map Unit/Res. A. Per formattare il valore di incertezza nella griglia dei punti di prova all'interno del certificato, utilizzare il codice personalizzato riportato di seguito:



Codice "BeforeDetail" per l'applicazione della risoluzione dell'incertezza

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 Risoluzione dell'incertezza, deve prima analizzare da '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;
if bWithinParentheses then
begin
if ((Copy(sUncertRes, j, 1) = '0') or (Copy(sUncertRes, j, 1) = '1') or
((Copy(sUncertRes, j, 1) = '2') or (Copy(sUncertRes, j, 1) = '3') oppure
((Copy(sUncertRes, j, 1) = '4') oppure (Copy(sUncertRes, j, 1) = '5') oppure
((Copy(sUncertRes, j, 1) = '6') oppure (Copy(sUncertRes, j, 1) = '7') o
((Copy(sUncertRes, j, 1) = '8') o (Copy(sUncertRes, j, 1) = '9')) allora
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;

Nell'esempio di codice riportato sopra, si noti che Label3 si riferisce al componente di testo «***» aggiunto nella scheda Progettazione. L'etichetta 2 si riferisce alla didascalia sotto i punti di prova che recita: «I punti di prova contrassegnati con "***" potrebbero non rientrare nei limiti di tolleranza se si tiene conto dell'incertezza.». Poiché la proprietà Visible di Label2 è impostata di default su False nella tabella principale Design, Label2 verrà visualizzata solo se è presente almeno un punto di test contrassegnato con "***". |