home > jadex > crystal crystal tips {- matrix -}

// Convert the Matrix Time to a String Time.
//
if IsNull ({Samples.SampleTime2}) then numberVar timefield := 2000 else timefield := {Samples.SampleTime2};
//
if timefield > 1440 then timefield := 2000;
if timefield < 1 then timefield := 2000;
NumberVar NHour := Truncate (timefield / 60);
NumberVar NMinute := Remainder (timefield, 60);
stringVar Sthe_time := ToText (NHour, '00') + ':' + ToText (NMinute, '00');
if timefield > 1500 then Sthe_time := '-- :--';
Sthe_Time;

// Convert the Matrix Date to a String Date, Example Date 15th Oct 2002 (20,021,015.00)
//
if IsNull ({Samples.ApprovalDate}) then numberVar datefield := 19000101 else datefield := {Samples.ApprovalDate};
//
if datefield > 99990101 then datefield := 19000101;
if datefield < 19000101 then datefield := 19000101;
StringVar MatrixDate := ToText (datefield); //'20,021,015.00'
StringVar SYear := Left (MatrixDate, 2) + Mid (MatrixDate, 4,2); // '2002'
StringVar SMonth := Mid (MatrixDate, 6, 1) + Mid (MatrixDate, 8,1); // '10'
numberVar NMonth := 13;
if NumericText (SMonth) then NMonth := ToNumber (SMonth);
if NMonth > 13 then NMonth := 13;
SMonth := ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' ,'---'] [NMonth];
StringVar SDay := Mid (MatrixDate, 9, 2); // '15'
if datefield > 19000101 then StringVar Sthe_date := SDay + '/' + SMonth + '/' + SYear
else Sthe_date := '-- / --- / ----' ;
Sthe_date;

// Component Type
if ({TestComponents.ComponentType} > 0 and {TestComponents.ComponentType} < 10) then
['Static','Numeric','Menu','Note','Date','Field','Cross','Unknown','Time'] [{TestComponents.ComponentType}]
else 'Unknown'

// Change Column Number to A, B etc
if ({TestComponents.ComponentColumn} > 0 and {TestComponents.ComponentColumn} < 27) then
['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] [{TestComponents.ComponentColumn}]
else ToText ({TestComponents.ComponentColumn})

// Component Status as Text
if ({SampleResults.ResultStatus} > -1 and {SampleResults.ResultStatus} < 70) then
['Not Started','Pass','Fail','Warning','40','50','60'] [ ({SampleResults.ResultStatus} + 10) / 10 ]
else 'Unknown'

// Test Status as Text
if {SampleTests.TestStatus} = 900 then 'Deleted' else
if {SampleTests.TestStatus} > 0 and {SampleTests.TestStatus} < 60 then
['Not Started','Started','Tested','Validated','Retested'] [ {SampleTests.TestStatus} / 10]
else 'Unknown'

// Sample Status as Text
if {Samples.SampleStatus} = 900 then 'Deleted' else
if {Samples.SampleStatus} > 0 and {Samples.SampleStatus} < 100 then
['Registered','Received','Prepared','Tested','Validated','Approved','Reported','Resampled','90'] [{Samples.SampleStatus} / 10]
else 'Unknown'

// Convert a Matrix Numeric Date to Real Date
// [ Better to use function MToCDate() ]
// Example Date 15th Oct 2002
// 20,021,015.00
// 1234567890
//
StringVar MatrixDate := ToText ( {Samples.RegisterDate} ); // '20,021,015.00'
StringVar SYear := Left (MatrixDate, 2) + Mid (MatrixDate, 4, 2); // '2002'
StringVar SMonth := Mid (MatrixDate, 6, 1) + Mid (MatrixDate, 8, 1); // '10'
StringVar SDay := Mid (MatrixDate, 9, 2); // '15'
Date ( Val(SYear), Val(SMonth), Val(SDay) )

// Convert the Matrix Registration Date/Time to a Real Date/Time
// Example Date 15th Oct 2002 (20,021,015.00)
//
StringVar MatrixDate := ToText ( {Samples.RegisterDate} ); // '20,021,015.00'
NumberVar NTime := {Samples.RegisterTime}; // 1034
StringVar SYear := Left (MatrixDate, 2) + Mid (MatrixDate, 4, 2); // '2002'
StringVar SMonth := Mid (MatrixDate, 6, 1) + Mid (MatrixDate, 8, 1); // '10'
StringVar SDay := Mid (MatrixDate, 9, 2); // '15'
//
NumberVar NHour := Truncate (NTime / 60); // 17
NumberVar NMinute := Remainder (NTime, 60); // 14
DateTime ( Val(SYear), Val(SMonth), Val(SDay), NHour, NMinute, 0 )

// Limit Type
if {SubstanceLimits.LimitType} > 0 and {SubstanceLimits.LimitType} < 10 then
['No Action','Notify','Reject','Warn','Fail','Apply','Target','Specification','Default'] [{SubstanceLimits.LimitType}]
else 'XX'

// Approval Status as Text
if ({Samples.ApprovalStatus} > 0 and {Samples.ApprovalStatus} < 8) then
['Accept','Conditional','Noted','Reassigned','Reject','Resampled','Reworked'] [ {Samples.ApprovalStatus} ]
else 'Unknown'