MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Contagem sem repetição

    Compartilhe

    Ismael Silva
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 293
    Registrado : 11/12/2017

    [Resolvido]Contagem sem repetição

    Mensagem  Ismael Silva em 24/4/2018, 17:57

    Boa tarde amigos,

    Preciso fazer uma contagem no meu relatório, mas sem repetidos critérios, por exemplo, no meu relatório tenho 5 placas na contagem geral

    UTU 0500
    HJK 7899
    UTU 0500
    GUT 7855
    UTU 0500

    Porém, na verdade eu tenho apenas 3 placas, pois a placa UTU 0500, se repete, digamos que em datas diferentes, ou seja, no meu relatório, eu queria que em determinado campo, fizesse a contagem, mas sem contar as placas duplicadas. Eu procurei aqui no fórum algo sobre isso, mas não encontrei, ou não informei as palavras corretas nas buscas.

    Obrigado desde já.
    avatar
    wellingtoneo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 30/07/2012

    Re: [Resolvido]Contagem sem repetição

    Mensagem  wellingtoneo em 24/4/2018, 20:31

    Olá, boa tarde!

    Eu criaria um agrupamento para esse campo e nó rodapé eu colocaria para contar... Essa campo tem origem na tabela ou consulta?

    Até mais.

    Ismael Silva
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 293
    Registrado : 11/12/2017

    Re: [Resolvido]Contagem sem repetição

    Mensagem  Ismael Silva em 24/4/2018, 20:38

    O meu relatório é de origem consulta.

    o campo que atualmente tenho e que conta todos os registros, é assim:

    =Contar(*) & " registros cadastrados no banco de dados."
    avatar
    wellingtoneo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 30/07/2012

    Re: [Resolvido]Contagem sem repetição

    Mensagem  wellingtoneo em 24/4/2018, 21:01

    Posta o bd ai por favor!

    Ismael Silva
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 293
    Registrado : 11/12/2017

    Re: [Resolvido]Contagem sem repetição

    Mensagem  Ismael Silva em 25/4/2018, 15:04

    Segue o link

    dropbox.com/s/uf4mflw5t75tnvu/EXEMPLO%20TESTS.accdb?dl=1
    [Não são permitidos links externos - Deve-se colocar conforme acima]
    Copiar e colar no browser
    avatar
    wellingtoneo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 30/07/2012

    Re: [Resolvido]Contagem sem repetição

    Mensagem  wellingtoneo em 25/4/2018, 19:04

    Qual o relatório?

    Ismael Silva
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 293
    Registrado : 11/12/2017

    Re: [Resolvido]Contagem sem repetição

    Mensagem  Ismael Silva em 25/4/2018, 19:08

    Fechamento

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Contagem sem repetição

    Mensagem  Noobezinho em 25/4/2018, 22:05

    Ismael

    Sem ver teu aplicativo, experimente assim

    Faça a consulta agrupamento como o Wellington disse e salve digamos:Cons_AgrupaPlacas

    então no controle(caixa de texto) que deseja exibir a quantidade coloque:

    = DContar("*";"Cons_AgrupaPlacas")

    veja que não precisa colocar todos os campos, 1 já basta na consulta.

    [ ]'s
    avatar
    wellingtoneo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 30/07/2012

    Re: [Resolvido]Contagem sem repetição

    Mensagem  wellingtoneo em 26/4/2018, 01:21

    Olá amigos!

    Fiz dois exemplos, um conforme sugestão do Noobezinho e outra usando um função.

    Confesso que demorei para responder por que estava buscando uma solução dentro da fonte de registro já fornecida para o relatório.

    Mas sem sucesso... E também estava meio resistente em usa a função Dcontar()...

    Bom, espero te ajudado. abraços!
    Anexos
    EXEMPLO TESTS.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (637 Kb) Baixado 14 vez(es)

    Ismael Silva
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 293
    Registrado : 11/12/2017

    Re: [Resolvido]Contagem sem repetição

    Mensagem  Ismael Silva em 26/4/2018, 02:36

    Senhores, perfeito, as duas formas atende o que eu gostaria. Muito obrigado!

    Ismael Silva
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 293
    Registrado : 11/12/2017

    Re: [Resolvido]Contagem sem repetição

    Mensagem  Ismael Silva em 26/4/2018, 02:49

    Tinha colocado como resolvido, mas agora mesmo fui testar no relatório original, e me deparei com um problema. Quando filtro por datas, ele trás o total de todas as placas, e quero de acordo com o filtro. Tem jeito?

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Contagem sem repetição

    Mensagem  Noobezinho em 26/4/2018, 10:50

    Experimente colocar o filtro na consulta.

    avatar
    wellingtoneo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 30/07/2012

    Re: [Resolvido]Contagem sem repetição

    Mensagem  wellingtoneo em 26/4/2018, 13:08

    Olá, consegui fazer conforme o amigo sugeriu?

    Ismael Silva
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 293
    Registrado : 11/12/2017

    Re: [Resolvido]Contagem sem repetição

    Mensagem  Ismael Silva em 26/4/2018, 13:09

    Ainda não tentei, mas farei assim.
    avatar
    wellingtoneo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 30/07/2012

    Re: [Resolvido]Contagem sem repetição

    Mensagem  wellingtoneo em 26/4/2018, 13:12

    OK, qualquer coisa posta ai para ajudarmos. um abraço!

    Ismael Silva
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 293
    Registrado : 11/12/2017

    Re: [Resolvido]Contagem sem repetição

    Mensagem  Ismael Silva em 26/4/2018, 17:07

    Uma dúvida, os filtros que utilizo para gerar os relatórios não são provenientes de uma consulta, e sim por códigos, como eu posso colocar o critério aqui?


    Private Sub Abre_Relatorio_Click()

    On Error Resume Next

    Frm_Filtros.Requery

    Dim strFiltro As String
    'DoCmd.Close acReport, "Relatório Fechamento"

    If Not IsNull(Postos1) Then strFiltro = "Unidade='" & Postos1 & "'"
    If Not IsNull(DATACOMEÇO) Then
    If strFiltro = "" Then
    strFiltro = "Data1>=#" & Format(DATACOMEÇO, "mm-dd-yyyy") & "#"
    Else
    strFiltro = strFiltro & " and Data1>=#" & Format(DATACOMEÇO, "mm-dd-yyyy") & "#"
    End If
    End If

    If Not IsNull(DATATERMINADA) Then
    If strFiltro = "" Then
    strFiltro = "Data1<=#" & Format(DATATERMINADA, "mm-dd-yyyy") & "#"
    Else
    strFiltro = strFiltro & " and Data1<=#" & Format(DATATERMINADA, "mm-dd-yyyy") & "#"
    End If
    End If



    If Not IsNull(CIDA) Then
    If strFiltro = "" Then
    strFiltro = "Cidade='" & CIDA & "'"
    Else
    strFiltro = strFiltro & " and Cidade='" & CIDA & "'"
    End If
    End If



    If Not IsNull(TCOMB) And Not IsNull(TCOMB2) Then
    If strFiltro = "" Then
    strFiltro = "(Comb='" & TCOMB & "' or Comb='" & TCOMB2 & COM & "')"
    Else
    strFiltro = strFiltro & " and (Comb='" & TCOMB & "' or Comb='" & TCOMB2 & COM & "')"
    End If
    ElseIf Not IsNull(TCOMB) Then
    If strFiltro = "" Then
    strFiltro = "Comb='" & TCOMB & "'"
    Else
    strFiltro = strFiltro & " and Comb='" & TCOMB & COM & "'"
    End If
    ElseIf Not IsNull(TCOMB2) Then
    If strFiltro = "" Then
    strFiltro = "Comb='" & TCOMB2 & "'"
    Else
    strFiltro = strFiltro & " and Comb='" & TCOMB2 & COM & "'"
    End If
    End If




    '''INSERI MAIS UM CRITÉRIO DE PLACA
    '
    'If Not IsNull(Placa1) Then
    ' If strFiltro = "" Then
    ' strFiltro = "Placa='" & Placa1.Column(0) & "'"
    ' Else
    ' strFiltro = strFiltro & " and Placa='" & Placa1.Column(0) & "'"
    ' End If
    'End If





    ' Código Avelino

    If Not IsNull(Placa1) Then
    If strFiltro = "" Then
    strFiltro = "Placa IN(" & Mid(Me!TXT_FILTROS, 2) & ")"
    Else
    strFiltro = strFiltro & " and Placa IN(" & Mid(Me!TXT_FILTROS, 2) & ")"
    End If
    End If



    If Not IsNull(CidFrotas) Then
    If strFiltro = "" Then
    strFiltro = "Cid='" & CidFrotas & "'"
    Else
    strFiltro = strFiltro & " and Cid='" & CidFrotas & "'"
    End If
    End If

    If Not IsNull(CAT) Then
    If strFiltro = "" Then
    strFiltro = "Categoria='" & CAT & "'"
    Else
    strFiltro = strFiltro & " and Categoria='" & CAT & "'"
    End If
    End If





    'MsgBox User & "Relatório gerado com sucesso!", vbInformation, "Relatório"


    DoCmd.OpenReport "Relatório Geral", acViewPreview, , strFiltro



    End Sub

    avatar
    wellingtoneo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 30/07/2012

    Re: [Resolvido]Contagem sem repetição

    Mensagem  wellingtoneo em 26/4/2018, 17:47

    Olá! No método 2, tente fazer conforme os passos que segue:

    1º Passo =>
    Modifique o trecho do código que enviou passando o  filtro para o argumento de OpenArgs .

    DoCmd.OpenReport "Relatório Geral", acViewPreview, , strFiltro, , strFiltro

    2º Passo =>
    No modulo modifique o código se o caractere * não funcionar, liste os campos do filtro.

    Public Function fncContar(filtro As String)
    Dim rst As DAO.Recordset
    Dim sql As String

    sql = "Select DISTINCT Placa, * from Tbl_Lançamentos Where filtro"

    Set rst = CurrentDb.OpenRecordset(sql, 2)
    fncContar = rst.RecordCount
    rst.Close

    Set rst = Nothing

    End Function

    3º Passo =>

    Alterar a propriedade do campo no formulário conforme imagem.

    [Você precisa estar registrado e conectado para ver esta imagem.]


    Até mais!

    Ismael Silva
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 293
    Registrado : 11/12/2017

    Re: [Resolvido]Contagem sem repetição

    Mensagem  Ismael Silva em 26/4/2018, 21:06

    Wellington


    A pricipio deu certo no relatório original a sua dica. Vou ficar acompanhando e caso dê algum erro, volto ao tópico.

    Tenho mais uma dúvida, mas irei abrir outro tópico, para não misturar assuntos.


    Muito obrigado à todos.

      Data/hora atual: 19/11/2018, 05:45