MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Query com Count e IIF, retornando o valor em um label

    avatar
    lspetrucci
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 15
    Registrado : 23/12/2019

    Query com Count e IIF, retornando o valor em um label Empty Query com Count e IIF, retornando o valor em um label

    Mensagem  lspetrucci em 25/1/2020, 00:02

    Mestres boa noite!

    Estou precisando muito de uma ajuda de vocês com um dilema que não consigo resolver de forma alguma. Vamos lá.

    Tenho duas tabelas no meu projeto com os nomes: Baseline e Gerar.

    Criei um formulário com o nome de Dashboard, onde, tenho 1 subform com o nome de Gerar subform. Neste subform eu tenho a seguinte query abaixo. Que está funcionando.

    Query com Count e IIF, retornando o valor em um label Propri10

    Query com Count e IIF, retornando o valor em um label Query_10


    Traduzindo para o SQL

    SELECT Gerar.Loja, Count(Gerar.ID) AS Total, IIf([Total]<[Qtd_sensores],'Multstatus',[result]) AS Classificacao, Gerar.status AS result, Gerar.Data_carga, Baseline.Qtd_sensores
    FROM Gerar INNER JOIN Baseline ON Gerar.Client = Baseline.Loja
    GROUP BY Gerar.Loja, Gerar.status, Gerar.Data_carga, Baseline.Qtd_sensores
    HAVING (((Gerar.Loja)<>"Estoque"));


    Query com Count e IIF, retornando o valor em um label Query_11

    Nesta query eu utilizo uma variável chamada "Classificacao" com uma expressão de IIF que verifica se a quantidade [Total] gerada pelo Count (Count(Gerar.ID) AS Total) for menor que a [Qtd_sensores], então, classificacao vai receber "Multistatus", caso contrário, recebe [result] que é uma varável que pega os valores de Status.


    No form "Dashboard" eu tenho 5 imagens com 5 labels no meio que deve exibir a contagem dos registro de acordo com a classificação da loja, ou seja, conta quantas lojas estão com a classificação de "Online", "Suspeito", "Manutenção", "Entregues", "Enviados" e "Multistatus". Porém, não estou conseguindo fazer está contagem corretamente, visto que não consigo fazer Query, pois "Classificacao" não é um campo da minha tabela e sim uma variável que crio uma expressão na query.

    Atualmente estou fazendo as query em funções que chamo no on load do formuário Dashboatd, mas estou buscando pelo campo "status" da tabela Gerar que não retrata a realidade da classificaçao da loja.

    Exemplo:

    Function suspeito()

     Dim db As DAO.Database
     Dim rs As DAO.Recordset
     Dim result As Long

     Set db = CurrentDb
     Set rs = db.OpenRecordset("SELECT Count(Gerar.ID) AS conta ,Gerar.Loja, Gerar.Status FROM Gerar GROUP BY Gerar.Loja, Gerar.Status HAVING (((Gerar.Status) = 'suspeito'))ORDER BY Gerar.Status;")

     rs.MoveLast
     result = rs.RecordCount

     If Not rs.EOF Then
       
        Me.Lb_manutencao.Caption = CStr(result)

       Else

        Me.Lb_manutencao.Caption = "0"

     End If

     rs.Close
     Set rs = Nothing


    End Function


    Como podem observar na imagem abaixo, a quantidade exibida no circulo amarelo (suspeito) está em 334 e a real quantidade que deve ser exibido buscando da variável Classificacao deveria ser 6.

    Query com Count e IIF, retornando o valor em um label Form_d11

    Pessoal, por favor, conto com a ajude de vocês para resolver este meu problema.

    Desde já agradeço.
    good guy
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    Query com Count e IIF, retornando o valor em um label Empty Query com Count e IIF, retornando o valor em um label

    Mensagem  good guy em 10/2/2020, 16:21

    Olá Petrucci,

    Coloque na caixa de texto do formulário "Dashboard", na fonte de controle dessa caixa a seguinte sintaxe:

    Código:
    =DContar("result='suspeito'";"NomedaSuaQuery")

    Deixe a caixa de texto com sua propriedade visible= false. Na sua label:

    lblResultado.Caption = Forms!Dashboard!Nomedacaixadetexto

      Data/hora atual: 25/10/2020, 07:37