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

    Rodar vba apenas no que está filtrado

    avatar
    gustavovon
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 67
    Registrado : 07/10/2012

    Rodar vba apenas no que está filtrado Empty Rodar vba apenas no que está filtrado

    Mensagem  gustavovon 16/6/2015, 16:30

    Galera, estou precisando de um ajuda para rodar um codigo apenas do q esta filtrado. Tentei fazer algumas modificacoes no codigo original mas nao estou conseguindo, segue abaixo o original feito pelo colega Alexandre Neves do forum:

    Sub ActualizaPrazos()
    'criada por Alexandre Neves www.esnips.com\web\alexandreneves
    'em 2012-10-27
    'para gustavovon
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset
    Set Rst = CurrentDb.OpenRecordset("Table1")
    Do While Not Rst.EOF
    Rst.Edit
    Select Case Rst("Status")
    Case "Aguard. PRAZO RECURSAL"
    If DateDiff("d", Rst("Ultima Alteração"), Date) > 30 Then Rst("Prazo") = "Vencido"
    Case "AGUARD. PRAZO ESPECIAL"
    If DateDiff("d", Rst("Ultima Alteração"), Date) > 15 Then Rst("Prazo") = "Vencido"
    Case "EM PROC. DE INSCRIÇÃO EM D.A."
    If DateDiff("d", Rst("Ultima Alteração"), Date) > 45 Then Rst("Prazo") = "Vencido"
    Case "AGUARD. PRAZO AJUR"
    If DateDiff("d", Rst("Ultima Alteração"), Date) > 120 Then Rst("Prazo") = "Vencido"
    Case Else
    If IsNull(Rst("Ultima Alteração")) Then
    Rst("Prazo") = "S/ PRAZO"
    ElseIf IsDate(Rst("Ultima Alteração")) Then
    If DateDiff("d", Rst("Ultima Alteração"), Date) > 360 Then
    Rst("Prazo") = "360 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 330 Then
    Rst("Prazo") = "330 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 300 Then
    Rst("Prazo") = "300 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 270 Then
    Rst("Prazo") = "270 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 240 Then
    Rst("Prazo") = "240 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 210 Then
    Rst("Prazo") = "210 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 180 Then
    Rst("Prazo") = "180 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 150 Then
    Rst("Prazo") = "150 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 120 Then
    Rst("Prazo") = "120 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 90 Then
    Rst("Prazo") = "90 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 60 Then
    Rst("Prazo") = "60 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 45 Then
    Rst("Prazo") = "45 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 30 Then
    Rst("Prazo") = "30 dias"
    ElseIf DateDiff("d", Rst("Ultima Alteração"), Date) > 15 Then
    Rst("Prazo") = "15 dias"
    End If
    End If
    End Select
    Rst.Update
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Sub

    Oque preciso é que esse codigo rode apenas no q foi filtrado em um subformulario, Nz(Me!sfrmPedidos.Form.Filter, "") mas nao estou conseguindo fazer essa adaptacao funcionar e gravar minha tabela (table1). Alguem poderia dar uma luz ?

    Abs
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Rodar vba apenas no que está filtrado Empty Re: Rodar vba apenas no que está filtrado

    Mensagem  Alexandre Neves 16/6/2015, 17:48

    Boa tarde,
    A origem dos dados está na tabela "Table1". Coloque o filtro para o que pretende
    Set Rst = CurrentDb.OpenRecordset("Table1")


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 67
    Registrado : 07/10/2012

    Rodar vba apenas no que está filtrado Empty Re: Rodar vba apenas no que está filtrado

    Mensagem  gustavovon 16/6/2015, 20:39

    Fala Alexandre !! Vou agraceder mais um vez por sua ajuda. Esse codigo me ajudou bastante !

    Entao, eu tinha feito essa modificação q vc falou:
    Set Rst = CurrentDb.OpenRecordset(Me!sfrmPedidos.Form.Filter, "")
    O filtro é feito nesse subform, preciso q apenas os dados q estao filtrados por ele sejam alterados na "table1"
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Rodar vba apenas no que está filtrado Empty Re: Rodar vba apenas no que está filtrado

    Mensagem  Alexandre Neves 17/6/2015, 09:41

    Bom dia,
    Tem de colocar, na origem do rercordset, a origem dos registos do subform


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 67
    Registrado : 07/10/2012

    Rodar vba apenas no que está filtrado Empty Re: Rodar vba apenas no que está filtrado

    Mensagem  gustavovon 17/6/2015, 13:08

    Alexandre, tentei varias opcoes mas nao funciona de jeito nenhum.

    Set rst = CurrentDb.OpenRecordset("Table1", Forms!Frmadministrador.Me!frmpedidos.Form.Filter, "")

    A origem dos dados do subform é o frmadministrador. Coloquei apontando direto pra ele mas tb nao funcionou. Se puder continuar me orientando, te agradeço.

    Abs
    avatar
    gustavovon
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 67
    Registrado : 07/10/2012

    Rodar vba apenas no que está filtrado Empty Re: Rodar vba apenas no que está filtrado

    Mensagem  gustavovon 17/6/2015, 17:31

    Estou tentando tb deixar a funcao do jeito q esta e tentar mandar o conteudo ja filtrado atraves do botao q esta dentro do form. mas tb nao funcionou ...

    Private Sub Comando270_Click()
    Call ActualizaPrazos ("sfrmpedidos", Nz(Me!sfrmPedidos.Form.Filter, ""))
    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Rodar vba apenas no que está filtrado Empty Re: Rodar vba apenas no que está filtrado

    Mensagem  Alexandre Neves 18/6/2015, 10:07

    Bom dia,
    A origem dos dados tem de ser uma tabela ou consulta. Veja na origem dos dados do formulá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
    gustavovon
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 67
    Registrado : 07/10/2012

    Rodar vba apenas no que está filtrado Empty Re: Rodar vba apenas no que está filtrado

    Mensagem  gustavovon 18/6/2015, 13:43

    Alexandre, ta dificil ... Laughing

    Tenho tentado tanto no botao do form ( para enviar filtrado) como direto pelo vba. Qual seria o correto ? Pelo botao do form, nao preciso fazer referencia a ele, apenas cito o subform. Estou achando que a funcao nao identificar o filtro usado no subform. A ultima q tentei foi essa:

    Set rst = CurrentDb.OpenRecordset("table1", Nz(Form!frmadministrador.Me!sfrmPedidos.Form.Filter, ""))

    Nela eu faço referencia a minha origem (table1) e cito o filtro do subform (adicionando que o subform esta no form "frmadministrador")

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Rodar vba apenas no que está filtrado Empty Re: Rodar vba apenas no que está filtrado

    Mensagem  Alexandre Neves 18/6/2015, 15:17

    O filtro não é isso. O filtro será "campo condição valor"


    .................................................................................
    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

    Conteúdo patrocinado


    Rodar vba apenas no que está filtrado Empty Re: Rodar vba apenas no que está filtrado

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 23:23