MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    Listar status "Todos" no formulário

    avatar
    Kleber_JDI
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 08/02/2017

    Listar status "Todos" no formulário Empty Listar status "Todos" no formulário

    Mensagem  Kleber_JDI 8/2/2017, 15:38

    Olá,

    Sou novo no Fórum, então me desculpem por qualquer erro abaixo...

    Estou com a seguinte dúvida:

    Tenho um subformulário chamado FRM_SUB_RELATORIO e este é inserido no formulário FRM_SOLICITACAO_2 no qual há um combo_box com os seguintes status: Cancelado, Concluído, Em Espera, Todos

    O que eu preciso fazer... nas propriedades do subformulário - FRM_SUB_RELATORIO - ir no query builder (modo designer) deste e colocar uma condição IIF dizendo que se o campo do combo box <> "Todos", ele então receberá o status selecionado no combo (que seja diferente do status - Todos), já se o combo box tiver o valor "Todos" selecionado me mostrará todos os tipos de status existentes

    Já tentei algumas combinações de IIF em Criteria e até no OR mas não dá certo.... alguém poderia me auxiliar a montar esta seleção no query builder (modo designer)?

    Desde já, muito obrigado
    Kleber
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Listar status "Todos" no formulário Empty Re: Listar status "Todos" no formulário

    Mensagem  FabioPaes 8/2/2017, 16:00

    Ola Kleber_JDI, seja bem vindo ao Fórum!

    Antes de darmos sequencia, nos informe (postando o código que esta utilizando) como esta realizando essa filtragem... Pois existem Ns maneiras!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Kleber_JDI
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 08/02/2017

    Listar status "Todos" no formulário Empty Re: Listar status "Todos" no formulário

    Mensagem  Kleber_JDI 8/2/2017, 20:35

    Olá Fábio,

    A questão é mais ou menos assim...


    |------------------------------ |
    | combo1 form1 |
    | ------------------------ |
    | | | |
    | | fomr2 | |
    | ------------------------ |
    |-------------------------------|

    No form1 tenho um combo com os valores Cancelado, Concluído, Em Espera, Todos

    De acordo com o que escolho neste combo do form1, é o que vou trazer no meu form2, pois a tabela que dou o select contém os mesmos valores que passo pelo combo, EXCETO o valor "Todos", logo quando eu seleciono "Todos", acusa um erro.

    A forma como tentei foi, clicando com o botão da direita do mouse no form2 > propriedades > Record Source > onde há o seguinte select (ver mais abaixo):
    Obs: A montar no design a query abaixo, utilizei em "criterios" a seguinte função:

    IIf([forms]![FRM_SOLICITACAO_2]![cmb_list_st]="Todos";([TB_SOLICITACAO].[status])="Concluído" Or ([TB_SOLICITACAO].[status])="Cancelado" Or ([TB_SOLICITACAO].[status])="Em Espera";[forms]![FRM_SOLICITACAO_2]![cmb_list_st])

    Ou no caso... se meu combo apresentar o valor "Todos", então mostre os status "Concluído", "Cancelado", "Em Espera", caso contrário me traga um dos valores selecionados (que são os diferentes de "Todos" ou seja, Concluído, Cancelado.....etc..). Enfim a query gerada foi:


    SELECT TB_RESPONSAVEL.NOME_RESPONSAVEL, TB_RELATORIO.nome_relatorio, TB_SOLICITANTE.NOME_SOLICITANTE, TB_SOLICITACAO.status, TB_SOLICITACAO.prioridade, TB_SOLICITACAO.dt_validado, TB_SOLICITACAO.id_solicitacao, TB_SOLICITACAO.id_relatorio, TB_SOLICITACAO.id_solicitante, TB_SOLICITACAO.motivo, TB_SOLICITACAO.descricao, TB_SOLICITACAO.evidencia, TB_SOLICITACAO.dt_abertura, TB_SOLICITACAO.dt_concluido, TB_SOLICITACAO.id_responsavel, TB_SOLICITACAO.Retorno, TB_SOLICITACAO.observacao1, TB_SOLICITACAO.dt_hr1, TB_SOLICITACAO.observacao2, TB_SOLICITACAO.dt_hr2, TB_SOLICITACAO.observacao3, TB_SOLICITACAO.dt_hr3, TB_SOLICITACAO.observacao11, TB_SOLICITACAO.dt_hr11, TB_SOLICITACAO.observacao22, TB_SOLICITACAO.dt_hr22, TB_SOLICITACAO.observacao33, TB_SOLICITACAO.dt_hr33, Format(([tb_solicitacao.dt_abertura]),"dd/mm/yyyy") AS [Data de Análise], CStr((DateDiff("n",[tb_solicitacao.dt_abertura],[tb_solicitacao.dt_concluido])\60)\24) & " days," & CStr((DateDiff("n",[tb_solicitacao.dt_abertura],[tb_solicitacao.dt_concluido])/60) Mod 24) & " hours and " & CStr(DateDiff("n",[tb_solicitacao.dt_abertura],[tb_solicitacao.dt_concluido]) Mod 60) & " minutes" AS [Tempo Abertura >> Conclusão]
    FROM ((TB_SOLICITACAO LEFT JOIN TB_RESPONSAVEL ON TB_SOLICITACAO.id_responsavel = TB_RESPONSAVEL.ID_RESPONSAVEL) INNER JOIN TB_RELATORIO ON TB_SOLICITACAO.id_relatorio = TB_RELATORIO.id_relatorio) INNER JOIN TB_SOLICITANTE ON TB_SOLICITACAO.id_solicitante = TB_SOLICITANTE.ID_SOLICITANTE
    WHERE (((TB_SOLICITANTE.NOME_SOLICITANTE)=[forms]![FRM_SOLICITACAO_2]![cmb_list_sol]) AND ((TB_SOLICITACAO.status)=IIf([forms]![FRM_SOLICITACAO_2]![cmb_list_st]="Todos",([TB_SOLICITACAO].[status])="Concluído" Or ([TB_SOLICITACAO].[status])="Cancelado" Or ([TB_SOLICITACAO].[status])="Em Espera",[forms]![FRM_SOLICITACAO_2]![cmb_list_st])))
    ORDER BY TB_SOLICITACAO.prioridade;

    Ao executar o formulário e pedir o status "Todos" acusou:
    This expression is typed incorrectly, or it is too complex to be evaluated. For example, a numeric expression may contain too many complicated elemens. Try simplifying the expression by assigning parts of the expression to variables

    Acredito que o erro esteja na forma de montar o IIF.... o que eu preciso é algo como:

    Se o status vindo do combo = "Todos", mostre todos os status que possuo, caso contrário me traga apenas um dos status selecionados (que não seja "Todos")




    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Listar status "Todos" no formulário Empty Re: Listar status "Todos" no formulário

    Mensagem  FabioPaes 8/2/2017, 20:47

    Bom, o que precisa e bem facil na verdade... Porem fiquei confuso foi com sua explicaçao.

    Poste aqui seu exemplo assim fica mais facil.


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Kleber_JDI
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 08/02/2017

    Listar status "Todos" no formulário Empty Re: Listar status "Todos" no formulário

    Mensagem  Kleber_JDI 9/2/2017, 10:23

    Fábio, neste anexo, mostro onde recebo o parâmetro selecionado no combo do meu form
    avatar
    Kleber_JDI
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 08/02/2017

    Listar status "Todos" no formulário Empty Re: Listar status "Todos" no formulário

    Mensagem  Kleber_JDI 9/2/2017, 10:24

    E este é o combo que criei, todos demais status EXCETO "Todos" funcionam pois existem na tabela que busco o valor vindo do combo.... como o status "Todos" somente existe no combo, eu tentei criar a regra IIF mencionada mais acima cuja acabou não funcionando....
    avatar
    Kleber_JDI
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 08/02/2017

    Listar status "Todos" no formulário Empty Re: Listar status "Todos" no formulário

    Mensagem  Kleber_JDI 9/2/2017, 10:29

    Lembrando que o IIF ficou assim:

    IIf([forms]![FRM_SOLICITACAO_2]![cmb_list_st]="Todos";([TB_SOLICITACAO].[status])="Concluído" Or ([TB_SOLICITACAO].[status])="Cancelado" Or ([TB_SOLICITACAO].[status])="Em Espera";[forms]![FRM_SOLICITACAO_2]![cmb_list_st])

    Note que seguindo a regra do IIF (situação, faça isso, senao isso) --> caso a situação seja satisfatória, note que meu IIF eu estava testando com os valores Concluído, Cancelado e Em Espera... para efeito de teste ok.... mas o correto é... Se selecionado o status "Todos" no combo, então mostre tudo que for "Validado", "Cancelado", "Em Espera", etc.. como eu disse, como ainda eu estou testando, para efeito de teste, não usei todos os status caso a situação do IIF seja satisfatória...
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Listar status "Todos" no formulário Empty Re: Listar status "Todos" no formulário

    Mensagem  FabioPaes 9/2/2017, 13:55

    Kleber, vamos fazer de uma outra forma? Aplicando filtro no Formulário!


    Veja aqui como se aplica filtro em Subformulário: https://www.maximoaccess.com/t26778-resolvidofiltrar-exemplo

    No seu caso, remova a condição do campo Status
    No evento apos atualizar da sua caixa de combinação aplique o filtro indicado no Formulário de acordo com o link indicado....
    Porém coloque uma verificação antes:

    'Declara a Variavel
    Dim strFiltro As String
    If Me.cmb_list_st <> "Totos" then

    strFiltro = "Status = '" & Me.cmb_list_st & "'"
    '... continue o filtro de acordo com o exemplo indicado.

    Else
    ' Esse comando mostra todos os dados
    DoCmd.ShowAllRecords
    end if


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Conteúdo patrocinado


    Listar status "Todos" no formulário Empty Re: Listar status "Todos" no formulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 01:28