MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

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

2 participantes

    [Resolvido]Chamar por textobox em tempo de execução

    Ronaldo Costa
    Ronaldo Costa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 13/03/2011

    [Resolvido]Chamar por textobox em tempo de execução Empty [Resolvido]Chamar por textobox em tempo de execução

    Mensagem  Ronaldo Costa Sex 8 Out - 7:50

    Olá pessoal. Olha eu de novo!

    Tenho um relatório com muitos texto box que devem sempre ser preenchido (documento padrão que o cliente usa, por isso tenho que dar um jeito de ser usado).
    O preenchimento dos mesmos deve ser a partir de uma "consulta1" (imagem abaixo).
    Diante da minha limitação VBA, a única forma que conheço de preencher estes TXTs é repetindo DLookup para todos.

    Será que existe como usar um LOOP que chame o textobox e preencha-o a cada vez que o LOOP rodar.
    Por exemplo considerando o código abaixo que montei:
    o loop vai na 1ª linha da consulta, pega as informações, monta o nome do txt e preenche-o com o valor da média

    Private Sub Detalhe_Print(Cancel As Integer, PrintCount As Integer)

    Dim rsMedias        As DAO.Recordset
    Dim intIdAluno      As Integer
    Dim douMedia        As Double
    Dim intArea         As Integer
    Dim intSerie        As Integer
    Dim intdisciplina   As Integer
    Dim strCampo        As Integer

    Set rsMedias = CurrentDb.OpenRecordset("consulta1")

    rsMedias.MoveFirst

    On Error Resume Next
    Do While Not rsMedias.EOF
       intArea = rsMedias!disc_idArea 'pega o idArea
       intdisciplina = rsMedias!hdet_idDisciplina 'pega o idDisciplina
       intSerie = rsMedias!hdet_idSerie 'pega o idSerie
       douMedia = rsMedias!hdet_media 'pega a média
       strCampo = "m" & intArea & intdisciplina & intSerie 'monta o nome para o txt

      ' me.strcampo = Nz(DLookup("[hdet_media]", "consulta1", "[ref]='strCAmpo '"), "**") chama o txt e preenche-o com a média
       
       rsMedias.MoveNext


    Loop
    rsMedias.Close
    Set rsMedias = Nothing


    [Resolvido]Chamar por textobox em tempo de execução Imagem11
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1306
    Registrado : 21/01/2012

    [Resolvido]Chamar por textobox em tempo de execução Empty Re: [Resolvido]Chamar por textobox em tempo de execução

    Mensagem  Cláudio Más Sex 8 Out - 13:30

    Olá,

    Não poderia incluir a consulta1 na origem do relatório, vinculando com a tabela/consulta já existente pelo campo ref?
    Assim é possível utilizar no relatório o campo hdet_media da consulta1, sem necessidade do código vba.
    Ronaldo Costa
    Ronaldo Costa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 13/03/2011

    [Resolvido]Chamar por textobox em tempo de execução Empty Re: [Resolvido]Chamar por textobox em tempo de execução

    Mensagem  Ronaldo Costa Sex 8 Out - 18:26

    É que na consulta1 as médias são apresentadas uma a baixo da outra e no relatório elas são apresentadas uma ao lado da outra.

    Fiz usando Dlookup para todos os controles (são mais de 100). Perde bastante desempenho, por isso vou aguardar um pouco aqui no fórum.
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1306
    Registrado : 21/01/2012

    [Resolvido]Chamar por textobox em tempo de execução Empty Re: [Resolvido]Chamar por textobox em tempo de execução

    Mensagem  Cláudio Más Sex 8 Out - 19:56

    Desculpe, mas tem certeza que não funciona?
    Fez um teste?
    Ronaldo Costa
    Ronaldo Costa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 13/03/2011

    [Resolvido]Chamar por textobox em tempo de execução Empty Re: [Resolvido]Chamar por textobox em tempo de execução

    Mensagem  Ronaldo Costa Sab 9 Out - 18:47

    Não. Não tentei!

    Observando a estrutura do relatório (imagem a baixo) e a estrutura da consulta (imagem na 1ª postagem), sinceramente, não sei nem por onde começar.

    [Resolvido]Chamar por textobox em tempo de execução Relato11
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1306
    Registrado : 21/01/2012

    [Resolvido]Chamar por textobox em tempo de execução Empty Re: [Resolvido]Chamar por textobox em tempo de execução

    Mensagem  Cláudio Más Seg 11 Out - 18:34

    Se puder enviar uma cópia das tabelas e consultas, facilita.
    Ronaldo Costa
    Ronaldo Costa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 283
    Registrado : 13/03/2011

    [Resolvido]Chamar por textobox em tempo de execução Empty Re: [Resolvido]Chamar por textobox em tempo de execução

    Mensagem  Ronaldo Costa Qua 24 Nov - 10:11

    Criei uma linha de código com dlookup para cada textobox que vai buscar a informação na tabela de médias e preenche o relatório.
    Perdi um pouco de desempenho do sistema, mas funcionou bem.

    É difícil ter que desmembrar os formes para postar parte dele.

    Obrigado!

      Data/hora atual: Sab 1 Out - 12:09