需要在我的Crystal报表中将序列号显示为罗马数字(i、ii、iii、iv等)。我已经将序列号捕获为记录号码(1、2、3、4...)。那么我在Crystal报表中该怎么做呢?
需要在我的Crystal报表中将序列号显示为罗马数字(i、ii、iii、iv等)。我已经将序列号捕获为记录号码(1、2、3、4...)。那么我在Crystal报表中该怎么做呢?
Roman()
函数即可。我不能得到太多的功劳;我只是将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}
参数占位符替换为您的变量,就可以完成设置。
我尝试修复它 [输入图片描述][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