Symptom
Crystal Reports set to Turkish shows English in the formula function Towords()
Environment
- Crystal Reports 2011
- Crystal Reports 2011 for Business One
Reproducing the Issue
Create a formula like:
towords(truncate(8900.89), 0) + " point " + towords(abs(100 * (truncate(8900.89)- 8900.89)), 0);
Results are in English:
eight thousand nine hundred point eighty-nine
Resolution
This issue has been tracked with the following ID: ADAPT01698839
This issue is scheduled to be addressed in the following Patches:
- Crystal Reports 2011 Patch 6.4
- Crystal Reports Developer for Visual Studio ( 2010/2012 ) Service Pack 7
- Crystal Reports for Business One Support Pack ( full build Service Pack ) SP 2 should have the fix applied ( CR 2013 is still in ramp up mode )
Product has determined this is a limitation within the Towords function.
As a work around, and this is for any Language that converts to English, use the attached report as a sample.
The formula manually converts a number value into the coresponding Words.
The formula uses a Parameter to prompt for a value, this can be replaced with your field reference:
numbervar sample:={?Number};
stringvar array number0to9;
Redim number0to9[10];
number0to9:=split("0,1,2,3,4,5,6,7,8,9",",");
stringvar array text0to9;
Redim text0to9[10];
text0to9:=split("sıfır,bir,iki,üç,dört,beş,altı,yedi,sekiz,dokuz", ",");
stringvar array text10to90;
Redim text10to90[10];
text10to90:=split(" ,on,yirmi,otuz,kırk,elli,altmış,yetmiş,seksen,doksan",",");
stringvar array text000;
Redim text000[6];
text000:=split(" ,bin,milyon,milyar,trilyon,katrilyon",",");
numbervar i;
numbervar k;
numbervar n;
stringvar finalresult;
stringvar Textsample:=totext(sample,0,"*");
stringvar array triade:=split(textsample, "*");
for n:=1 to Ubound(triade) do
(
stringvar result1:="";
stringvar result10:="";
stringvar result100:="";
k:=Ubound(triade)+1-n;
for i:=1 to 10 do
if right(triade[k],1) = number0to9[i] then
(if (length(triade[k])>1 and right(triade[k],1)="0") then result1:='' else result1:=text0to9[i]);
if length(triade[k])>1 then
for i:=1 to 10 do
if mid(triade[k], length(triade[k])-1,1) = number0to9[i] then result10:=text10to90[i];
If length(triade[k])>2 then
for i:=1 to 10 do
if mid(triade[k], length(triade[k])-2,1) = number0to9[i] then
(if number0to9[i] ="1" then result100:="yüz" else
if number0to9[i] ="0" then result100:="" else result100:=text0to9[i]+" yüz");
if (result100+result10+result1)=" " then finalresult:=finalresult else
finalresult:= result100 + " " + result10 + " " + result1 + " " + text000[n] + " " +finalresult ;
);
finalresult:=Replace(finalresult," "," ");
See Also
If this is a huge requirement for you please add your request to support this language to Idea Place:
Keywords
Crystal Reports 2011, Crystal Reports Developer for Visual Studio ( 2010/2012 ), Crystal Reports for Business One 2011, towords(), towords , KBA , BI-RA-CR , Crystal Reports designer or Business View Manager , Problem
Product
Attachments
ToWordsTurkishWithoutDecimal.rpt |