none
Erro na função Split com condicional RRS feed

  • 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,



    terça-feira, 15 de abril de 2008 16:52

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

    terça-feira, 15 de abril de 2008 18:38

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

    terça-feira, 15 de abril de 2008 17:52
  • 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,
    terça-feira, 15 de abril de 2008 18:12
  •  

    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

    terça-feira, 15 de abril de 2008 18:38
  • Fala Bokeri,

    Poderia me passar essa função em VB? é que em meu caso eu não conheço vb, desenvolvo em c#. Obrigadão por sua ajuda.

    Abs,

    Beck
    terça-feira, 15 de abril de 2008 19:17