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

    Ler um campo não associado a um controle do relatório

    avatar
    gilbertoasm
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 11/01/2019

    Ler um campo não associado a um controle do relatório Empty Ler um campo não associado a um controle do relatório

    Mensagem  gilbertoasm em 12/4/2019, 13:00

    Bom dia. Imaginem a seguinte situação hipotética: eu tenho um Relatório cuja origem dos dados é uma Consulta que traz os dados de cadastro de pessoas (nome, endereço, CPF, telefone, etc). Quando as pessoas preenchem o formulário para cadastro, além de ter que preencher OBRIGATORIAMENTE todos os campos do formulário, ela tem a opção de "Divulgar" ou "Não divulgar" o seu telefone (vejam que o nº do telefone propriamente dito é obrigatório cadastrar, a pessoa tem apenas a opção de torná-lo público ou não).

    O que eu quero, nesse exemplo hipotético, é: na geração do relatório ler o campo que informa se o telefone deve ser divulgado ou não para tomar a decisão de imprimir ou não o mesmo, respectivamente. Eu tratarei esse código no evento "imprimir" do relatório. Essa tratativa para mim é tranquila. A questão é: como ler/acessar um dado/campo da query que está abastecendo o relatório sem que este dado/campo esteja associado a um controle do relatório propriamente dito?

    Obrigado aos mestres.
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 682
    Registrado : 13/12/2016

    Ler um campo não associado a um controle do relatório Empty Re: Ler um campo não associado a um controle do relatório

    Mensagem  Alexandre Fim em 12/4/2019, 13:06

    Bom dia Gilberto,
    Seja bem vindo ao fórum.

    Isso é possível de fazer via VBA.

    Por gentileza, poste aqui um exemplo do seu banco de dados (somente parte envolvidas) para analisarmos.

    Grato.

    Abraço
    avatar
    Ismael Silva
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Ler um campo não associado a um controle do relatório Empty Re: Ler um campo não associado a um controle do relatório

    Mensagem  Ismael Silva em 12/4/2019, 13:10

    Só pra acompanhar o tópico.
    avatar
    gilbertoasm
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 11/01/2019

    Ler um campo não associado a um controle do relatório Empty LER UM CAMPO NÃO ASSOCIADO A UM CONTROLE DO RELATÓRIO

    Mensagem  gilbertoasm em 12/4/2019, 14:15

    Alexandre, obrigado pelo apoio.
    Eu realmente estou desenvolvendo essas tratativas com o VBA. O trabalho que estou desenvolvendo é mais complexo, por isso quis criei um exemplo hipotético para não bagunçar a cabeça de vocês e perder o foco do problema. Mas, se considerar a abstração que eu usei (a situação hipotética), com a solução dada a ela eu consigo transcrevê-la para o meu código.

    A minha dúvida é simples assim: como ter acesso a um dado campo de um registro durante a geração de um relatório sendo que este campo NÃO ESTÁ associado a nenhum Controle do relatório. Devo estar "comendo um moscão", pois parece uma coisa simples. Mas, incrivelmente, não estou conseguindo resolver.

    Qualquer Relatório básico pode ser usado como exemplo. Basta tentar realizar alguma ação (leitura) via VBA baseada em algum valor de um campo do registro que não esteja associado a nenhum controle.

    Para tentar esclarecer um pouco, seria algo do tipo:

    if Me.Recordset.exibirCelular = TRUE
       controleCelular.Visible = TRUE
    else
       controleCelular.Visible = FALSE
    end if


    Onde exibirCelular é o campo do registro que eu quero acessar (nesse caso, testar seu valor), que não está associado a nenhum Controle do Relatório, mas que está na query que abastece o relatório, para tomar a decisão se torno "Visível" ou não o controleCelular. No caso do código digitado acima, não funcionou. Com ele recebo uma mensagem de que Recordset não funciona com MDB.


    Mais uma vez, obrigado.
    JPaulo
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Ler um campo não associado a um controle do relatório Empty Re: Ler um campo não associado a um controle do relatório

    Mensagem  JPaulo em 12/4/2019, 14:16

    Olá;

    Bem vindo ao forum;

    Esse tratamento pode ser feito logo na consulta que alimenta o relatório;

    Se campo = "Não divulgar", não mostra o telefone, caso contrario, mostra;

    Código:
    Telefone: IIf([SuaTabela]![exibirCelular]=False;"";[SuaTabela]![CampoTelefone])


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Ler um campo não associado a um controle do relatório Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Ler um campo não associado a um controle do relatório Folder_announce_new 102 Códigos VBA Gratuitos...
    Ler um campo não associado a um controle do relatório Folder_announce_new Instruções SQL como utilizar...
    avatar
    gilbertoasm
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 11/01/2019

    Ler um campo não associado a um controle do relatório Empty Re: Ler um campo não associado a um controle do relatório

    Mensagem  gilbertoasm em 12/4/2019, 15:08

    JPaulo, obrigado pela atenção.

    A sua solução ainda não me atende porque o registro como um todo eu tenho que mostrar (imprimir). Então, se a opção "não exibir celular" estiver marcada, os demais dados devem ser impressos. Apenas o número do celular que não deve ser impresso.

    A sua ideia é interessante. Eu até já pensei em resolver esse problema na montagem da query que gera os dados. Mas como falei anteriormente, o meu banco é muito mais complexo do que uma simples lista de dados pessoais. São várias as condições que terei que avaliar para determinar se um determinado campo deve ser exibido ou não, o que tornou muito complexo (um emaranhado enorme) tratar essas condições com código SQL. O que é totalmente diferente se eu usar VBA (o céu é o limite, além de muito mais organizado).

    Por isso volto a dizer (senhores, peço desculpas por insistir na abstração, mas se resolver ela, resolve meus problemas), o que eu preciso é "enxergar" um determinado campo que não está associado a nenhum controle do meu relatório, mas que está na query que o abastece, para tomar determinadas decisões na construção do Relatório.

    Trata-se de um Relatório extremamente Analítico, envolvendo análises de Engenharia. Por isso insisto que não vale a pena ficar detalhando o trabalho aqui. Basta eu encontrar uma solução para a questão de enxergar o "danado" do campo (são vários, na realidade, e todos eles estão na query) e criar meus ifs para construção do Relatório.

    Para ajudar mais ainda no entendimento do meu problema, para resolvê-lo de um jeito provisório (precário, gambiarrado, não elegante, tosco), esses campos que eu preciso ter acesso para tomada de decisão, mas não preciso da exibição deles na impressão do relatório propriamente dito (são números e parâmetros para cálculos), eu estou criando Controles no meu relatório associados a eles e tornando-os invisíveis (a propriedade Visible = false). Só que são próximos de 10 parâmetros. Imaginem o ninho de gato que está ficando o bastidor desse relatório (no mode lay-out fica tudo embolado, pois tenho que amontoar esses campos num cantinho para não ocuparem espços do relatório). Por isso digo que essa solução não é elegante.


    Grato.
    JPaulo
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Ler um campo não associado a um controle do relatório Empty Re: Ler um campo não associado a um controle do relatório

    Mensagem  JPaulo em 12/4/2019, 15:45

    Olá Gilberto;

    "A sua solução ainda não me atende porque o registro como um todo eu tenho que mostrar (imprimir). Então, se a opção "não exibir celular" estiver marcada, os demais dados devem ser impressos. Apenas o número do celular que não deve ser impresso."

    A instrução que passei, leva todos os dados na mesma, apenas o campo se estiver marcado, vai vazio.

    Comprendo a complexidade do seu relatório.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Ler um campo não associado a um controle do relatório Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Ler um campo não associado a um controle do relatório Folder_announce_new 102 Códigos VBA Gratuitos...
    Ler um campo não associado a um controle do relatório Folder_announce_new Instruções SQL como utilizar...

      Data/hora atual: 24/4/2019, 07:36