Mostrar el número de serie como letras romanas en Crystal Reports
crystal-reports crystal-reports-8.5 (2)
Necesito mostrar el número de serie como letras romanas (i, ii, iii, iv, etc.) en mis informes de cristal. Tengo el número de serie capturado como número de registro (1,2,3,4 ...), así que lo que tengo que hacer en el informe de cristal.
No puedo tomar gran parte del crédito; Simplemente transferí el código de este artículo de VB Helper a Crystal, pero fue un ejercicio divertido:
NumberVar iCounter := 0;
Local StringVar ch := "";
Local NumberVar result := 0;
Local NumberVar new_value := 0;
Local NumberVar old_value := 0;
Local StringVar temp := "";
temp := UpperCase({?@Roman});
old_value = 1000;
For iCounter := 1 To Len(temp) do
(
// See what the next character is worth.
ch := Mid(temp, iCounter, 1);
if ch = "I" then new_value := 1
else if ch = "V" then new_value := 5
else if ch = "X" then new_value := 10
else if ch = "L" then new_value := 50
else if ch = "C" then new_value := 100
else if ch = "D" then new_value := 500
else if ch = "M" then new_value := 1000;
// See if this character is bigger
// than the previous one.
If new_value > old_value Then
// The new value > the previous one.
// Add this value to the result
// and subtract the previous one twice.
result := result + new_value - 2 * old_value
Else
// The new value <= the previous one.
// Add it to the result.
result := result + new_value;
old_value := new_value;
);
// Format the number without commas or decimals
ToText(result, 0, "");
Simplemente reemplace mi marcador de posición del parámetro {?@Roman}
con su variable, y ya está todo listo.
Solo use la función Roman () proporcionada por Crystal Report