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]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Rosalvo Petrillo
    Rosalvo Petrillo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 18
    Registrado : 21/09/2013

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Rosalvo Petrillo em 8/1/2014, 23:08

    Boa noite a todos!!!
    Minha dúvida é a seguinte:
    Tenho um formulário contínuo e nele criei uma caixa de texto no cabeçalho deste formulário.
    Queria que ao inserir um valor nessa caixa de texto esse mesmo valor se repita em um determinado campo na sessão "Detalhe" do formulário.

    Sei que para repetir um valor em outro campo eu usaria: Me.campo2=me.campo1 - no eventro "Após Atualizar". Mas não poderei usar esse código, pois, ele se limita a preencher o campo desejado somente no primeiro registro, deixando-o em branco em todos os outros registros em ele aparece.

    Alguém poderia me ajudar nesta questão? Agradeço desde já!
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Dilson em 9/1/2014, 11:19

    Olá, podes colocar a partir de um botão ao lado da caixa de texto (Comentei bastante para entender o que o código faz):

    'Inicio o tratamento de erros
    On Error GoTo TratareiErro
    'Variável para referenciar o conjunto de registros
    Dim Rs As DAO.Recordset
    'Variável que armazenará o n° total de registros a serem percorridos no loop
    Dim Contador As Long
    'Variável que armazenará a contagem de registros a cada passada do loop
    Dim ContaOProgresso As Long
    'Instancio o recordset, ou seja, o conjunto de registros da tabela
    Set Rs = CurrentDb.OpenRecordset("NomeDaTabelaQueAlimentaAFolhaDeDados")
    'Movimento no recordset até o ultimo registro para precisar o número de registros na tabela
    Rs.MoveLast
    'Alimento a variável Contador com o total de registros no conjunto de dados, que é o recordset
    Contador = Rs.RecordCount
    'Movo para o primeiro registro do recordset
    Rs.MoveFirst
    'Utilizo o SysCmd para executar uma barra de progresso para indicar a que pé encontrará o processamento.
    SysCmd acSysCmdInitMeter, "Realizando as alterações, aguarde...", Contador
    'Inicio o loop que irá do primeiro registro ao ultimo
    'Veja que já sabemos a quantidade a ser percorrida na variável Contador

    For ContaOProgresso = 1 To Contador
    'Atualizo as informações da barra de progresso
    'Mostrará a evolução de 1 a cada valor passado do Contador

    SysCmd acSysCmdUpdateMeter, ContaOProgresso
    'Abro a edição na linha que estou passando
    Rs.Edit
    'Insiro o dado da caixa de texto na coluna do campo2
    Rs("Campo2") = Me!Campo1
    'Atualizo o registro
    Rs.Update
    'E vou para o próximo
    Rs.MoveNext
    'Aqui acontece o loop, ou seja, retorno lá pra cima novamente
    'apartir do For ContaOProgresso eu faço mesmo procedimento que fiz na linha de registro anterior.

    Next ContaOProgresso
    'Quando o For ContaOProgresso = 1 chegar ao total do Contador, o loop terá chegado ao seu final.
    'Não resta mais nada a não ser fechar o recordset

    Rs.Close
    'Removo a barra de progresso
    SysCmd acSysCmdRemoveMeter
    'E informo uma mensagem dizendo o número de registros percorridos
    MsgBox "OK, Total de: " & Contador & " registros", vbInformation, "Concluído"
    Exit_TratareiErro:
    Exit Sub
    'Se algo impedir o funcionamento do código, emite uma mensagem informando ao usuário qual o erro
    TratareiErro:
    MsgBox "Ocorreu uma falha neste processamento." _
               & vbCrLf & "Trata-se do erro n°: " & Err.Number _
               & vbCrLf & "Descrição: " & Err.Description, vbCritical, "Erro inesperado"
    Exit Sub

    Rosalvo Petrillo
    Rosalvo Petrillo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 18
    Registrado : 21/09/2013

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Repetir um valor em todos os Registros em um formulário contínuo

    Mensagem  Rosalvo Petrillo em 10/1/2014, 15:06

    Olá Dilson!!!
    Agradeço muito pela sua resposta, explicativa e objetiva.
    Só que ocorreu o seguinte problema: Quando preencho a caixa de texto, sou informado sobre quantidade de registros que foram atualizados na minha consulta, até aí maravilhas. Mas para visualizar essa atualização tenho que clicar em (F9), pois fora isso, os registros permanecem sem a atualização, (Vazios).
    Coloquei o Código que você me enviou no evento "Após Atualizar" da caixa de Texto.
    Será que dá pra resolver mais esse probleminha? Muito obrigado!
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Dilson em 10/1/2014, 18:20

    Olá,
    O método Recalc é equivalente o pressionar a tecla F9, então no final do código experimente colocar assim:

    Me.Recalc

    ou

    Me.Requery 'para requerer a atualização do formulário atual
    Rosalvo Petrillo
    Rosalvo Petrillo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 18
    Registrado : 21/09/2013

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Repetir um valor em todos os Registros em um formulário contínuo

    Mensagem  Rosalvo Petrillo em 10/1/2014, 22:03

    Dilson, muito obrigado mesmo! Está resolvido.
    Abraços!
    avatar
    Henry Airlie
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 64
    Registrado : 16/08/2014

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Repetir um valor em todos os Registros em um formulário contínuo

    Mensagem  Henry Airlie em 17/7/2015, 18:10

    Boa Tarde Dilson,
    Primeiro gostaria de lhe parabenizar pelo código criado, peguei o gancho e adaptei ao meu formulário. A diferença e que eu gostaria que o valor a ser alterado pegasse os registros com a mesma data e não desde o inicio, porque no meu formulário trabalho com datas diferentes. Será que pode me ajudar??.
    Desde já
    agradeço
    Henry Airlie
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Dilson em 20/7/2015, 14:41

    Precisa dar mais detalhes: tabela(s) envolvida(s), campos e se envolve filtros.
    Aguardamos.
    avatar
    Henry Airlie
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 64
    Registrado : 16/08/2014

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Henry Airlie em 20/7/2015, 16:14

    Olá Dílson,
    Minha tabela é uma tabela de comissões, onde lanço o valor vendido por semana. E desse valor calculo o valor de comissão de cada funcionário. A tabela se chama "tblpagamento" ae criei uma consulta com o nome consultapagamento e apliquei o filtro por data "Como "*" & [Digite a Data]", que para entrar eu digito a data da semana e lanço o valor vendido.
    Exemplo:
    DATA - Funcionário - Valor Vendido - Valor da comissão
    30/06/2015 José R$ 1.000,00
    30/06/2015 Carlos R$ 1.000,00
    30/06/2015 Antônio R$ 1.000,00
    01/07/2015 Jose R$ 1.500,00
    01/07/2015 Calos R$ 1.500,00
    01/07/2015 Antônio R$ 1.500,00

    Como o numero de funcionários é grande queria evitar lançar o mesmo valor para cada funcionário. Então copiei o código que vc criou para o amigo Rosalvo, funcionou perfeitamente só que ele lança desde o primeiro registro e eu gostaria que fosse da data o qual solicitei ex: 01/07/2015.

    Grato
    avatar
    Henry Airlie
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 64
    Registrado : 16/08/2014

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Henry Airlie em 18/8/2015, 13:46

    Olá Dilson,
    Será que teria como me ajudar.
    Desde já Agradeço.

    Stt
    Henry Airlie
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Dilson em 20/8/2015, 14:31

    Olá Henry, posso sim e desde já obrigado pela paciência e pelo UP para me lembrar.

    Vai fazer uma pequena variação, veja:


    'Inicio o tratamento de erros
    On Error GoTo TratareiErro
    'Variável para referenciar o conjunto de registros
    Dim Rs As DAO.Recordset
    'Variável que armazenará o n° total de registros a serem percorridos no loop
    Dim Contador As Long
    'Variável que armazenará a contagem de registros a cada passada do loop
    Dim ContaOProgresso As Long
    'Instancio o recordset, ou seja, o conjunto de registros da tabela

    Dim qData As Date
    qData = Format(txtDataX, "mm/dd/yyyy")

    Set Rs = CurrentDb.OpenRecordset("SELECT * FROM SuaTabela WHERE dataX=#" & qData & "#")

    If Rs.RecordCount > 0 Then
    'Movimento no recordset até o ultimo registro para precisar o número de registros na tabela
    Rs.MoveLast
    'Alimento a variável Contador com o total de registros no conjunto de dados, que é o recordset
    Contador = Rs.RecordCount
    'Movo para o primeiro registro do recordset
    Rs.MoveFirst
    End If


    'Utilizo o SysCmd para executar uma barra de progresso para indicar a que pé encontrará o processamento.
    SysCmd acSysCmdInitMeter, "Realizando as alterações, aguarde...", Contador
    'Inicio o loop que irá do primeiro registro ao ultimo
    'Veja que já sabemos a quantidade a ser percorrida na variável Contador
    For ContaOProgresso = 1 To Contador
    'Atualizo as informações da barra de progresso
    'Mostrará a evolução de 1 a cada valor passado do Contador
    SysCmd acSysCmdUpdateMeter, ContaOProgresso
    'Abro a edição na linha que estou passando
    Rs.Edit
    'Insiro o dado da caixa de texto na coluna do campo2
    Rs("ValorVendido") = txtVendido
    'Atualizo o registro
    Rs.Update
    'E vou para o próximo
    Rs.MoveNext
    'Aqui acontece o loop, ou seja, retorno lá pra cima novamente
    'apartir do For ContaOProgresso eu faço mesmo procedimento que fiz na linha de registro anterior.
    Next ContaOProgresso
    'Quando o For ContaOProgresso = 1 chegar ao total do Contador, o loop terá chegado ao seu final.
    'Não resta mais nada a não ser fechar o recordset
    Rs.Close
    'Removo a barra de progresso
    SysCmd acSysCmdRemoveMeter
    'E informo uma mensagem dizendo o número de registros percorridos
    MsgBox "OK, Total de: " & Contador & " registros", vbInformation, "Concluído"
    Exit_TratareiErro:
    Exit Sub
    'Se algo impedir o funcionamento do código, emite uma mensagem informando ao usuário qual o erro
    TratareiErro:
    MsgBox "Ocorreu uma falha neste processamento." _
    & vbCrLf & "Trata-se do erro n°: " & Err.Number _
    & vbCrLf & "Descrição: " & Err.Description, vbCritical, "Erro inesperado"
    Exit Sub


    Fiz um exemplo, baixe, observe as datas na tabela, use uma delas e lance um valor e acompanhe o autopreenchimento:
    Download: https://dl.dropboxusercontent.com/u/8080696/ajudas/fma/ExemploLoopPorData.accdb
    avatar
    Henry Airlie
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 64
    Registrado : 16/08/2014

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Henry Airlie em 22/8/2015, 15:14

    Ola Dílson,
    Mais uma vez muito obrigado pela sua presteza, fiz a altera que me passou mas esta dando erro
    nº 13 - Tipos incompatíveis.
    Abraço
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Dilson em 24/8/2015, 13:20

    Tem que tratar o tipo de dado na tabela. Veja que o tipo da variável é data, então seu campo terá que ser do tipo data também ou, é o tipo moeda do campo valor_vendido.
    avatar
    Henry Airlie
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 64
    Registrado : 16/08/2014

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Henry Airlie em 25/8/2015, 00:47

    Olá Dilson,
    Agradeço sua boa vontade, mas não estou conseguindo. Continua dando erro 13 tipo incompatível.

    Não acho o erro.
    Mesmo assim vlw

    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Dilson em 25/8/2015, 12:55

    Comente o tratamento de erro e veja onde o cursor vai parar apontando o erro. Se quiser poder colocar aqui uma cópia do seu projeto (somente da parte envolvida no problema) para olharmos o que pode tá acontecendo.
    avatar
    Henry Airlie
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 64
    Registrado : 16/08/2014

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Henry Airlie em 26/8/2015, 14:44

    Olá Dilson,,
    Funcionou,,,maravilha!!!!!Vai ser muito útil. Na correria não tinha visto o modelo que você mandou anexo. Depois de ver ficou bem mais fácil encontrar onde estava o erro.
    Vlw mesmo
    att
    Henry Airlie

    Conteúdo patrocinado

    [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data Empty Re: [Resolvido]Repetir um valor em todos os Registros em um formulário contínuo e loop por data

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 24/5/2019, 00:39