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

    Compartilhe

    mcsanches
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

    [Resolvido]for each dentro de outro for each

    Mensagem  mcsanches em Seg 03 Out 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?????
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves em Seg 03 Out 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

    mcsanches
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  mcsanches em Ter 04 Out 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
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves em Ter 04 Out 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

    mcsanches
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  mcsanches em Seg 10 Out 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

      Data/hora atual: Qua 23 Ago 2017, 03:29