MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Consulta Estatística

    Compartilhe

    nioxys
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 68
    Registrado : 04/01/2012

    [Resolvido]Consulta Estatística

    Mensagem  nioxys em Ter 8 Out - 9:28

    Boa tarde,

    Fiz uma pesquisa pelo forum mas não consegui encontrar nenhum tópico que se enquadre no que pretendo, posso não ter utilizado os melhores termos de pesquisa e se assim foi peço desculpa por alguma duplicação.

    É o seguinte, tenho uma BD onde faço o registo de candidatos e um dos campos que está presente na tabela candidatos é o "País", e o que eu quero era fazer é uma listagem/contagem dos países registados, por exemplo, tenho 10 candidatos, 3 Portugueses, 3 Brasileiros, 2 Espanhóis, 1 Francês, 1 Russo. O que eu quero é colocar numa listbox os países registados (nãos sei se é o melhor termo) e numa segunda coluna o total de ocorrências, ficaria assim,

    Portugal 3
    Brasil     3
    Espanha 2
    França   1
    Rússia    1

    Não estou a conseguir materializar isto em SQL, porque não posso fazer uma simples consulta de contagem, mesmo utilizando Distinct o resultado seria apenas o número de países, neste caso, 5. E também não posso, penso eu, colocar como critério o nome do país porque se o fizer tenho de fazer uma consulta para cada país e eu tenho 190 países. Smile
    O que quero realmente é o número de vezes que um determiando país aparece, basicamente é contar quantas vezes se repete um registo, mas não estou a ver como o fazer de forma genérica, ou seja, sem especificar o nome de um determinado país.

    Será que me podem ajudar?

    EDIT


    Continuei a minha pesquisa no forum e encontrei este post
    [Você precisa estar registrado e conectado para ver este link.]

    E reparei que a solução está no group by, como neste momento não tenho acesso ao meu BD testei a instrução SQL no site da w3schools,

    [Você precisa estar registrado e conectado para ver este link.]

    Utilizei a tabela Customers e consegui contar o número de ocorrências de cada país, ou seja, o número de clientes por país.

    Código:
    SELECT Country, Count(Country) AS ContarPais FROM Customers GROUP BY Country ORDER BY Count(Country) DESC
    Em principio é isto ue preciso, mais logo vou tentar colocar o resultado numa listbox/listview.

    Se calhar criei o tópio em vão, peço desculpa.


    Última edição por nioxys em Ter 8 Out - 10:01, editado 2 vez(es) (Razão : Possível solução)

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Consulta Estatística

    Mensagem  JPaulo em Ter 8 Out - 10:12

    Ola a instrução está corretissima, é isso mesmo;

    SELECT Country, Count(Country) AS ContarPais FROM Customers GROUP BY Country ORDER BY Count(Country) DESC


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    nioxys
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 68
    Registrado : 04/01/2012

    Re: [Resolvido]Consulta Estatística

    Mensagem  nioxys em Ter 8 Out - 10:21

    Obrigado Smile

    E posso colocar a instrução directamente numa listbox/listview?
    Se o fizer o resultado será, por exemplo,

    Coluna 1; Coluna 2
    Portugal       3
    Brasil           3
    Espanha       2
    etc..

    ??

    E já agora posso utilizar uma combobox para tornar a instrução dinâmica? Ou seja, se eu seleccionar País é apresentado a listagem de candidatos (no meu caso) por país, se sleccionar profissão, é apresentada a listagem de candidatos por profissão, etc.

    Tenho de susbituir o campo na instrução SQL, mas como relacciono o valor que está na combobox com o campo em si?

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Consulta Estatística

    Mensagem  JPaulo em Ter 8 Out - 10:40

    Claro que sim, pode colar esse SQL direto na origem da lista.

    E quanto à combobox, também pode ir buscar os dados à mesma tabela e no criterio do SQL da Lista, usar o Forms![SeuFormulario]![SuaCombobox]


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    nioxys
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 68
    Registrado : 04/01/2012

    Re: [Resolvido]Consulta Estatística

    Mensagem  nioxys em Ter 8 Out - 16:01

    Olá novamente,

    Estive agora a experimentar e tenho dois problemas (em princípio),

    1º - A expressão funciona, não há dúvida, mas não dá bem o resultado que eu quero. Passo a explicar.
    Tenho uma tabela candidatos onde existe um campo País (c_pais) e o preenchimento desse campo é feito através da selecção do país numa combobox, combobox essa que é carregada através de uma tabela com 190 paises e nessa tabela tenho 2 campos IDpais e o campo nome, então o que aparece na listbox não é o nome mas sim o IDpais, a contagem está certa, mas numa coluna aparece o ID e eu queria que aparecesse o nome. Há forma de contornar isto? Ou a forma como eu tenho as tabelas não é a melhor?

    2º - relativamente à combobox eu não percebi como colocar a expressão que falaste

    Forms![SeuFormulario]![SuaCombobox]

    Coloca a minha BD em anexo, o formulário onde estou a testar é o frmEstatistica, as tabelas são tblcandidatos e tblpaises. No formulário frmcandidatos é onde introduzo os dados.

    [Você precisa estar registrado e conectado para ver este link.]

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Consulta Estatística

    Mensagem  JPaulo em Qua 9 Out - 5:22

    Veja e adapte ao seu form;
    Anexos
    Database1_OLD.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (30 Kb) Baixado 20 vez(es)


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    nioxys
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 68
    Registrado : 04/01/2012

    Re: [Resolvido]Consulta Estatística

    Mensagem  nioxys em Qua 9 Out - 15:46

    Olá,

    Desculpa mas não percebi o seu exemplo, quer dizer, eu percebi o seu funcionamento mas não estou a entender como adaptar ao que eu quero.

    Não sei se me expliquei bem,

    A minha primeira dúvida era relativametne a esta instrução SQL,

    Código:
    SELECT c_pais, Count(c_pais) AS ContarPais FROM tblcandidatos GROUP BY c_pais ORDER BY Count(c_pais) DESC;


    Se eu colocar esta instrução na listbox é feita a contagem mas o resultado é o seguinte,

    PaísTotal
    1481
    11

    Faz a contagem mas não apresenta o nome do pais e sim o código do mesmo, o resultado que queria era o seguinte,

    PaísTotal
    Portugal1
    Afeganistão1
    A segunda dúvida era relativamente a uma combobox, ou seja, se eu colocar uma combobox com os seguintes dados,

    Por País
    Por Sexo
    Por Profissão

    O resultado que queria ao seleccionar uma delas na combobox era que a listbox apresentasse a contagem para cada um dos itens, ou seja,

    Se esolher por país,

    CategoriaTotal
    Portugal1
    Afeganistão1
    Se escolher por sexo,

    CategoriaTotal
    Masculino5
    Feminino6
    Se escolher por profissão,

    CategoriaTotal
    Electricista5
    Pintor6
    Motorista2
    Com o seu exemplo eu já aprendi uma coisa nova, mas acho que não consigo adaptar para isto.

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Consulta Estatística

    Mensagem  JPaulo em Qui 10 Out - 5:08

    Ola;

    Aparece o código do País porque  o campo "c_pais" é o código do País.

    Para testar:

    1º Altere o campo c_pais da tabela tblcandidatos, de Texto para Numerico.

    2º Abra uma consulta nova em modo SQL e cole este trecho, e veja o resultado;

    SELECT tblpaises.p_paises AS País, Count(tblcandidatos.c_pais) AS Total
    FROM tblpaises LEFT JOIN tblcandidatos ON tblpaises.ID = tblcandidatos.c_pais
    GROUP BY tblpaises.p_paises;


    Se preferir:
    Você pode converter o seu banco para 2007 e anexar de novo, com o seu formulario.


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    nioxys
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 68
    Registrado : 04/01/2012

    Re: [Resolvido]Consulta Estatística

    Mensagem  nioxys em Qui 10 Out - 15:08

    Olá

    No Access 2010 não tenho como gravar numa versão anterior.

    De qualquer forma deixo aqui o link da BD.

    [Você precisa estar registrado e conectado para ver este link.]

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Consulta Estatística

    Mensagem  JPaulo em Sex 11 Out - 5:56

    Botão do Office, Salvar como... Access 2007


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    nioxys
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 68
    Registrado : 04/01/2012

    Re: [Resolvido]Consulta Estatística

    Mensagem  nioxys em Sex 11 Out - 20:12

    Olá,

    Essa opção não existe.
    Eu criei uma nova BD só com as tabelas e os formulários necessários.
    Em princípio esta dá para abrir no 2007 sem problemas, não tem elementos "exclusivos" do 2010.

    Aqui fica o link

    [Você precisa estar registrado e conectado para ver este link.]

    Agradeço desde já a ajuda.

    nioxys
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 68
    Registrado : 04/01/2012

    Re: [Resolvido]Consulta Estatística

    Mensagem  nioxys em Ter 22 Out - 13:08

    Só para não cair no esquecimento... Smile

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Consulta Estatística

    Mensagem  JPaulo em Ter 22 Out - 13:27

    Já estava esquecido mesmo...Laughing 

    Veja se é isto;

    Escolha na combo e veja o resultado;
    Anexos
    Estatistica_OLD.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (32 Kb) Baixado 22 vez(es)


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    nioxys
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 68
    Registrado : 04/01/2012

    Re: [Resolvido]Consulta Estatística

    Mensagem  nioxys em Ter 22 Out - 13:32

    É mesmo isto. Smile

    Muito obrigado, mais uma vez. Smile

    É pedir muito, se te pedir para explicares a instrução

    Código:
    SELECT tblpaises.p_paises AS País, Count(tblcandidatos.c_pais) AS Total " & vbCrLf & _
                    "FROM tblpaises LEFT JOIN tblcandidatos ON tblpaises.ID = tblcandidatos.c_pais " & vbCrLf & _
                    "GROUP BY tblpaises.p_paises " & vbCrLf & _
                    "HAVING (((tblpaises.p_paises)>""0""));"

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Consulta Estatística

    Mensagem  JPaulo em Ter 22 Out - 13:39

    Intão ?

    Esse é o SQL retirado de uma consulta, que tem a relação de um para muitos entre a tabela tblpaises e a tabela tblcandidatos, o ">0" é para não aparecer campos em branco.

    Obrigado pelo retorno o forum agradece.


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    nioxys
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 68
    Registrado : 04/01/2012

    Re: [Resolvido]Consulta Estatística

    Mensagem  nioxys em Ter 22 Out - 13:53

    EU sei que é SQL.. Smile

    A minha dúvida está no funcionamento da consulta, por exemplo o porquê de utilizar,

    Código:
    vbCrLf

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Consulta Estatística

    Mensagem  JPaulo em Ter 22 Out - 14:02

    Serve para mudar de linha.


    O vbCrLf é uma constante do Visual Basic que junta dois caracteres de controle.

    O vb é Visual Basic
    O Cr(Carriage return) é o 13 em ascii.
    O LF (Line Feed) é o 10 em Ascii.

    Como o nome diz, é um avanço de linha e um retorno de carro (ou seja do cursor).

    Explicação da programação:

    Use VbCRLF para quebrar longas strings de SQL

    Por que sugerir que se inclua a constante VbCrLf nas quebras de longas strings contendo consultas SQL? Afinal de contas, estas constantes nada significam dentro das strings de SQL. A resposta é: depuração simplificada. Constantemente você precisa criar longas consultas SQL que ocupam várias linhas de programa. Por exemplo,

    sSQL = "SELECT * FROM Usuarios" _
    & " WHERE userid = " & lUser _
    & " AND nome = '" & sNome & "'"

    Se você cria a consulta SQL desta forma, ela é legível no código do programa, mas não quando você tem de vê-la na janela Immediate em tempo de execução.

    Na janela Immediate, você entra com

    ? sSQL
    e uma longa e inteira string é exibida, alcançando quilômetros de distância.

    Contudo, se você simplesmente terminar cada linha com VbCRLF, como aqui:

    sSQL = "SELECT * FROM Usuarios" & vbCrLf _
    & "WHERE userid = " & lUser & vbCrLf _
    & "AND nome = '" & sNome "'"

    então você terá uma visão completa e fácil de ler da sua consulta SQL.

    Um outro benefício do exemplo acima é que você não precisa se preocupar em adicionar um espaço no começo (ou fim) de cada linha para evitar que isto:

    sSQL = "SELECT * FROM Usuarios" & _
    & "WHERE userid = " & lUser


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    nioxys
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 68
    Registrado : 04/01/2012

    Re: [Resolvido]Consulta Estatística

    Mensagem  nioxys em Ter 22 Out - 15:42

    Obrigado pela explicação.
    É sempre bom aprender algo novo. Smile

      Data/hora atual: Dom 4 Dez - 16:21