Autor Tema: Problemas al cerrar Formulario  (Leído 4455 veces)

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

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Problemas al cerrar Formulario
« en: Agosto 19, 2010, 05:14:03 pm »
Hola
Al parecer esto no iría en el apartado de Base de Datos pero mi problema creo que tiene ese tema.

Tengo 2 formularios
frmL que contiene la lista de Clientes y lo presento en un MSHFlexGrid.
frmG con el que agrego o modifico los datos de clientes. Tiene un botón Cerrar con la instrucción Unload Me (parece irrelevante)

En frmL tengo un botón Nuevo con el código:
frmG.Show 1 (nada del otro mundo)
o haciendo doble click en un registro del grid levanto frmG pero con los datos del grid en los controles del frmG para editar.

Hago los siguientes acciones (por probar)
- Cargado frmL doy al boton Nuevo y luego al frmG doy al boton cerrar y todo bien.
- En frmL, tomo un registro cualquiera del grid haciendo doble clic, edito en frmG y grabo y el form se descarga y se actualiza el grid. Todo bien.
AL terminar de grabar y despues del commit puse
Unload me
Unload frmL
frmL.show y asi tengo actualizado el grid. Me parece la manera mas rapida para los 300 registros previstos que va a tener ese grid.

- Vuelvo a darle a Nuevo, pongo datos en frmG y grabo y descargo y actualizo el grid. Todo bien.

Aqui viene el problema
Supongamos que ya llevo 10 registros
Le doy a nuevo
Pongo los datos y grabo, luego:
Unload me (se va frmG)
Unload frmL
frmL.show (y levanta con el registro 11)

Supongamos que en ese instante veo que escribi mal un dato del ultimo registro que grabe. Asi que le doy doble click y cuando cargo frmL pues me arrepiento y no quiero modificar nada, asi que le doy al boton cerrar de frmL el que tiene el codigo: Unload Me y SE CUELGA. Se paraliza todo el VB6. Entonces me bajo el VB6 y vuelvo a probar.
Reviso la BD y el registro esta alli, obvio sino como aparecia en el grid.
Vuelvo a editar el registro 11 y todo normal
Vuelvo a crear un nuevo registro, el 12, vuelvo a crear otro el 13 y todo bien. Solo cuando se me ocurre editar el ultimo registro que acabo de grabar y quiero descargar el form es que se cuelga ¿Porque pasa esto?

Probe con Unload frmG y tambien se cuelga.

No tengo loops ni nada, solo un simple Unload. El codigo en si es este:

dB.BeginTrans
dB.Execute sqlMPAR_ACT(txtTit, txtComent, Val(lblMPAR_ID)), adCmdText
dB.CommitTrans
MsgBox("Registro modificado con éxito")
Unload Me   '<--- Aqui se cuelga

Este código va bien si edito cualquier registro, y solo se cuelga en el Unload Me cuando inserte uno previamente.
Probe tambien quitando el Begintrans y el Commit y lo mismo.

Ojala me puedan ayudar. Y sino corresponde a este apartado me disculpan y lo mueven. Gracias.
Me encuentras en YAcosta.com

wolf_kof

  • Visitante
Re:Problemas al cerrar Formulario
« Respuesta #1 en: Agosto 19, 2010, 06:42:37 pm »
Consejo Sano, en vez de cerrar el primer formulado por que no le das la opcion form.hide, para que lo oculte, y llamas para que cargue desde el otr formulario. eso de estar cerrando formularios desde otro formulario a veces lo que pasa es que el programa te verifica si la base de datos tiene algun proceso en el otro formulario y por la base de datos se cuelga, por eso yo ocupo del hide te pondre un ejemplo.

ESTE BOTON LO UTILIZO PARA LLAMAR UN FORMULARIO PARA BUSCAR PRODUCTOS
Código: (vb) [Seleccionar]
Private Sub Command6_Click()
On Error Resume Next
Me.Hide
buscarproductocompras.v2.Value = True
buscarproductocompras.t13.SetFocus
buscarproductocompras.Show
End Sub

Y ESTE PARA HACER LO QUE TENGO QUE HACER EN EL FORMULARIO Y PARA CARGAR DE REGRESO AL FORMULARIO COMPRAS

