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


3 participantes

    [Resolvido]Erro Procedure too large

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Erro Procedure too large Empty [Resolvido]Erro Procedure too large

    Mensagem  Alexandre Neves 17/7/2010, 23:09

    Boa noite,

    Estive todo o dia a tentar descobrir a causa do erro 'Procedure too large'
    O erro surge quando coloco a chamada de um procedimento. Substituí o procedimento sub por uma função e continua a dar o mesmo erro.
    Procurei na internet e não consigo enxergar pois sempre referem existir linhas a mais. Desactivo a linha que preciso e acrescento várias linhas e não dá erro!
    Se alguém já tiver passado por este problema agradeço a ajuda.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Erro Procedure too large Empty Re: [Resolvido]Erro Procedure too large

    Mensagem  criquio 17/7/2010, 23:40

    Teria a possibilidade de colocar o código para a gente namorar aqui? rsrsrs


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Erro Procedure too large Empty Re: [Resolvido]Erro Procedure too large

    Mensagem  vieirasoft 17/7/2010, 23:48

    Boa noite alexandre

    Já vi esse erro no Visual Basic não no access. Está a trabalhar em vb6? É que esse erro pode aparecer em códigos demasiado extensos com erros e que o compilador não consegue interpretar. Se você puder tornar esse código num procedimento global é capaz de não dar erro, pois foi o que aconteceu comigo no meu caso. Houve quem dissesse que se tornar isso em subs procedimentos que resulta???Comigo não resultou e na altura recorri a um forum em vb6 e o procedimento global funcionou. Experimentar não custa, certo!
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Erro Procedure too large Empty Re: [Resolvido]Erro Procedure too large

    Mensagem  vieirasoft 18/7/2010, 00:03

    Alexandre

    Embora já lá vão 4 anos eu ainda guardo tudo. Esta foi a resposta do fórum para mim na altura:

    Sergio, isso acontece mesmo esse erro, porque no visual basic uma funcao não pode passar de um numero certo de linhas.
    e acho que o mesmo server pra cada formulario ou module, depois de um determinado limite ele não consegue compilar mais.
    você vai ter que separar as rotinas sub procedimentos, e, se for preciso, vai ter que separar em varios modules para que o compilador interpretar. Se você puder faça um module com uma função global que será melhor interpretada pelo complilador. Se não puder utilize as subs. Sabe que além dos 64K, o compilador crash.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Erro Procedure too large Empty Re: [Resolvido]Erro Procedure too large

    Mensagem  Alexandre Neves 18/7/2010, 19:12

    Boa tarde,

    Obrigado pelo interesse.
    De facto, pelo que procurei, percebi que o código tinha muitas linhas (!) mas ocupava apenas 2 linhas. Reduzi para uma linha e continuei a ter o erro.
    O código (1 linha) é este:
    Call FichaIdentificacao(CriarEImprimir, AlteracaoNome, CxcMediador, ConvNulo(IPTxtCont), ConvNulo(IPTxtNome), ConvNulo(IPTxtNomeEstab), ConvNulo(IPTxtCAE), ConvNulo(IPTxtNomeG1), ConvNulo(IPTxtMoradaG1), ConvNulo(IPTxtCPostalG1), ConvNulo(IPTxtTlfG1), ConvNulo(IPTxtTlmG1), ConvNulo(IPTxtCEG1), ConvNulo(IPTxtNomeG2), ConvNulo(IPTxtMoradaG2), ConvNulo(IPTxtCPostalG2), ConvNulo(IPTxtTlfG2), ConvNulo(IPTxtTlmG2), ConvNulo(IPTxtCEG2), ConvNulo(IPTxtMorada), ConvNulo(IPCxcLocalidade), ConvNulo(IPTxtCPostal), ConvNulo(IPTxtTlfEstab), ConvNulo(IPTxtFax), ConvNulo(IPTxtECorreio), ConvNulo(IPTxtABManha), ConvNulo(IPTxtFManha), ConvNulo(IPTxtABTarde), ConvNulo(IPTxtFTarde), ConvNulo(FmtFechos(IPCxcDiaFecho1, IPCxcDiaFecho2)))

    A função ConvNulo converte nulo em cadeia vazia ("")

    Obrigado mais uma vez
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Erro Procedure too large Empty Re: [Resolvido]Erro Procedure too large

    Mensagem  vieirasoft 19/7/2010, 15:50

    Amigo Alexandre

    Já dei uma vista de olhos no código e confesso que a diferença para uma parede é igual. Bom, quando lhe enviei a resposta do forum /VB), na altura eu estava a fazer uma aplicação para o club fluvial do porto. A área cobradores era muito complicada e tanta asneira fiz que tomei conhecimento desse erro pela primeira vez. face à resposta que obtive, criei um procedimento global e depois através de um sub o código funcionou. Na minha modesta opinião (pois o colega tem mais conhecimentos que eu), não custa nada tentar "enganar" o compilador desta forma. Quem sabe se é aqui que está a chave? Por mais voltas que dê ao seu código torna-se difícil exprimir uma opinião, mas parece-me que não vai conseguir dividir isso em subs dessa forma que está. Infelizmente um bom amigo meu e top programador em VB6 e que nos poderia ajudar, está na Lituania neste momento....e penso que ele poderia ser de mais valia. Mas quem não tem cão, caça com gato mesmo.

    Abraço
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Erro Procedure too large Empty Re: [Resolvido]Erro Procedure too large

    Mensagem  Alexandre Neves 21/7/2010, 20:17

    Boa tarde,

    Já encontrei e ultrapassei o erro.
    De facto, é suposto que tenha sido por ter muito código no procedimento.
    Não estava a detectar porque quando substituia a linha de código por outra não me dava erro. Só após várias tentativas me apercebi que a nova linha de código era mais leve que a linha pretendida.
    Aproveitei este percalço para melhorar e, daqui em diante, o código ficar mais intuitivo.

    Explicando para quem precisar:
    1 - Tenho um controlo separador com várias abas com botões comuns e um botão para executar código. Este botão verifica qual a aba seleccionada e qual(ais) os botões seleccionados e vai mandando executar conforme os botões seleccionados.
    Exemplo resumido:
    'Botao1 indica que é para criar ficheiro, BotaoImprimir1 indica que é para imprimir ficheiro
    If Botao1 and BotaoImprimir1 Then
    call FichaIdentificaçao(CriarEImprimir, ...
    ElseIf Botao1 Then
    call FichaIdentificacao(Criar, ....
    ElseIF BotaoImprimir1 Then
    call FichaIdentificacao(Imprimir, ...
    End If

    2 - Para diminuir o código encontrei a seguinte solução:
    2.1. No procedimento chamado criei, além de outros argumentos necessários, um argumento para criar e outro argumento para imprimir
    Sub FichaIdentificao(bolCriar as Boolean, bolImprimir as Boolean, ...
    2.2. Ao chamar o procedimento são preenchidos ambos os argumentos, mesmo que sejam ambos negativos
    Call FichaIdentificacao(Botao1,BotaoImprimir1, ...
    2.3. No procedimento, antes de executar qualquer código é verificado se ambos os argumentos são negativos e, em tal caso não executa qualquer código e sai do procedimento
    Sub FichaIdentificao(bolCriar as Boolean, bolImprimir as Boolean, ...
    If Not(Botao1 or BotaoImprimir1) Then exit sub

    Um obrigado especial ao amigo vieirasoft
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Erro Procedure too large Empty Re: [Resolvido]Erro Procedure too large

    Mensagem  vieirasoft 21/7/2010, 20:23

    Fico imensamemte feliz por ter ultrapassado o problema e quem dera ter podido ajudar mais.

    Felicidades no seu trabalho

    Conteúdo patrocinado


    [Resolvido]Erro Procedure too large Empty Re: [Resolvido]Erro Procedure too large

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 00:33