Substring problem
Keve G??bor
hungary
Hello!
In the attached example, you can see 2 textobject. The green one working fine, but the red one not.
If i change the Parameter1 Expression property to nothing from "", the red one working fine. But if the property value "", the report engine say:
Inner exception:
startIndex cannot be larger than lenght of the string
Parameter name startIndex
red Text object value:
[IIf(Length([Parameter1])>0,Substring([Parameter1],1,1),[Parameter2])]
Can you explain me, what the problem of this expression?
Thanks!
In the attached example, you can see 2 textobject. The green one working fine, but the red one not.
If i change the Parameter1 Expression property to nothing from "", the red one working fine. But if the property value "", the report engine say:
Inner exception:
startIndex cannot be larger than lenght of the string
Parameter name startIndex
red Text object value:
[IIf(Length([Parameter1])>0,Substring([Parameter1],1,1),[Parameter2])]
Can you explain me, what the problem of this expression?
Thanks!
Comments
The Error is very clear , I will try to Explain it in details :
1) This One "Substring([Parameter1],1,1)" is try to select a string from paramter1
Which start with character of index 1 and end at character of index 1
For Example :
if paramter1 = "Stark" then SubString([paramter1], 1,1) will give the result "t"
BUT
if paramter1 = "" then SubString([paramter1], 1,1) will throw an error because there is no character at Index 1 , paramter1 has Zero Characters
And in your Attachment report Parameter1 = "" , and that is why you get an error !
Solution :
you have two ways :
*) Give Paramter1 some value ,
OR
*) replace the SubString([paramter1], 1,1) With SubString([paramter1], 0,0)
Hope this help
P.S :
I didn't know what are you trying to achieve , or why paramter1 has the value "" ?
Thanks the answer!
You right! But...
I think that due the IIf condition, the Substring procedure should not be evaluate, because the Parameter1 length = 0.
The right evaluation order is:
<!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->IIf -> Length(Parameter1)>0 -> false -> Parameter2
-> true -> Substring(Parameter1,1,1)<!--fontc--></span><!--/fontc-->
If Parameter1 value is "" then Lenght(Parameter1) = 0.
But i think the real evaluation start within.
So, clarifying my question:
Why evaluate the Substring function the engine, if Parameter1.Lengt()==0?
[img]style_emoticons/<#EMO_DIR#>/unsure.gif" style="vertical-align:middle" emoid=":unsure:" border="0" alt="unsure.gif" /> regards, Gabor Keve[/img]
I was think the same , Until I saw your Question , because C# didn't do that
I think this is how fast report works , I really don't know much about it's engine , ( I am just a user for fast-report [img]style_emoticons/<#EMO_DIR#>/rolleyes.gif" style="vertical-align:middle" emoid=":rolleyes:" border="0" alt="rolleyes.gif" /> ) May be one of the makers can answer you ,[/img]