I saw you've been making the same request for a long time. I had shown you in another thread on the same issue an english number-to-words example that you could edit, but you never followed up on that.
here's a TVF that returns the formatted value via TSQL; dunno about reporting services; i guess you could make a similar vb function:
CREATE FUNCTION ITVFFormatIndianCurrency
(
@val Decimal(24,2)
)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN
WITH MyCTE AS (SELECT CONVERT(VARCHAR(50),@val) AS strVal )
SELECT
CASE
WHEN len(strVal) <= 6 THEN strVal
WHEN len(strVal) <= 8 THEN REVERSE( STUFF(REVERSE((strVal)),7,0,','))
WHEN len(strVal) <= 10 THEN REVERSE( STUFF(STUFF(REVERSE((strVal)),7,0,','),10,0,','))
WHEN len(strVal) <= 12 THEN REVERSE( STUFF(STUFF(STUFF(REVERSE((strVal)),7,0,','),10,0,','),13,0,','))
WHEN len(strVal) <= 14 THEN REVERSE( STUFF(STUFF(STUFF(STUFF(REVERSE((strVal)),7,0,','),10,0,','),13,0,','),16,0,','))
WHEN len(strVal) <= 16 THEN REVERSE( STUFF(STUFF(STUFF(STUFF(STUFF(REVERSE((strVal)),7,0,','),10,0,','),13,0,','),16,0,','),19,0,','))
WHEN len(strVal) <= 18 THEN REVERSE( STUFF(STUFF(STUFF(STUFF(STUFF(STUFF(REVERSE((strVal)),7,0,','),10,0,','),13,0,','),16,0,','),19,0,','),22,0,','))
WHEN len(strVal) > 18 THEN REVERSE(STUFF(STUFF(STUFF(STUFF(STUFF(STUFF(STUFF(REVERSE((strVal)),7,0,','),10,0,','),13,0,','),16,0,','),19,0,','),22,0,','),25,0,','))
END As Val,len(strVal) As TheLen
From myCTE
GO
WITH MyCTE AS
(SELECT 12345678910111233.89 As TheVal UNION ALL
SELECT 2345678910111233.89 UNION ALL
SELECT 345678910111233.89 UNION ALL
SELECT 45678910111233.89 UNION ALL
SELECT 5678910111233.89 UNION ALL
SELECT 678910111233.89 UNION ALL
SELECT 78910111233.89 UNION ALL
SELECT 8910111233.89 UNION ALL
SELECT 910111233.89 UNION ALL
SELECT 10111233.89 UNION ALL
SELECT 7111233.89 UNION ALL
SELECT 111233.89 UNION ALL
SELECT 11233.89 UNION ALL
SELECT 1233.89 UNION ALL
SELECT 233.89 UNION ALL
SELECT 33.89 UNION ALL
SELECT 3.89
)
SELECT *
FROM myCTE
CROSS APPLY dbo.ITVFFormatIndianCurrency(TheVal) MyAlias
Lowell