Crystal 报告 - For 循环中的复合总数 - 意外结果
Crystal Reports - Compounding Total in For Loop - Unexpected Results
我已经编码 15 年了,了解多种语言,C#、C++、PHP、PAWN、SMALL、等等。 Crystal 语法可能是我见过的最不一致和最荒谬的。
总之,我想在这里做一些简单的事情。我的数据库中有一个格式如下的字符串:
“1-DESC、2-OTHER、5-MISC”
“-”和“,”是我的代码中用于拆分字符串的分隔符。无论如何,我需要添加 1+2+5 以便 CR 报告这些数字的总数。出于某种原因,在遵循代码时,当我应该得到 10 时,我一直得到“30.00”。我无法理解 CR 是如何做到这一点的....
//create an array of strings by parsing a underscore-delimited string field
Stringvar Array strings := Split({Estim.User_Memo1}, ', ');
numbervar i;
numbervar total = 0;
numbervar total2 = 0;
For i := 1 to count(strings) Do
(
If InStr(strings[i], '-') > 0 then
(
Stringvar Array numdesc := Split(strings[i], '-');
total2 := ToNumber(numdesc[1]);
total := total + total2;
//total := total + ToNumber(numdesc[1]);
);
);
total;
我拉取的数据库输入字符串是:“1-裂头,2-无线,3-O/S 长度,4-U/S 长度”
请原谅我多余的总变量。我一直在尝试寻找解决方法大约一个小时。
感谢您的任何见解。
首先你需要分配你需要使用的值:
。
现在要检索数字,您可以使用 Val
函数,该函数将从数字格式的字符串中 return 数字,这将使算术运算变得容易。
试试这个...目前我没有 CR 来测试语法..但逻辑是这样的。
//create an array of strings by parsing a underscore-delimited string field
Stringvar Array strings := Split({Estim.User_Memo1}, ', ');
numbervar i;
numbervar total:= 0;
numbervar total2:= 0;
For i := 1 to count(strings) Do
(
// If InStr(strings[i], '-') > 0 then
// (
// Stringvar Array numdesc := Split(strings[i], '-');
// total2 := ToNumber(numdesc[1]);
total := total + Val(strings[i]);
//total := total + ToNumber(numdesc[1]);
// );
);
total;
谢谢大家的帮助。 Siva 几乎是对的。出于某种原因,这有效。
//create an array of strings by parsing a underscore-delimited string field
Stringvar Array strings := Split({Estim.User_Memo1}, ', ');
numbervar i:=1;
numbervar total:= 0;
For i := 1 to count(strings) Do
(
If InStr(strings[i], '-') > 0 then
(
Stringvar Array numdesc := Split(strings[i], '-');
total := total + Val(numdesc[1]);
);
);
total;
我已经编码 15 年了,了解多种语言,C#、C++、PHP、PAWN、SMALL、等等。 Crystal 语法可能是我见过的最不一致和最荒谬的。
总之,我想在这里做一些简单的事情。我的数据库中有一个格式如下的字符串: “1-DESC、2-OTHER、5-MISC”
“-”和“,”是我的代码中用于拆分字符串的分隔符。无论如何,我需要添加 1+2+5 以便 CR 报告这些数字的总数。出于某种原因,在遵循代码时,当我应该得到 10 时,我一直得到“30.00”。我无法理解 CR 是如何做到这一点的....
//create an array of strings by parsing a underscore-delimited string field
Stringvar Array strings := Split({Estim.User_Memo1}, ', ');
numbervar i;
numbervar total = 0;
numbervar total2 = 0;
For i := 1 to count(strings) Do
(
If InStr(strings[i], '-') > 0 then
(
Stringvar Array numdesc := Split(strings[i], '-');
total2 := ToNumber(numdesc[1]);
total := total + total2;
//total := total + ToNumber(numdesc[1]);
);
);
total;
我拉取的数据库输入字符串是:“1-裂头,2-无线,3-O/S 长度,4-U/S 长度”
请原谅我多余的总变量。我一直在尝试寻找解决方法大约一个小时。
感谢您的任何见解。
首先你需要分配你需要使用的值:
。
现在要检索数字,您可以使用 Val
函数,该函数将从数字格式的字符串中 return 数字,这将使算术运算变得容易。
试试这个...目前我没有 CR 来测试语法..但逻辑是这样的。
//create an array of strings by parsing a underscore-delimited string field
Stringvar Array strings := Split({Estim.User_Memo1}, ', ');
numbervar i;
numbervar total:= 0;
numbervar total2:= 0;
For i := 1 to count(strings) Do
(
// If InStr(strings[i], '-') > 0 then
// (
// Stringvar Array numdesc := Split(strings[i], '-');
// total2 := ToNumber(numdesc[1]);
total := total + Val(strings[i]);
//total := total + ToNumber(numdesc[1]);
// );
);
total;
谢谢大家的帮助。 Siva 几乎是对的。出于某种原因,这有效。
//create an array of strings by parsing a underscore-delimited string field
Stringvar Array strings := Split({Estim.User_Memo1}, ', ');
numbervar i:=1;
numbervar total:= 0;
For i := 1 to count(strings) Do
(
If InStr(strings[i], '-') > 0 then
(
Stringvar Array numdesc := Split(strings[i], '-');
total := total + Val(numdesc[1]);
);
);
total;