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


    Erro '3072': Expressão muito complexa

    Gabriel Brunichaki
    Gabriel Brunichaki
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 138
    Registrado : 11/12/2015

    Erro '3072': Expressão muito complexa Empty Erro '3072': Expressão muito complexa

    Mensagem  Gabriel Brunichaki 4/3/2016, 16:22

    Boa tarde!

    Alguém consegue me auxiliar?

    Tenho uma tabela com 54 campos (col1 a col54) do tipo Sim/Não.

    Em um formulário, tenho 54 CheckBox que inicializam marcados ou não de acordo com o valor das colunas da tabela.

    Utilizei o exemplo do Avelino (http://www.usandoaccess.com.br/dicas/gerar-milhoes-registros-teste-access.asp?id=1 - Dica 2 b), resultando no seguinte procedimento:

    Sub ModifyWhenOpen(argSubForm, argControlType, argCodeTable As Integer)

       Dim colunas As String
       Dim s
       Dim i As Integer
       Dim ctl As Control

       i = 1

       For Each ctl In argSubForm
           If ctl.ControlType = argControlType Then
               colunas = colunas & "[col" & i & "] & '|' & "
               i = i + 1
           End If
       Next ctl

       colunas = Left( colunas, Len(colunas) - 8 )
       colunas = DLookup(colunas, "TBL_COLUMNS_CONFIG", "codTable = " & argCodeTable)

       s = Split(colunas, "|")

       i = 0

       For Each ctl In argSubForm
           If ctl.ControlType = acCheckBox Then
               If s(i) = -1 Then
                   ctl.Value = -1
               Else
                   ctl.Value = 0
               End If

               i = i + 1
           End If
       Next ctl

    End Sub


    E depois chamo o procedimento no evento Ao Carregar do formulário que possui as 54 CheckBoxes.

    Private Sub Form_Load()

       ModifyWhenOpen Me.Controls, acCheckBox, 1

    End Sub


    No entanto, gera o erro descrito no título do tópico... Já testei com tabelas que contêm menos colunas (11) e obtive o resultado esperado. Se o problema for devido ao número de colunas da tabela, o que é possível se fazer?

    Fico no aguardo!


    .................................................................................
    “Não podemos solucionar problemas usando a mesma forma de raciocínio que usamos quando os criamos.”
    – Albert Einstein

      Data/hora atual: 23/11/2024, 03:11