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]for each dentro de outro for each

    avatar
    mcsanches
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 10/06/2012

    [Resolvido]for each dentro de outro for each Empty [Resolvido]for each dentro de outro for each

    Mensagem  mcsanches 3/10/2016, 15:24

    bom dia amigos

    estou tentando aprimorar um codigo do JPaulo

    que percorre os campos do formulário e bloqueia ou desbloqueia o campo

    o caso é que tenho subforms, então necessito utilizar um segundo for each para percorrer o interior , porem o access informa que o for já esta em uso, segue abaixo o código

    ublic Function LiberaControles(strFrm As Form) As String
    'By JPaulo ® Maximo Access
    Dim ctl As Control
    For Each ctl In strFrm.Controls

    If ctl.ControlType = acSubform Then


    For Each ctl In Frm.Controls


    If Not IsNull(ctl.Value) Or ctl.Value <> "" Then

    ctl.Locked = False 'se desejar desbloquear o campo

    Else

    ctl.Locked = True 'se desejar desbloquear o campo

    End If

    Next ctl

    End If

    else

    ctl.Locked = true 'se desejar desbloquear o campo


    End If
    Next ctl

    End Function


    alguem pode me ajudar?????
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]for each dentro de outro for each Empty Re: [Resolvido]for each dentro de outro for each

    Mensagem  Alexandre Neves 3/10/2016, 16:25

    Boa tarde,
    Defina 2 variáveis, uma para cada ciclo
    Dim ctl1 As Control,ctl2 As Control
    For Each ctl1 In strFrm.Controls
    If ctl1.ControlType = acSubform Then
    For Each ctl2 In Frm.Controls
    If Not IsNull(ctl2.Value) Or ctl2.Value <> "" Then
    ctl2.Locked = False 'se desejar desbloquear o campo
    Else
    ctl2.Locked = True 'se desejar desbloquear o campo
    End If
    Next ctl2
    End If
    else
    ctl1.Locked = true 'se desejar desbloquear o campo
    End If
    Next ctl1


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 10/06/2012

    [Resolvido]for each dentro de outro for each Empty Re: [Resolvido]for each dentro de outro for each

    Mensagem  mcsanches 4/10/2016, 18:44

    Obrigado Alexandre , o maximo que consegui chegar foi até aqui, porem a segunda parte do for each só roda quando chamo a função ao iniciar o formulário. O meu objetivo seria utilizar a função em botão de editar

    Dim ctl As Control
    Dim ctl1 As Control

    For Each ctl In strfrm.Controls

    Select Case ctl.ControlType
    Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox

    If ctl.Value <> ctl.OldValue Or (Not IsNull(ctl.Value) Or ctl.Value <> "") Then

    ctl.Locked = True

    Else
    Cancel = True
    End If

    Case acSubform


    For Each ctl1 In strfrm(ctl.Name).Form.Controls

    If ctl1.Value <> ctl1.OldValue Or (Not IsNull(ctl1.Value) Or ctl1.Value <> "") Then

    ctl1.Locked = True

    Else
    Cancel = True
    End If

    Next ctl1

    End Select

    Next ctl
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]for each dentro de outro for each Empty Re: [Resolvido]for each dentro de outro for each

    Mensagem  Alexandre Neves 4/10/2016, 21:39

    Veja se o código emperra no controlo onde é executado o código
    Se for, tem de pensar nalguma gambiarra, pois ele não aceitará a mudança no próprio controlo


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 10/06/2012

    [Resolvido]for each dentro de outro for each Empty Re: [Resolvido]for each dentro de outro for each

    Mensagem  mcsanches 10/10/2016, 13:42

    Alexandre obrigado, acabei fazendo a "gambiarra" chamo a função dentro de cada subform de modo que ao clicar no botão editar ele libera os controles e ao salvar ele bloqueia

    obrigado

    Marcelo

    Conteúdo patrocinado


    [Resolvido]for each dentro de outro for each Empty Re: [Resolvido]for each dentro de outro for each

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 02:21