none
IIF RRS feed

  • Pergunta

  • Olá a todos!

    Tenho uma dúvida quanto ao IIF, preciso fazer algo assim:

    =IIF(expressão=true,campoA 'recebe valor X',campoB 'recebe valor Y')

    É possível??

    Está correto o "recebe" do campo??

    Obrigado!
    terça-feira, 8 de julho de 2008 20:08

Respostas

  •  

    Lodetti,

     

    No IIF, vc não atribui o valor assim.

     

    Por exemplo, se vc deseja retornar o resultado dessa expressão precisa apenas definir o valor caso a expressão seja verdadeira ou falsa.

     

    Exemplo:

    Adicione um TextBox no ReportView, ou se estiver trabalhando com Table, Matrix, List selecione o item e clique com o botão da direita e selecione a opção Expression

     

    No exemplo abaixo, caso o valor seja verdadeiro (Fields!ListPrice.Value=10), será exibido no campo o valor 100, caso contrário será exibido 200. Ou seja, o resultado será exibido no próprio campo do relatório.

    Code Snippet

    =iif(Fields!ListPrice.Value=10, 100, 200)

     

     

    Com tipos de dados do tipo String:

    Code Snippet

    =iif(Fields!Color.Value="Preto","Verdadeiro", "Falso")

     

     

    terça-feira, 8 de julho de 2008 21:39
  •  

    Olá, sim é possível fazer essa operação, apenas no lugar das aspas simples utilize aspas duplas

     

    =IIF( Tabela.Campo1.Value = "XX", tabela.campo2.Value , tabela.campo3.value )

     

     

     

    Jenner Maciejewsky Rocha

    quarta-feira, 9 de julho de 2008 17:47

Todas as Respostas

  •  

    Lodetti,

     

    No IIF, vc não atribui o valor assim.

     

    Por exemplo, se vc deseja retornar o resultado dessa expressão precisa apenas definir o valor caso a expressão seja verdadeira ou falsa.

     

    Exemplo:

    Adicione um TextBox no ReportView, ou se estiver trabalhando com Table, Matrix, List selecione o item e clique com o botão da direita e selecione a opção Expression

     

    No exemplo abaixo, caso o valor seja verdadeiro (Fields!ListPrice.Value=10), será exibido no campo o valor 100, caso contrário será exibido 200. Ou seja, o resultado será exibido no próprio campo do relatório.

    Code Snippet

    =iif(Fields!ListPrice.Value=10, 100, 200)

     

     

    Com tipos de dados do tipo String:

    Code Snippet

    =iif(Fields!Color.Value="Preto","Verdadeiro", "Falso")

     

     

    terça-feira, 8 de julho de 2008 21:39
  •  

    Olá, sim é possível fazer essa operação, apenas no lugar das aspas simples utilize aspas duplas

     

    =IIF( Tabela.Campo1.Value = "XX", tabela.campo2.Value , tabela.campo3.value )

     

     

     

    Jenner Maciejewsky Rocha

    quarta-feira, 9 de julho de 2008 17:47
  • Conforme consta no meu post:

     se vc deseja retornar o resultado dessa expressão precisa apenas definir o valor caso a expressão seja verdadeira ou falsa. Ou seja, o "valor" pode ser um campo da tabela, variável, etc.)

     

    A dúvida é :

    Code Snippet
    =IIF(expressão=true,campoA 'recebe valor X',campoB 'recebe valor Y')

     

    E por isso essa expressão é inválida.

     

    Valeu!

     

     

     

    quarta-feira, 9 de julho de 2008 17:59
  • Sobre os Post acima, obrigado mas já sabia da parte:

    "Se(expressão=true,mostre A,senao mostre B)"

    Vou tentar melhorar a pergunta:

    IIF(campoA=true,campoB recebe valor do campoC,campoD recebe valor do campoE)

    Isso é possivel?? Fazer com que campos diferentes (B,D) ganhem valores estipulados em outros campos (C,E) utilizando o IIF do campo A??

    Caso não entenderem minha pergunta eu tento simplificar.

    Obrigado!
    segunda-feira, 14 de julho de 2008 15:50
  • Lodetti,

     

    Neste caso será necessário implementar uma função "personalizada" no Report.

     

    Onde implentar:

    No menu Report, selecione a opção Reporting Properties, aba Code

     

    Exemplos:

     

    Code Snippet

       Public  Shared Function ValorCampo(ByVal sngValor As Single) As String

            Dim strResultado As String = ""

            If sngValor = 10 Then
                 ValorCampo = "MSDN"

            ElseIf sngValor = 20 Then
                 ValorCampo = ".NET 2005"

            ElseIf sngValor = 20 Then
                 ValorCampo = ".NET 2008"

            End If

        End Function

     

     

    Code Snippet
     Public Shared Function AddToCount(ByVal Value As Integer) As String
        Count = Count + value
    End Function

    Shared Count As Integer = 0

     

     

    Como usar:

    Adicione um TextBox ao relatório, clique no item com o botão da direita e selecione a opção expression.

     

    Code Snippet

    =Code.ValorCampo(20)

     

     

     

    terça-feira, 15 de julho de 2008 01:58