表达式内置了丰富的计算函数,用户也可以用js增加自己的计算函数,并在表达式中调用。

定义计算函数

定义普通js函数,执行计算返回结果即可。

<script type="text/javascript">

   function myAdd(a, b) {

       return a + b;

   }

</script>

使用自定义计算函数

在表达式中使用javascript函数调用自定义计算函数,语法为:

javascript('js函数名',参数1,参数2...)

参数可以是字段或表达式,参数数量不定,系统执时,先计算参数,再将计算结果传递给自定义函数。

javascript并不是特殊函数,其性质和sin,cos是同等的计算函数,自定义函数的调用可以是表达式的一部分,其计算结果可以再参与运算。

示范:

javascript('myFunc',Purchase.Price,Purchase.Qty)

javascript('myFunc', Purchase.Price*Purchase.Qty, Purchase.Date)

sum(javascript('myFunc', Purchase. Price)* Purchase.Qty)

大写金额函数

// 数字转换成大写金额函数

function atoc(numberValue) {

   var numberValue = new String(Math.round(numberValue * 100)); // 数字金额

   var chineseValue = ""; // 转换后的汉字金额

   var String1 = "零壹贰叁肆伍陆柒捌玖"; // 汉字数字

   var String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; // 对应单位

   var len = numberValue.length; // numberValue 的字符串长度

   var Ch1; // 数字的汉语读法

   var Ch2; // 数字位的汉字读法

   var nZero = 0; // 用来计算连续的零值的个数

   var String3; // 指定位置的数值

   if (len > 15) {

       alert("超出计算范围");

       return "";

   }

   if (numberValue == 0) {

       chineseValue = "零元整";

       return chineseValue;

   }

   String2 = String2.substr(String2.length - len, len); // 取出对应位数的STRING2的值

   for (var i = 0; i < len; i++) {

       String3 = parseInt(numberValue.substr(i, 1), 10); // 取出需转换的某一位的值

       if (i != (len - 3) && i != (len - 7) && i != (len - 11) && i != (len - 15)) {

           if (String3 == 0) {

               Ch1 = "";

               Ch2 = "";

               nZero = nZero + 1;

           }

           else if (String3 != 0 && nZero != 0) {

               Ch1 = "零" + String1.substr(String3, 1);

               Ch2 = String2.substr(i, 1);

               nZero = 0;

           }

           else {

               Ch1 = String1.substr(String3, 1);

               Ch2 = String2.substr(i, 1);

               nZero = 0;

           }

       }

       else { // 该位是万亿,亿,万,元位等关键位

           if (String3 != 0 && nZero != 0) {

               Ch1 = "零" + String1.substr(String3, 1);

               Ch2 = String2.substr(i, 1);

               nZero = 0;

           }

           else if (String3 != 0 && nZero == 0) {

               Ch1 = String1.substr(String3, 1);

               Ch2 = String2.substr(i, 1);

               nZero = 0;

           }

           else if (String3 == 0 && nZero >= 3) {

               Ch1 = "";

               Ch2 = "";

               nZero = nZero + 1;

           }

           else {

               Ch1 = "";

               Ch2 = String2.substr(i, 1);

               nZero = nZero + 1;

           }

           if (i == (len - 11) || i == (len - 3)) { // 如果该位是亿位或元位,则必须写上

               Ch2 = String2.substr(i, 1);

           }

       }

       chineseValue = chineseValue + Ch1 + Ch2;

   }

   if (String3 == 0) { // 最后一位(分)为0时,加上

       chineseValue = chineseValue + "整";

   }

   return chineseValue;

}

Created with the Personal Edition of HelpNDoc: Easily create Qt Help files