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


3 participantes

    [Resolvido]Erro em Dcount com condição IIF

    avatar
    Convidado
    Convidado


    [Resolvido]Erro em Dcount com condição IIF Empty Erro em Dcount com condição IIF

    Mensagem  Convidado 9/4/2013, 23:51

    Boa noite pessoal!
    Esou tentando elaborar uma consulta em uma tabela de equipamento.

    Os equipamento sao dividos em tipos.
    Ou seja sao 700 equipamento dividos em 25 tipo

    A consulta preciso trazer na coluna Tipo os nomes dos 25 tipos e na coluna Qtde a quantidade de equipamentos que contem am cada tipo.

    Ate ai tudo bem mas o problema é que tanto o "Dcount" quanto o "Select Count" nao esta permitindo mas de 13 condições no IIF.

    Tanto assim...
    Select Tbl_Equipamentos.Tipo,
    IIF(Tbl_Equipamentos.Tipo Like'Tipo1', (Select Count(Tipo) From Tbl_Equipamentos Where Tipo = 'Tipo1'),
    ....(mais 11 condicoes aqui..Tipo2,tipo3,etc)
    IIF(Tbl_Equipamentos.Tipo Like'Tipo13', (Select Count(Tipo13) From Tbl_Equipamentos Where Tipo = 'Tipo13')) as Qtde
    ...

    Quanto assim..

    Select Tbl_Equipamentos.Tipo,
    IIF(Tbl_Equipamentos.Tipo Like'Tipo1', DCount("Tipo1","Tbl_Equipamentos","Tipo = 'Tipo1'"),
    ....(mais 11 condicoes aqui..Tipo2,tipo3,etc)
    IIF(Tbl_Equipamentos.Tipo Like'Tipo13', DCount("Tipo1","Tbl_Equipamentos","Tipo = 'Tipo13'")), as Qtde
    ...


    Se eu deixar somente 13 tipo nao da erros mas cmo falei tenho 25 tipo diferente preciso contar todos.
    Alguem ideia de como contornar esse problema ?

    Saudacoes !

    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Erro em Dcount com condição IIF Empty Re: [Resolvido]Erro em Dcount com condição IIF

    Mensagem  Cláudio Más 10/4/2013, 03:55

    Tente Switch() no lugar de IIF()
    avatar
    Convidado
    Convidado


    [Resolvido]Erro em Dcount com condição IIF Empty Re: [Resolvido]Erro em Dcount com condição IIF

    Mensagem  Convidado 12/4/2013, 23:43

    Desculpe pela demora em responder mas estava sem internet,

    Claudio tentei como voce sugeriu e o mesmo erro acontece ....ate 13 condicoes nao da erro na 14 ja da "Expresso muito complexa...."


    Tanto com IIF quanto com Switch


    Saudacoes !
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Erro em Dcount com condição IIF Empty Re: [Resolvido]Erro em Dcount com condição IIF

    Mensagem  Avelino Sampaio 13/4/2013, 12:01

    Uma simples consulta de agrupamento não resolve ?


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Erro em Dcount com condição IIF Empty Re: [Resolvido]Erro em Dcount com condição IIF

    Mensagem  Cláudio Más 13/4/2013, 14:01

    Sem querer entrar no mérito da questão, gostaria de ver como ficou a expressão com o Switch, mas pode tentar também dividir o campo calculado em duas partes, mais ou menos assim:

    IIF(Tbl_Equipamentos.Tipo Like 'Tipo1', (Select Count(Tipo) From Tbl_Equipamentos Where Tipo = 'Tipo1')... AS Qtde0, 'até Tipo6

    IIF (Not IsNull([Qtde0]), [Qtde0], IIF(Tbl_Equipamentos.Tipo Like 'Tipo7', (Select Count(Tipo) From Tbl_Equipamentos Where Tipo = 'Tipo7')... AS Qtde
    avatar
    Convidado
    Convidado


    [Resolvido]Erro em Dcount com condição IIF Empty Re: [Resolvido]Erro em Dcount com condição IIF

    Mensagem  Convidado 13/4/2013, 21:01

    Claudio a sua ideia concerteza funciona.


    Mas o problema é que esse campo QTDE irei utilizar ele nessa mesma consulta para calculo e o calculo sera de acordo com a quantidade de cada Tipo .
    Ex.
    Round((((100-((Int(Sum([Qry_Tempos].Minutos))/(1440*Qtde))*100))*Peso)/100),2) AS Total_Dia_Anterior



    Ou seja se eu gerar duas colunas Qtde0 e Qtde1 como irei fazer essa calculo?

    Obrigado pela paciência.


    Saudacoes !
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Erro em Dcount com condição IIF Empty Re: [Resolvido]Erro em Dcount com condição IIF

    Mensagem  Cláudio Más 13/4/2013, 23:31

    Rafael, o segundo campo calculado não é Qtde1, é Qtde.

    Talvez seja melhor criar uma função que receba como parâmetro Tbl_Equipamentos.Tipo e retorne o resultado do Select Count(Tipo).
    Nessa função poderia utilizar If... Then... Else ou um Select Case.

    A consulta ficaria assim:

    Select Tbl_Equipamentos.Tipo, FunçãoContaTipo(Tbl_Equipamentos.Tipo) AS Qtde, Round((((100-((Int(Sum([Qry_Tempos].Minutos))/(1440*Qtde))*100))*Peso)/100),2) AS Total_Dia_Anterior, etc ...
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Erro em Dcount com condição IIF Empty Re: [Resolvido]Erro em Dcount com condição IIF

    Mensagem  Alexandre Neves 14/4/2013, 09:54

    Bom dia a todos
    Permitam-me a intervenção. Seguindo a dica do Mestre Avelino Sampaio: Select Tipo, Count(Tipo) as Quantidade FROM Tbl_Equipamentos GROUP BY Tipo


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Convidado
    Convidado


    [Resolvido]Erro em Dcount com condição IIF Empty Re: [Resolvido]Erro em Dcount com condição IIF

    Mensagem  Convidado 14/4/2013, 15:15

    Obrigado Claudio , Avelino e Alexandre!

    Eu juro que havia tentado com o group by logo no inicio e por algum motivo não deu certo.

    e resolvi fazer novamente como sugeriu o Alexandre e funfou.

    Para entenderem melhor a complexidade da consulta segue...(Onde Frota é o Tipo que mencionei no post)

    Código:
    SELECT DISTINCT Tbl_Equipamentos_EPP.EPP_Frota, Tbl_Manutencao_EPP.EPP_Tag, (SELECT COUNT(EPP_Tag) FROM Tbl_Equipamentos_EPP WHERE Tbl_Manutencao_EPP.EPP_Frota = Tbl_Equipamentos_EPP.EPP_Frota) AS Qtde_Equip, Tbl_Equipamentos_EPP.EPP_Meta, Tbl_Manutencao_EPP.EPP_Dt_Inicio, Tbl_Manutencao_EPP.EPP_Dt_Fim, CDate(IIf(Nz([EPP_Dt_Inicio])<Date()-1,Date()-1,IIf(Nz([EPP_Dt_Inicio])>Date() And Month([EPP_Dt_Inicio])=Month(Date()) And Year([EPP_Dt_Inicio])=Year(Date()),Date(),IIf(Month([EPP_Dt_Inicio])<>Month(Date()),Date()-1,IIf(Year([EPP_Dt_Inicio])<>Year(Date()),Date()-1,[EPP_Dt_Inicio]))))) AS DataInicio_D_1, CDate(IIf(Nz([EPP_Dt_Fim])="",Date(),IIf(Month([EPP_Dt_Fim])<>Month(Date()),Date()-1,IIf(Month([EPP_Dt_Fim])>Month(Date()) Or ([EPP_Dt_Fim]>Date()),Date(),IIf(Nz([EPP_Dt_Fim])<Date()-1,Date()-1,[EPP_Dt_Fim]))))) AS DataFim_D_1, CDate(IIf(Nz(EPP_Dt_Inicio)>Date() And Month([EPP_Dt_Inicio])=Month(Date()) And Year([EPP_Dt_Inicio])=Year(Date()),Date(),IIf(DateValue(Nz(Format([EPP_Dt_Inicio],"dd/mm/yyyy")))<DateSerial(Year(Now()),Month(Now()),1),DateSerial(Year(Now()),Month(Now()),1),DateValue(Nz(Format([EPP_Dt_Inicio],"dd/mm/yyyy"))) & " " & Format([EPP_Dt_Inicio],"hh:nn:ss")))) AS DataInicio_Acum_Mes, CDate(IIf(Nz([EPP_Dt_Fim])="",Date(),IIf(DateValue(Nz(Format([EPP_Dt_Fim],"dd/mm/yyyy")))<DateSerial(Year(Now()),Month(Now()),1),DateSerial(Year(Now()),Month(Now()),1),IIf(EPP_Dt_Fim>Date(),Date(),DateValue(Nz(Format([EPP_Dt_Fim],"dd/mm/yyyy"))) & " " & Format([EPP_Dt_Fim],"hh:nn:ss"))))) AS DataFim_Acum_Mes, CDate(IIf(Nz([EPP_Dt_Inicio])>Date() And Month([EPP_Dt_Inicio])=Month(Date()) And Year([EPP_Dt_Inicio])=Year(Date()),Date(),IIf(DateValue(Nz(Format([EPP_Dt_Inicio],"dd/mm/yyyy")))<DateSerial(Year(Now()),1,1),DateSerial(Year(Now()),1,1),[EPP_Dt_Inicio]))) AS DataInicio_Acum_Ano, CDate(IIf(Nz([EPP_Dt_Fim])="",Date(),IIf(DateValue(Nz(Format([EPP_Dt_Fim],"dd/mm/yyyy")))<DateSerial(Year(Now()),1,1),DateSerial(Year(Now()),1,1),IIf(EPP_Dt_Fim>Date(),Date(),DateValue(Nz(Format([EPP_Dt_Fim],"dd/mm/yyyy"))) & " " & Format([EPP_Dt_Fim],"hh:nn:ss"))))) AS DataFim_Acum_Ano, DateDiff("n",[DataInicio_D_1],[DataFim_D_1]) AS Minutos_D_1, DateDiff("n",[DataInicio_Acum_Mes],[DataFim_Acum_Mes]) AS Minutos_Acum_Mes, DateDiff("n",[DataInicio_Acum_Ano],[DataFim_Acum_Ano]) AS Minutos_Acum_Ano
    FROM Tbl_Manutencao_EPP INNER JOIN Tbl_Equipamentos_EPP ON Tbl_Manutencao_EPP.EPP_Frota=Tbl_Equipamentos_EPP.EPP_Frota
    GROUP BY Tbl_Equipamentos_EPP.EPP_Frota, Tbl_Manutencao_EPP.EPP_Tag, Tbl_Equipamentos_EPP.EPP_Meta, Tbl_Manutencao_EPP.EPP_Dt_Inicio, Tbl_Manutencao_EPP.EPP_Dt_Fim, Tbl_Manutencao_EPP.EPP_Frota;

    Conteúdo patrocinado


    [Resolvido]Erro em Dcount com condição IIF Empty Re: [Resolvido]Erro em Dcount com condição IIF

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 14:12