Usuário com melhor resposta
Erro na função Split com condicional

Pergunta
-
Srs,
Tenho a seguinte função num campo Textbox do report:
=Iif(CBool(Fields!PedidoSite.Value),
"http://bellouchi.com.br/Clientes/"&Split(Fields!Observacao.Value,";",-1)(2).ToString()&"_"&Fields!PedidoID.Value.ToString()&".jpg",
"http://bellouchi.com.br/produtos/"&Fields!cod_item.Value.ToString()&"_1.jpg"
)
Ou seja, se o pedido vinher do site, pego uma string no índice 0 do campo Observacao e concateno montando assim um valor para trazer uma imagem. Até aí tudo bem, o problema ocorre quando o pedido não vem do site, então ele gera um erro:
[rsRuntimeErrorInExpression] The Value expression for the textbox ‘textbox38’ contains an error: Index was outside the bounds of the array.
A condicional não era para passar por este Split já que o retorno é falso? então pq gerar um erro que esta na condição verdadeira?
Abs,
Respostas
-
Bom dia Ricardo,
Acredito que mesmo que você use outras funções condicionais como switch e choose o mesmo problema vai ocorrer. No entanto, você pode criar uma funcão com Custom Code no report.
Clique com botão direito na area branca do relatório, report properties, Code. Crie uma função que recebe as duas strings e retorna o valor correto. A sintaxe é VB, então você pode utilizar um If Then Else normal para decidir qual valor do split usar.
Na TextBox chame a sua funcao com "Code.MinhaFuncao" passando os parametros que você configurou. Dessa forma a sua condição vai ficar na função e não deve ter problema.
Se tiver qualquer dificuldade dá um toque.
Att
Boreki
Todas as Respostas
-
Bom dia Ricardo,
A função IIF funciona da mesma forma que o IIF do visual basic, ela vai executar tanto a parte verdadeira quanto a falsa, mas retorna somente a parte verdadeira como resultado. Nesse caso, se qualquer uma tiver algum problema o erro vai subir para o iif.
Att
Boreki
-
Fala Boreki,
Então, quando o retorno é falso, é que no campo Observacao não há valores separados por ";". Pela sua explicação ele ainda sim avaliaria a condição True.. como neste condição não há valores separados por ";" ele gera erro de índice. Como eu faria neste caso?
Abs, -
Bom dia Ricardo,
Acredito que mesmo que você use outras funções condicionais como switch e choose o mesmo problema vai ocorrer. No entanto, você pode criar uma funcão com Custom Code no report.
Clique com botão direito na area branca do relatório, report properties, Code. Crie uma função que recebe as duas strings e retorna o valor correto. A sintaxe é VB, então você pode utilizar um If Then Else normal para decidir qual valor do split usar.
Na TextBox chame a sua funcao com "Code.MinhaFuncao" passando os parametros que você configurou. Dessa forma a sua condição vai ficar na função e não deve ter problema.
Se tiver qualquer dificuldade dá um toque.
Att
Boreki
-