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]Relatório - sem prompt

    avatar
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 27/10/2017, 02:44

    Olá, falta pouco. Consegui gerar o relatório, somar, gerar por classe e classificar decrescente. Só que quando faço a seleção por datas exibe um prompt pedido para inserir parâmetro de data. Gostaria que os parâmetros de seleção fosse somente os campos do formulário sem a imputbox de parâmetros.Segue o bd para verificar...

    Para teste: frmRelClassificacao
    ConsultaClassificacao
    RelClassificacao


    ALAN
    Anexos
    [Resolvido]Relatório - sem prompt Attachmentpromo1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (883 Kb) Baixado 3 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 27/10/2017, 10:53

    Bom dia,
    No formulário, onde tem
    strFiltroDatas = "[dtDe] BETWEEN #" & Format(Me.txtDe, "mm/dd/yyyy") & "# And #" & Format(Me.txtAte, "mm/dd/yyyy") & "#"
    substitua por
    strFiltroDatas = "[dtClasse] BETWEEN #" & Format(Me.txtDe, "mm/dd/yyyy") & "# And #" & Format(Me.txtAte, "mm/dd/yyyy") & "#"


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 27/10/2017, 11:27

    Opa, acho que postei o bd desatualizado. Peço desculpas aos colegas. Pois percebi que na ConsultaClassificacao não esta incluido o campo "dtDe" da tbFormulario. Na verdade é esse campo que deve ser usado como critério de seleção de período de datas e NÃO dtClasse. Desculpa ai Alexandre Neves. Só que tá acontecendo uma coisa estranha . Estou incluindo aqui o campo dtDe na ConsultaClassificacao mas ele não salva ou não deixa a consulta agrupar e somar pontos. Se os colegas que já fizeram o download do bd , fazerem essa modificação agradeço...

    ALAN
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 27/10/2017, 11:29

    Então, apresente a bd certa, pois não sabemos qual parâmetro pede desnecessariamente


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 27/10/2017, 11:44

    Segue bd atual...
    Anexos
    [Resolvido]Relatório - sem prompt Attachmentpromo1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (872 Kb) Baixado 4 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 27/10/2017, 15:47

    Substitua o que falei


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 27/10/2017, 17:20

    Alexandre Neves, o parâmetro abaixo conforme o inicio do tópico esta certo. O campo da consulta que contém as datas que será usada para selecionar o período é o "dtDe". O campo "dtClasse" é uma informação do cadastro de contrato do funcionário,apenas para contagem de tempo na classe atual, e, no meu sistema não será usado como critério para emissão de relatórios no momento.

    Com o filtro abaixo exibe tela prompt solicitando "Inserir valor do parâmetro" da data inicial e final quando é preenchido os campos de data do form. Já tentei deixar o campo dtDe DESMARCADO na consulta, e no form de seleção do relatório clico em Imprimir direto ele: exibe todos funcionários (OK);somado agrupado(OK); e classificado decrescente(OK), mas quando preencho os campos de data e seleciono uma classe no combobox, pede parâmetro de datas.
    Outra coisa onde realmente coloco os critérios de seleção de data: direto no campo dtDe da consulta, se for como fica, ou deve ser tudo via VBA???


    Esse a principio deveria funcionar!!!
    strFiltroDatas = "[dtDe] BETWEEN #" & Format(Me.txtDe, "mm/dd/yyyy") & "# And #" & Format(Me.txtAte, "mm/dd/yyyy") & "#"


    Alan
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 27/10/2017, 18:14

    Veja o que escrevi na resposta

    No formulário, onde tem
    strFiltroDatas = "[dtDe] BETWEEN #" & Format(Me.txtDe, "mm/dd/yyyy") & "# And #" & Format(Me.txtAte, "mm/dd/yyyy") & "#"
    substitua por
    strFiltroDatas = "[dtClasse] BETWEEN #" & Format(Me.txtDe, "mm/dd/yyyy") & "# And #" & Format(Me.txtAte, "mm/dd/yyyy") & "#"


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 27/10/2017, 18:55

    Alexandre, as informações de classe desse relatório: descrição da classe(desClasse)e data da classe(dtClasse) são informações complementares para quando o usuário imprimir o relatório e fazer uso das informações filtradas. Volto a insistir o campo que define o parâmetro de datas para filtrar o relatório é "dtDe", que tem origem na tbFormulario que é uma das tabelas que compõe a consulta do relatório(ConsultaClassificacao), conforme bd em anexo. A finalidade é:

    1° filtrar o relatório por período de datas e classe (ex: 01/01/1998 à 01/01/2000 e da classe "C");
    2° é emitido um relatório com classificação decrescente, ou seja, que tem mais pontos somados dos últimos 3 anos é classificado;
    3º de acordo com o relatório é separados os 10(dez) primeiros;
    4º se os critérios de pontuação e mínimo de 3 anos na classe atual são confirmados, os 10 primeiros são promovidos de classe por "merecimento" antes do tempo.

    Sem inserir datas nos campos do form (frmRelClassificacao) está emitindo o relatório total com o somatório de pontuação de cada funcionário. Somente selecionando uma classe também. O problema acontece quando se tenta selecionar por data. Cada modificação que é feita no intuito de corrigir gera um erro diferente. Mas o mais recorrente é o que pede para "inserir parâmetro de data". Continuo aqui quebrando a cabeça e lendo tópicos anteriores do fórum....

    ALAN
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 29/10/2017, 17:23

    Boa tarde,
    Realmente não estava a ver campo dtDe em nenhuma tabela relacionada, mas tem

    Abri o frmRelClassificacao e coloquei de 01-01-1998 até 01-01-2000, classe C e imprimi. Deu-me 1 resultado sem pedir parãmetro


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 30/10/2017, 10:25

    Estranho aqui pede parâmetro, fizeste alguma alteração????

    ALAN
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 30/10/2017, 10:36

    Bom dia,
    Não fiz nenhuma alteração ao segundo ficheiro que enviaste


    .................................................................................
    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
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 30/10/2017, 10:47

    Desculpa, estava a tentar com a alteração que indiquei
    Vou tentar descobrir a necessidade de introduzir o parâmetro


    .................................................................................
    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
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 30/10/2017, 11:47

    A razão de pedir esse parâmetro, deve-se a esse campo não existir na consulta de origem do relatório
    Acresce o problema que, para acrescentar esse campo na consulta, tem de se contornar o agrupamento


    .................................................................................
    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
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 30/10/2017, 11:54

    Na consulta, coloque o código
    SELECT tbFormulario.MatriculaFunc, tbPessoa.Nome, tbCargo.desCargo, tbClasse.desClasse, tbContrato.dtClasse, Sum(tbFormularioDetalhe.TotalPontosAno) AS TotalAno, (select max(dtDe) from tbformulario as T where t.matriculafunc=tbformulario.matriculafunc) as dtDe FROM tbPessoa INNER JOIN ((tbClasse INNER JOIN (tbCargo INNER JOIN (tbContrato INNER JOIN tbFormulario ON tbContrato.Matricula = tbFormulario.MatriculaFunc) ON tbCargo.codCargo = tbContrato.codCargo) ON tbClasse.codClasse = tbContrato.codClasse) INNER JOIN tbFormularioDetalhe ON tbFormulario.codFormulario = tbFormularioDetalhe.codFormulario) ON tbPessoa.codPessoa = tbContrato.codPessoa WHERE tbFormulario.dtDe>0 GROUP BY tbFormulario.MatriculaFunc, tbPessoa.Nome, tbCargo.desCargo, tbClasse.desClasse, tbContrato.dtClasse ORDER BY Sum(tbFormularioDetalhe.TotalPontosAno) DESC;


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 30/10/2017, 13:45

    Alexandre, as modificações no modo SQL que enviaste funciona direto na consulta, ok. Porém somente serve para exibe a maior data do cadastro de cada funcionário. Ex, se pegar o cadastro de boletins (frmBoletim3) da matricula 35746 - Augusto dos Anjos Neto, vais perceber que ele tem 6 boletins cadastrados em anos diferentes(1998(3),1999(1),2000(1),2012(1)), mas somente 5 tem pontuações. Faça o teste: seleção de período - 01/01/1998 à 01/01/2000 e classe C .
    O relatório deverá emitir seu nome matricula, classe C e nº total pontos de 4688 e mais outros funcionários da classe C.
    A EXPRESSÃO que tu inseriu na consulta serve para ordenar os pontos pelo maior nº e decrescente???? Se for isso, observaste que eu já tinha colocado um cálculo (TotalAno) e no relatório ele classifica em decrescente a pontuação e depois o Nome é Agrupado???
    Com a tua modificação, ao selecionar sem datas e informar somente classe C, exibe todos da classe C, somando suas pontuações individualmente , OK. Mas ao inserir um período de datas + classe C, meu relatório esta carregando VAZIO. Tentei tirar meu campo dtDe da minha consulta e deixar a sua expressão e sem agrupamento, para que o agrupamento fosse feito direto pelo relatório, mas mesmo assim não funcionou.
    Resumindo então: preciso que a data do campo dtDe da consulta seja usado apenas como parâmetro de seleção de um certo período de datas, esse campo aparecendo ou não na consulta ou somente digitado no form de seleção. Continuo na batalha.....

    ALAN
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 30/10/2017, 14:23

    Se a consulta está bem, não entendi o que deve aparecer no relatório


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 30/10/2017, 15:44

    Como escrevi acima, executando a consulta somente:

    - ela agrupa um funcionário em cada linha, ok;
    - soma todos os pontos cadastrados de cada um até o momento, ok;

    Porém aquela data no final, após a modificação no SQL, se refere somente ao último boletim cadastrado para cada funcionário. A minha finalidade é usar a data do campo dtDe para exibir os pontos de um período selecionado no frmRelClassificacao. Não sei dizer se pra isso os dados já na consulta precisam estar já agrupados e somados por funcionário, ou essa soma e agrupamento ficaria direto no relatório. Só sei dizer que até o momento o relatório esta exibindo somente TODOS ou TODOS da CLASSE A, B,..mas por classe e data ao mesmo tempo NÃO está retornando.Ou seja, não está filtrando por data....

    ALAN
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 30/10/2017, 16:08

    Coloque na consulta
    SELECT * FROM (SELECT tbFormulario.MatriculaFunc, tbPessoa.Nome, tbCargo.desCargo, tbClasse.desClasse, tbContrato.dtClasse, Sum(tbFormularioDetalhe.TotalPontosAno) AS TotalAno, (select max(dtDe) from tbformulario as T where t.matriculafunc=tbformulario.matriculafunc) AS dtDe FROM tbPessoa INNER JOIN ((tbClasse INNER JOIN (tbCargo INNER JOIN (tbContrato INNER JOIN tbFormulario ON tbContrato.Matricula = tbFormulario.MatriculaFunc) ON tbCargo.codCargo = tbContrato.codCargo) ON tbClasse.codClasse = tbContrato.codClasse) INNER JOIN tbFormularioDetalhe ON tbFormulario.codFormulario = tbFormularioDetalhe.codFormulario) ON tbPessoa.codPessoa = tbContrato.codPessoa GROUP BY tbFormulario.MatriculaFunc, tbPessoa.Nome, tbCargo.desCargo, tbClasse.desClasse, tbContrato.dtClasse ORDER BY Sum(tbFormularioDetalhe.TotalPontosAno) DESC) AS [%$##@_Alias];

    Se não fôr, indique que dados devem aparecer no relatório e qual condição para aparecer


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 30/10/2017, 17:00

    Alexandre, com essa ultima alteração do SQL não houve alterações. O relatório somente exibe TODOS, ou TODOS de uma classe selecionada. Quando é digitado nos campos de períodos de datas o relatório retorna em VAZIO. o que deveria aparecer???Ex:
    O funcionário matricula 35746 - Augusto dos Anjos Neto tem boletins cadastrados com pontuações que no total somam 6036 pontos somando todos os boletins de vários anos. Entretanto, selecionando 3 boletins, por período de datas : 01/01/1998 a 01/01/2000 + classe C (digo classe C pois este funcionário está incluído nessa classe) e deverá exibir 4688 pontos (pois esse funcionário tem 3 boletins de 1998 somando -3649 + 1 boletim de 01/01/2000 com 1039 pontos, sendo 3649+1039 = 4688) . É claro tem mais de um funcionário na classe C, cada um irá exibir suas pontuações no período selecionado e será feita a classificação por ordem decrescente de pontos.

    Ex de relatório:

    período de datas : 01/01/1998 a 01/01/2000 + classe C

    Matrícula Nome Cargo Classe dtClasse Pontos Classificação
    ---------------------------------------------------------------------------------------------------------------------------------------------------------
    35746 Augusto dos Anjos Neto Auxiliar Administrativo C 21/06/2002 4688 1
    35745 Castro Alves Operário C 26/04/1991 1226 2

    ALAN
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 30/10/2017, 18:32

    Não percebi bem onde filtra a data, porque aparece mais 1 na listagem
    vê se é esta
    SELECT Matricula, Nome, desCargo,dtClasse,desClasse, Sum(TotalPontosAno) as Pontos FROM ((((TbContrato LEFT JOIN TbPessoa ON TbContrato.CodPessoa=TbPessoa.CodPessoa) LEFT JOIN TbCargo ON TbContrato.CodCargo=TbCargo.CodCargo) LEFT JOIN TbClasse ON TbContrato.CodClasse=TbClasse.CodClasse) LEFT JOIN TbFormulario ON TbContrato.Matricula=TbFormulario.MatriculaFunc) LEFT JOIN TbFormularioDetalhe ON TbFormulario.CodFormulario=TbFormularioDetalhe.CodFormulario WHERE desClasse='C' and dtDe between #1-1-1998# and #1-1-2000# GROUP BY Matricula,Nome,desCargo,desClasse,dtClasse ORDER BY Sum(TotalPontosAno) Desc;


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 30/10/2017, 18:51

    Alexandre, executando aqui, inserindo os critérios direto na query do SQL da consulta acho que deu certo. Mas como é que fica essa query para que os campos do form façam a seleção nessa consulta???Pra testar todos os modos de seleção, todos, com classe, sem classe, etc...

    ALAN
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 30/10/2017, 19:26

    Elimina a consulta, não é precisa, nem dá porque para se incluir o campo dtDe desdobrava-se os agrupamentos

    Elimina a origem dos registos do relatório

    No relatório, acontecimento AoAbrir, colocar
    Me.RecordSource = Me.OpenArgs

    no formulário, a instrução fica
    DoCmd.OpenReport "RelClassificacao", acViewPreview, , , , "SELECT Matricula, Nome, desCargo,dtClasse,desClasse, Sum(TotalPontosAno) as Pontos FROM ((((TbContrato LEFT JOIN TbPessoa ON TbContrato.CodPessoa=TbPessoa.CodPessoa) LEFT JOIN TbCargo ON TbContrato.CodCargo=TbCargo.CodCargo) LEFT JOIN TbClasse ON TbContrato.CodClasse=TbClasse.CodClasse) LEFT JOIN TbFormulario ON TbContrato.Matricula=TbFormulario.MatriculaFunc) LEFT JOIN TbFormularioDetalhe ON TbFormulario.CodFormulario=TbFormularioDetalhe.CodFormulario WHERE " & strFiltro & " GROUP BY Matricula,Nome,desCargo,desClasse,dtClasse ORDER BY Sum(TotalPontosAno) Desc;"


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 31/10/2017, 13:13

    Alexandre, é isso que tenho de fazer??

    - Excluir a consulta da Fonte de Registro do RELATÓRIO;
    - Excluir o agrupamento e classificação inseridos com "Agrupar e Classificar" direto no relatório, isso irá excluir os campos adicionados com "Adicionar Campos Existentes";
    - Adicionar novas caixas de texto e renomear com os nomes dos campos que eram usados na consulta;

    Copiei essa query conforme está no tópico e também colei "Me.RecordSource = Me.OpenArgs" ao Abrir , se executo o relatório direto da erro de "Uso de Null inválido". Se executo pelo form direto sem seleção de datas ou classe , que também deveria funcionar, da "Erro de Sintaxe na expressão WHERE". Talvez um dos erros seria ajustar os filtros na query. Vou verificar...
    Sendo assim, tenho de continuar a fazer os ajustes conforme essa última alteração proposta até chegar a um resultado satisfatório.....

    ALAN

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 31/10/2017, 13:23

    Boa tarde,
    Mas queres abrir relatório directo?
    Se fôr pelo form sem parâmetros ou com 1 apenas, colocar
    Private Sub cmdImprimir_Click()
    'declaro ao VBA sobre a criação da variável strFiltro
    Dim strFiltro As String

    'se o campo Funcionario for nulo então
    If IsNull(Me.ComboClasse) Then
    'mostre registro de todos os Funcionarios
    strFiltro = "[desClasse] Like ""*"""
    'senão
    Else
    'mostre registros do Funcionario selecionado
    strFiltro = "[desClasse] = '" & Me.ComboClasse & "'"
    'finalizo a verificação do campo Funcionario
    End If

    If Len("" & Me.txtDe) > 0 Then strFiltro = strFiltro & " and dtDe >=#" & Me.txtDe & "#"
    If Len("" & Me.txtAte) > 0 Then strFiltro = strFiltro & " And dtDe<=#" & Me.txtAte & "#"
    'abro "RelBoletimDatas" com base no filtro strFiltro que criei
    DoCmd.OpenReport "RelClassificacao", acViewPreview, , , , "SELECT Matricula, Nome, desCargo,dtClasse,desClasse, Sum(TotalPontosAno) as Pontos FROM ((((TbContrato LEFT JOIN TbPessoa ON TbContrato.CodPessoa=TbPessoa.CodPessoa) LEFT JOIN TbCargo ON TbContrato.CodCargo=TbCargo.CodCargo) LEFT JOIN TbClasse ON TbContrato.CodClasse=TbClasse.CodClasse) LEFT JOIN TbFormulario ON TbContrato.Matricula=TbFormulario.MatriculaFunc) LEFT JOIN TbFormularioDetalhe ON TbFormulario.CodFormulario=TbFormularioDetalhe.CodFormulario WHERE " & strFiltro & " GROUP BY Matricula,Nome,desCargo,desClasse,dtClasse ORDER BY Sum(TotalPontosAno) Desc;"

    'se o código não parar, chegando aqui, isso fecha o formulário "frmPesquisaSaída"
    DoCmd.Close acForm, "frmRelBoletimResumo"

    End Sub


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 31/10/2017, 13:33

    ALEXANDRE, direto se o usuário querer exibir TODOS os funcionários com as pontuações e classes misturadas, um relatório geralzão. Depois sim, se o usuário preferir refinar a consulta dai digita somente as as datas ou também, digita datas + uma classe específica....

    ALAN
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 31/10/2017, 13:36

    Colocar AoAbrir do relatorio
    Private Sub Report_Open(Cancel As Integer)
    If Len("" & Me.OpenArgs) = 0 Then
    Me.RecordSource = "SELECT Matricula, Nome, desCargo,dtClasse,desClasse, Sum(TotalPontosAno) as Pontos FROM ((((TbContrato LEFT JOIN TbPessoa ON TbContrato.CodPessoa=TbPessoa.CodPessoa) LEFT JOIN TbCargo ON TbContrato.CodCargo=TbCargo.CodCargo) LEFT JOIN TbClasse ON TbContrato.CodClasse=TbClasse.CodClasse) LEFT JOIN TbFormulario ON TbContrato.Matricula=TbFormulario.MatriculaFunc) LEFT JOIN TbFormularioDetalhe ON TbFormulario.CodFormulario=TbFormularioDetalhe.CodFormulario GROUP BY Matricula,Nome,desCargo,desClasse,dtClasse ORDER BY Sum(TotalPontosAno) Desc;"
    Else
    Me.RecordSource = Me.OpenArgs
    End If
    End Sub


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 31/10/2017, 13:39

    Alexandre, agora o erro recorrente é "Uso de Null inválido" e marca em amarelo o trecho abaixo:


    Private Sub Report_Open(Cancel As Integer)
    Me.RecordSource = Me.OpenArgs

    End Sub

    Troquei para Form_Load , mas continua o erro

    ALAN
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  Alexandre Neves em 31/10/2017, 14:54

    Não era no load era no open


    .................................................................................
    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
    alantb
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 25/07/2017

    [Resolvido]Relatório - sem prompt Empty Re: [Resolvido]Relatório - sem prompt

    Mensagem  alantb em 31/10/2017, 16:59

    Alexandre, finalmente a filtragem deu CERTO!!!!Fiz as alterações que tu propôs e deu certo: deixei de lado a consulta; desvinculei o relatório; adicionei caixas de texto com os mesmos nomes dos campos da query; e também os códigos que tu passou acima para o relatório e para o formulário.
    Desde já agradeço a paciência e a colaboração que tiveste neste tópico, um muito obrigado. Sendo assim [RESOLVIDO].

    ALAN


      Data/hora atual: 27/5/2020, 03:21