Autor Tema: Problema extraño entre 2 formularios y un MSFlexgrid  (Leído 2140 veces)

0 Usuarios y 1 Visitante están viendo este tema.

acid_burd

  • Bit
  • Mensajes: 5
  • Reputación: +0/-0
    • Ver Perfil
Problema extraño entre 2 formularios y un MSFlexgrid
« en: Marzo 02, 2012, 08:46:03 am »
Buenas, vengo con un problema rariiisomo  al cual no encuentro explicación y no he sido capaz de solucionar, a ver si alguien sabe porque pasa esto. Expongo el problema.

Tengo 2 formulario. Adjuntados como Formulario1 y Formulario2. En el formulario1 elijo un programa en el combobox superior. Cada programa tiene sus actividades por lo que pulse el botón gris Añadir para Añadir una nueva actividad que llama al Formulario2. Código del botón:

Código: [Seleccionar]
modoAsAc = "Añadir"
AsigActividad.Show 1
DoEvents

Codigo a la carga del Formulario2:
Código: [Seleccionar]
RellenarActividades
    FSolicitud.Value = Now
   
    If modoAsAc = "Editar" Then
        Dim contador As Integer
        For contador = 0 To C_Actividad.ListCount - 1
            If C_Actividad.ItemData(contador) = Val(Asig_Centros.M_Actividad.TextMatrix(Asig_Centros.M_Actividad.Row, 0)) Then
                Exit For
            End If
        Next contador
       
        C_Actividad.ListIndex = contador
        FSolicitud.Value = CDate(Asig_Centros.M_Actividad.TextMatrix(oMiGrid.Row, 2))
        C_Estado.Text = Asig_Centros.M_Actividad.TextMatrix(oMiGrid.Row, 3)
        C_Actividad.Locked = True

La función Rellenar actividades rellena el combobox C_Actividad con las actividades correspondientes con el programa seleccionado en el Formulario1.
FSolicitud es un datapiker y C_Estado en un combobox.

Bien, una vez que tengo mis datos de la actividad seleccionados pulso el botón Aceptar que lo que hace es pasar la información del Formulario2 al MSFlexGrid que hay en la parte inferior del Formulario1 (Al cual se se cargo una primera fila con las cabeceras al cargar el Formulario1).
Código del botón Aceptar:
Código: [Seleccionar]
If modoAsAc = "Añadir" Then
        If validaractividad = 0 Then
            Dim fila As Integer
           fila = Asig_Centros.M_Actividad.Rows
            Asig_Centros.M_Actividad.Rows = Asig_Centros.M_Actividad.Rows + 1
             
            Asig_Centros.M_Actividad.TextMatrix(fila, 0) = Me.C_Actividad.ItemData(C_Actividad.ListIndex)
            Asig_Centros.M_Actividad.TextMatrix(fila, 1) = Trim(C_Actividad.Text)
            Asig_Centros.M_Actividad.TextMatrix(fila, 2) = Format(Me.FSolicitud.Value, "dd/mm/yyyy")
            Asig_Centros.M_Actividad.TextMatrix(fila, 3) = Trim(Me.C_Estado.Text)
            Asig_Centros.M_Actividad.Refresh
           
        End If
    Else
        If modoAsAc = "Editar" Then
            Asig_Centros.M_Actividad.TextMatrix(Asig_Centros.M_Actividad.Row, 0) = Me.C_Actividad.ItemData(C_Actividad.ListIndex)
            Asig_Centros.M_Actividad.TextMatrix(Asig_Centros.M_Actividad.Row, 1) = Trim(C_Actividad.Text)
            Asig_Centros.M_Actividad.TextMatrix(Asig_Centros.M_Actividad.Row, 2) = Format(Me.FSolicitud.Value, "dd/mm/yyyy")
            Asig_Centros.M_Actividad.TextMatrix(Asig_Centros.M_Actividad.Row, 3) = Trim(Me.C_Estado.Text)
           
        End If
        Unload Me
    End If
Solo la primera condición, el else no vale ahora.
Bien, pues aquí está el problema y es que si ejecuto este código normalmente, no solo no me pasa nada al MSFlexGrid M_Actividad del Formulario1 sino que también me borra el programa que habia seleccionado en el combobox. Pero si pongo un punto de parada en la condición If y voy linea por linea pero sin hacer ningún cambio ni nada ni ningún tipo de inspección, los datos pasan al Formulario1 perfectamente.

La verdad es que no se porque pasa esto, para mi es un autentico misterio. ¿Alguien sabe a que puede deberse esto?

Mil gracias por la ayuda

Un saludo

FORMULARIO1


FORMULARIO2

Virgil Tracy

  • Kilobyte
  • **
  • Mensajes: 64
  • Reputación: +38/-1
    • Ver Perfil
Re:Problema extraño entre 2 formularios y un MSFlexgrid
« Respuesta #1 en: Marzo 02, 2012, 09:51:25 pm »
sin ver el codigo fuente completo de tus dos formularios, es dificil encontrar el error, pero en tu formulario 1 no tienes algo como esto

Código: (VB) [Seleccionar]
Private Sub Form_Activate()

'limpiar todos mis controles del formulario

End Sub

Por que al llamar a tu formulario 2 y volver, corriendo el programa sin interrupciones este evento se dispara  :P