none
Procedimiento demasiado largo RRS feed

  • Pregunta

  • Buenos días,

    Al ejecutar el programa me lanza un mensaje: “Error de compilación” “Procedimiento demasiado largo”, pues bien, he dividido este procedimiento en otros subprocedimientos, no en módulo, ya que necesito que realice ciertas comprobaciones para recibir o enviar respuestas dependiendo de si las cumple o no. He hecho lo siguiente:

    Private sub btn_insertar()

    ‘Voy llamando a los procedimientos hijo1,  hijo2,…

    Código que me inserta datos

    End Sub

     

    Private sub hijo1()

    Código que si no cumple pasa a Exit Sub

    End sub

     

    Private sub hijo2()

    Código que si no cumple pasa a Exit Sub

    End sub


    Así sucesivamente,

    El problema es que dentro de los procedimientos hijo1, hijo2,…  tengo varios exit sub y salen si no cumplen unas condiciones dadas continuando en el procedimiento madre (btn_insertar) e insertando datos que no quiero que inserte. No se si me he explicado bien.

    ¿Puedo hacer que si no cumplen las condiciones en los procedimientos “hijos” pueda hacer también que salga del procedimiento madre?

    Gracias

     
    martes, 18 de febrero de 2014 8:44

Respuestas

  • Hola:

    Yo usaría funciones que devolvieran un valor Boolean dependiendo de si quieres continuar o no, es decir.

    Private Function Hijo1() As Boolean
       If CondicionQueNoQuieresContinuar Then Exit Function
       ...
       If OtraCondicionQueNoQuieresContinuar Then Exit Function
       ...
       Hijo1 = True ' Indicamos que SI queremos continuar
    End Function
    
    ' La function Hijo2 igual.
    
    
    

    Y ahora en tu btn_Insertar(), compruebas el valor de la función:

    Private Sub btn_Insertar()
       If Hijo1() Then
          If Hijo2() Then
             ' Codigo que inserta datos
          End If
       End If
    End Sub
    
    ' Otra variante sería.
    
    Private Sub btn_Insertar()
       If Not Hijo1() Then Exit Sub
       If Not Hijo2() Then Exit Sub
       ' Codigo que inserta datos
    End Sub
    

    Espero que te sirva

    Saludos

    • Propuesto como respuesta LG DES jueves, 20 de febrero de 2014 8:36
    • Marcado como respuesta José M. Palma miércoles, 5 de marzo de 2014 16:24
    martes, 18 de febrero de 2014 9:13

Todas las respuestas

  • Hola:

    Yo usaría funciones que devolvieran un valor Boolean dependiendo de si quieres continuar o no, es decir.

    Private Function Hijo1() As Boolean
       If CondicionQueNoQuieresContinuar Then Exit Function
       ...
       If OtraCondicionQueNoQuieresContinuar Then Exit Function
       ...
       Hijo1 = True ' Indicamos que SI queremos continuar
    End Function
    
    ' La function Hijo2 igual.
    
    
    

    Y ahora en tu btn_Insertar(), compruebas el valor de la función:

    Private Sub btn_Insertar()
       If Hijo1() Then
          If Hijo2() Then
             ' Codigo que inserta datos
          End If
       End If
    End Sub
    
    ' Otra variante sería.
    
    Private Sub btn_Insertar()
       If Not Hijo1() Then Exit Sub
       If Not Hijo2() Then Exit Sub
       ' Codigo que inserta datos
    End Sub
    

    Espero que te sirva

    Saludos

    • Propuesto como respuesta LG DES jueves, 20 de febrero de 2014 8:36
    • Marcado como respuesta José M. Palma miércoles, 5 de marzo de 2014 16:24
    martes, 18 de febrero de 2014 9:13
  • Buenos días, gracias por tu respuesta, voy a trabajar para ponerla en práctica.
    miércoles, 19 de febrero de 2014 9:59