Código: (VB) [Seleccionar]
Private Sub Command2_Click()
On Error Resume Next
    If Text3.Text = "" Then
        mensaje.formulario = "Cant. Producto"
        mensaje.Show
        mensaje.l1.Caption = "Coloque una Cantidad de Producto"
        Me.Hide
    Else
        If estado = "Nuevo" Then
            temporal.AddNew
            temporal!id_compra = "0"
            temporal!codigo_producto = Text1.Text
            temporal!fecha = Date
            temporal!cant = Text3.Text
            temporal!producto = producto.Caption
            If t6 = "" Then
            temporal!costo = l1
            temporal!total = Val(Text3.Text) * Val(l1.Caption)
            Else
            temporal!costo = t6.Text
            temporal!total = Val(Text3.Text) * Val(t6.Text)
            End If
            If t7 = "" Then
            temporal!preciofle = l2
            Else
            temporal!preciofle = t7.Text
            End If
            If t8 = "" Then
            temporal!ganancia = l3
            Else
            temporal!ganancia = t8.Text
            End If
            If t9 = "" Then
            temporal!preciopu = l4
            Else
            temporal!preciopu = t9.Text
            End If
            If t10 = "" Then
            temporal!preciodes = l5
            Else
            temporal!preciodes = t10.Text
            End If
            If t11 = "" Then
            temporal!precioesp1 = l6
            Else
            temporal!precioesp1 = t11.Text
            End If
            If t12 = "" Then
            temporal!precioesp2 = l7
            Else
            temporal!precioesp2 = t12.Text
            End If
            temporal!observacion = Text4.Text
            temporal.Update
            temporal.Requery -1
            bproducto.Close
       
            Call compras.rellenarlist
            compras.Text7.Text = ""
            compras.Text7.Text = " "
        End If
   
        If estado = "Editar" Then
            temporal.Filter = "codigo_producto = '" & filtrar.Text & "'"
            temporal!id_compra = "0"
            temporal!codigo_producto = Text1.Text
            temporal!fecha = Date
            temporal!cant = Text3.Text
            temporal!producto = producto.Caption
            If t6 = "" Then
            temporal!costo = l1
            temporal!total = Val(Text3.Text) * Val(l1.Caption)
            Else
            temporal!costo = t6.Text
            temporal!total = Val(Text3.Text) * Val(t6.Text)
            End If
            If t7 = "" Then
            temporal!preciofle = l2
            Else
            temporal!preciofle = t7.Text
            End If
            If t8 = "" Then
            temporal!ganancia = l3
            Else
            temporal!ganancia = t8.Text
            End If
            If t9 = "" Then
            temporal!preciopu = l4
            Else
            temporal!preciopu = t9.Text
            End If
            If t10 = "" Then
            temporal!preciodes = l5
            Else
            temporal!preciodes = t10.Text
            End If
            If t11 = "" Then
            temporal!precioesp1 = l6
            Else
            temporal!precioesp1 = t11.Text
            End If
            If t12 = "" Then
            temporal!precioesp2 = l7
            Else
            temporal!precioesp2 = t12.Text
            End If
            temporal!observacion = Text4.Text
            temporal.Update
            temporal.Requery -1
            bproducto.Close
            'AQUI CARGO DE NUEVO EL LISTVIEW
            Call compras.rellenarlist
            compras.Text7.Text = ""
            compras.Text7.Text = " "
        End If
    End If
    Unload Me
    compras.Show
End Sub
EL CALL COMPRAS.RELLENARLIST ME CARGA LOS DATOS NUEVOS

ESPERO TE ALLA SERVIDO

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problemas al cerrar Formulario
« Respuesta #2 en: Agosto 19, 2010, 06:55:21 pm »
El problema no es ese doc. Es mas olvida que estoy cerrando otro formulario. El proceso va así:

Paso 1: frmL cargado
Paso 2: Boton Nuevo y levanta el frmG
Paso 3: en frmG pongo los datos, grabo y cierro
Aquí no tiene sentido que lo oculte porque lo mas probable es que no tenga que editar el ultimo que grabe, asi q para que lo tendría en memoria. Simplemente lo cierro.

Pero por esas cosas aleatorias del usuario que escribió Wol en vez de Wolf y se da cuenta en ese mismo instante se le ocurre hacer doble clic en el ultimo registro que grabo
Paso 4: Levanta el frmG y: grabe o no grabe, al darle al botón con Unload Me se cuelga.

Como vez, no estoy cerrando aquí un formulario desde otro y el problema es el mismo.
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problemas al cerrar Formulario
« Respuesta #3 en: Agosto 19, 2010, 06:59:08 pm »
Olvide algo mas.
Así cierre el formulario en la X del form igual se cuelga, entonces el problema está cuando descargo ese formulario.
No tengo ningún código en el evento Terminate o Unload del formulario.

Me encuentras en YAcosta.com

wolf_kof

  • Visitante
Re:Problemas al cerrar Formulario
« Respuesta #4 en: Agosto 19, 2010, 07:08:27 pm »
bueno talvez tengas alguna base de datos en un bucle como

un do until

o un for

y tienes que poner recordset.movenext

a mi por algo asi se me quedaba trabado el form

o por no cerrar las conexiones

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problemas al cerrar Formulario
« Respuesta #5 en: Agosto 19, 2010, 07:52:09 pm »
bueno talvez tengas alguna base de datos en un bucle como
un do until
o un for
y tienes que poner recordset.movenext
a mi por algo asi se me quedaba trabado el form
o por no cerrar las conexiones

No nada de nada, ningún for en ninguna parte, ningún Do until menos.
Y sobre movenext tampoco porque no estoy leyendo, como te mostré arriba mando la orden de grabación con Execute. Y en otro programas que tengo y que esta lleno de Executes no me pasa esto.

Seguire investigando
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problemas al cerrar Formulario
« Respuesta #6 en: Agosto 19, 2010, 08:40:11 pm »
Debe ser una tonteta y hare lo que hizo Fujimori: "Disolver"

Me voy a borrar esos dos formularios y volver a hacerlo, total no es mucho, quiza algo esta mal ordenado en el código o algo anda abierto por alli. Si en el camino lo detecto lo publico, pero por ahora doy por cerrado el hilo porque los volvere a hacer desde cero.

Saludos, gracias Wolf ;-)
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Problemas al cerrar Formulario
« Respuesta #7 en: Agosto 19, 2010, 09:07:10 pm »
Ya esta, bueno aun no, o sea si pero no jaja me explico.

Antes de hacer la de Fuji, desaparecer todo y volver a empezar y leyendo de aqui y de alla
puse en el evento Unload de cada uno:
Set frmG = Nothing    para frmG y
Set frmL  = Nothng    para frmL y, listo a la mela PROBLEMA RESUELTO

Allí es que me refiero a que si se resolvió porque ahora anda bien sin tropiezos ni nada, pero me falta investigar cual de las variables o conexiones no cerré bien. Listo ahora si cierro el hilo.

Me encuentras en YAcosta.com