在Crystal Reports中将序列号显示为罗马字母

6


需要在我的Crystal报表中将序列号显示为罗马数字(i、ii、iii、iv等)。我已经将序列号捕获为记录号码(1、2、3、4...)。那么我在Crystal报表中该怎么做呢?

3个回答

2
只需使用Crystal Reports提供的Roman()函数即可。

1

我不能得到太多的功劳;我只是将this VB Helper article中的代码移植到Crystal中,但这是一个有趣的练习:

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, "");

只需将我的{?@Roman}参数占位符替换为您的变量,就可以完成设置。


0

我尝试修复它 [输入图片描述][1]

<https://www.tek-tips.com/viewthread.cfm?qid=887691>

或者

<https://www.tek-tips.com/viewthread.cfm?qid=1613334>

并且

<https://www.youtube.com/watch?v=X_UaulmICtM&list=TLPQMTUwMjIwMjMRAYZJzCsXDQ&index=6>

具体来说:在Crystal Report中

步骤1:公式字段/新建/"nameabc"/输入/"Roman(GroupNumber)"/按下ctrl+S并拖出

步骤2:公式字段/新建/"nameabc"/输入/

 select GroupNumber

 case 1 : "   I"

 case 2 : "  II"

 case 3 : " III"

 case 4 : "  IV"

 case 5 : "   V"

 case 6 : "  VI"

 case 7 : " VII"

 case 8 : "VIII"

 case 9 : "  IX"

 case 10 : "   X"

 case 11 : "  XI"

 case 12 : " XII"

 case 13 : "XIII"

 case 14 : " XIV"

 case 15 : "  XV"

 case 16 : " XVI"

 case 17 : "XVII"
default : ""

/ 按下 ctrl+S 并拉出它

但这真的没有什么帮助,所以会有这3种情况(t从链接2-3改进),它可以应用于第3组甚至第10组标题

TH3:例如:(您想为第3组创建文本消息) 公式字段/新建/"nameabc"/输入/ "

WHILEPRINTINGRECORDS;
GLOBAL NUMBERVAR INTSTTGRTEST;
INTSTTGRTEST :=0;

/ ctrl+S/ 拖出并放入标题组2中并隐藏它(=右键单击/格式化字段/常规/勾选抑制/确定),您可以转到链接3查看

公式字段/新建/"nameabcd"/输入/ "

WHILEPRINTINGRECORDS;
GLOBAL numbervar INTSTTGRTEST := INTSTTGRTEST + 1;
stringvar y;
STRINGVAR ARRAY X := ["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"];
if INTSTTGRTEST <= 26 then (
redim preserve X[INTSTTGRTEST];
y := X[INTSTTGRTEST]
);
y;

/ 按下 ctrl+S 并将其拉出并放置在第3组中

字母可以是任何我们想要的。例如:


X := ["I","II","III","IV","V","VI","VII","VIII","IX","X","XI" ,"XII","XIII","XIV","XV","XVI","XVII","XVIII","XIX","XX","XXI","XXII","XXIII"," XXIV","XXV","XXVI","XXVII","XXVIII","XXIX","XXX","XXXI","XXXII","XXXIII","XXXIV","XXXV","XXXVI" ,"XXXVII","XXXVIII","XXXIX","XL","XLI","XLII","XLIII","XLIV","XLV","XLVI","XLVII","XLVIII"," XLIX","L"];

或者


X := ["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"]; 

希望它能对你有所帮助

enter code here  [1]: https://istack.dev59.com/OeBBQ.webp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接