使得民國 100 年變成了「00」
可以使用以下的公式來處理 (Crystal 語法)
2012/03/06 更新:原先的版本沒有考慮到 null 的問題,改成以下這樣
if (aDate >= CDate('1899/12/31')) then
Trim(CStr(Year(aDate) - 1911, '#00')) + '/' + CStr(Month(aDate), '00') + '/' + CStr(Day(aDate), '00')
else
''
//=========================================
// 數字轉中文大寫
//=========================================
// 要轉換的數字
NumberVar VNT := (你要轉換的數字欄位);
StringVar VSU := '零壹貳參肆伍陸柒捌玖';
StringVar VST := '仟佰拾兆仟佰拾億仟佰拾萬仟佰拾元';
StringVar VNS := ToText(VNT, '0000000000000000');
NumberVar VSL := 17 - Length(TrimLeft(ToText(VNT, '################')));
StringVar VSS := '';
BooleanVar VSF;
BooleanVar VS0;
BooleanVar VS1;
BooleanVar VS2;
NumberVar VNI;
VSF := False;
for VNI := VSL to 16 do
(
VS1 := Mid(VNS, VNI, 1) <> '0';
VS2 := VS1 or (((VNI mod 4) = 0) and ((Mid(VNS, VNI - 3, 4) <> '0000') or (VNI = 16)));
VS0 := VSF and VS1;
VSF := not (VS0 or VS1 or VS2);
if VS0 then
VSS := VSS + '零';
if VS1 then
VSS := VSS + Mid(VSU, ToNumber(Mid(VNS, VNI, 1)) + 1, 1);
if VS2 then
VSS := VSS + Mid(VST, VNI, 1);
);
// 這是回傳值
VSS;