Autor Tema: se limpia el datagrid de un form al abrir otro form.  (Leído 6209 veces)

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

rokchlafen

  • Bytes
  • *
  • Mensajes: 28
  • Reputación: +0/-0
    • Ver Perfil
se limpia el datagrid de un form al abrir otro form.
« en: Enero 14, 2015, 01:19:27 pm »
Hola a todos.
Después de darle mil vueltas recurro a ustedes a ver si me pueden ayudar.
Tengo dos formularios. CrearForm y ModificarForm. Ambos llevan un datagrid: grillaregistros.
Los forms por separado funcionan a la perfección, el problema resulta cuando:

A) Si abro CrearForm, luego ModificarForm, al volver a CrearForm me encuentro que eldatagrid esta completamente vacio(nada, ni campos ni el formatoque aplique , nada).

B) lo mismo pero al reves.....  Si abro ModificarForm, luego CrearForm , al volver a  ModificarForm me encuentro que eldatagrid esta completamente vacio.


Código: [Seleccionar]
''''''''CODIGO FORM CREAR''''''
Private Sub ccmdReestablecer_Click()
LIMPIAR
End Sub

Private Sub cmdCerrar_Click()
Unload Me
End Sub

Private Sub cmdCrear_Click()
    If txtNombre.Text = "" Then MsgBox "El campo GRUPO no puede estar vacio", vbInformation, "Aviso": txtNombre.SetFocus: Exit Sub
    If txtInt1.Text = "" Then MsgBox "El campo Integrante 1 no puede estar vacio", vbInformation, "Aviso": txtInt1.SetFocus: Exit Sub
    If txtInt2.Text = "" Then MsgBox "El campo Integrante 2 no puede estar vacio", vbInformation, "Aviso": txtInt2.SetFocus: Exit Sub
    If txtInt3.Text = "" Then MsgBox "El campo Integrante 3 no puede estar vacio.En caso de que solo haya dos miembros en el grupo ponga un punto.", vbInformation, "Aviso": txtInt3.SetFocus: Exit Sub
        With RsRegistros
            .Requery
            .AddNew
                !grupo = txtNombre.Text
                !fecha = DTPicker1.Value
                !integrante1 = txtInt1.Text
                !integrante2 = txtInt2.Text
                !integrante3 = txtInt3.Text
            .Update
            .Requery
            LIMPIAR
        End With
        FormatoGrillaRegistros
        MsgBox "      GRUPO CREADO", vbInformation, ""
        Unload Me
End Sub

Private Sub Form_Load()
    Skin1.LoadSkin App.Path & "\skin.skn"    ''''' CARGAMOS EL SKIN
    Skin1.ApplySkin RegistrosForm.hWnd    '''''APLICAMOS EL SKIN A NUESTRO FORMULARIO
   
    REGISTROS
    DATOS
    Set GrillaRegistros.DataSource = RsRegistros
    FormatoGrillaRegistros
    BLOQUEAR
End Sub

Sub LIMPIAR()
    txtNombre.Text = ""
    DTPicker1.Value = Date
    txtInt1.Text = ""
    txtInt2.Text = ""
    txtInt3.Text = ""
    txtNombre.SetFocus
End Sub

Sub FormatoGrillaRegistros()
    With RsRegistros
        GrillaRegistros.Columns(0).Width = 0
        GrillaRegistros.Columns(1).Width = 2000
        GrillaRegistros.Columns(2).Width = 1000
        GrillaRegistros.Columns(3).Width = 3500
        GrillaRegistros.Columns(4).Width = 3500
        GrillaRegistros.Columns(5).Width = 3500
    End With
End Sub

Sub BLOQUEAR()
GrillaRegistros.AllowUpdate = False
End Sub

''''''''CODIGO FORM MODIFICAR''''''
Private Sub ccmdReestablecer_Click()
LIMPIAR
End Sub

Private Sub cmdModificar_Click()
If lblIdregistros.Caption = "" Then MsgBox "Selecciona un Grupo a modificar", vbInformation, "Aviso": Exit Sub
If txtNombre.Text = "" Then MsgBox "El campo nombre no puede estar vacio", vbInformation, "Aviso": txtNombre.SetFocus: Exit Sub
If txtInt1.Text = "" Then MsgBox "El campo Integrante 1 no puede estar vacio", vbInformation, "Aviso": txtInt1.SetFocus: Exit Sub
If txtInt2.Text = "" Then MsgBox "El campo Integrante 2 no puede estar vacio", vbInformation, "Aviso": txtInt2.SetFocus: Exit Sub
If txtInt3.Text = "" Then MsgBox "El campo Integrante 3 no puede estar vacio.En caso de que solo haya dos miembros en el grupo ponga un punto.", vbInformation, "Aviso": txtInt3.SetFocus: Exit Sub
   
    With RsRegistros
        .Requery
        .Find "IdRegistros='" & Val(lblIdregistros.Caption) & "'"
            !grupo = txtNombre.Text
            !fecha = DTPicker1.Value
            !integrante1 = txtInt1.Text
            !integrante2 = txtInt2.Text
            !integrante3 = txtInt3.Text
        .UpdateBatch
        .Requery
        LIMPIAR
        BLOQUEAR
    End With
    FormatoGrillaRegistros
    MsgBox "        GRUPO MODIFICADO", vbInformation, ""
    Unload Me
End Sub

Private Sub Form_Load()

Skin1.LoadSkin App.Path & "\skin.skn"    ''''' CARGAMOS EL SKIN
Skin1.ApplySkin ModificarRegistrosForm.hWnd    '''''APLICAMOS EL SKIN A NUESTRO FORMULARIO

REGISTROS
DATOS
Set GrillaRegistros.DataSource = RsRegistros
FormatoGrillaRegistros
BLOQUEAR
GrillaRegistros.AllowUpdate = False
End Sub

Sub FormatoGrillaRegistros()
    With RsRegistros
        GrillaRegistros.Columns(0).Width = 0
        GrillaRegistros.Columns(1).Width = 2000
        GrillaRegistros.Columns(2).Width = 1000
        GrillaRegistros.Columns(3).Width = 3500
        GrillaRegistros.Columns(4).Width = 3500
        GrillaRegistros.Columns(5).Width = 3500
    End With
End Sub

Private Sub GrillaRegistros_Click()
    With RsRegistros
        If .BOF Or .EOF Then Exit Sub
        .Find "IdRegistros='" & Val(GrillaRegistros.Columns(0).Text) & "'"
       
        lblIdregistros.Caption = !IdRegistros
        txtNombre.Text = !grupo
        DTPicker1.Value = !fecha
        txtInt1.Text = !integrante1
        txtInt2.Text = !integrante2
        txtInt3.Text = !integrante3
       
        DESBLOQUEAR
        'lblCodigo.Caption = !IdRegistros
    End With
End Sub
Sub LIMPIAR()

txtNombre.Text = ""
DTPicker1.Value = Date
txtInt1.Text = ""
txtInt2.Text = ""
txtInt3.Text = ""
txtNombre.SetFocus

End Sub

Sub BLOQUEAR()
    txtNombre.Locked = True
    txtInt1.Locked = True
    txtInt2.Locked = True
    txtInt3.Locked = True
    DTPicker1.Enabled = False
End Sub

Sub DESBLOQUEAR()
        txtNombre.Locked = False
        txtInt1.Locked = False
        txtInt2.Locked = False
        txtInt3.Locked = False
        DTPicker1.Enabled = True
End Sub

El caso es que en el form modificar al hacer clic me selecciona el registro a modificar, pero si se me vacia me da el error de que "conjunto de filas no esta disponible".
Mencionar que accedo a estos formularios desde los menús de un formulario MDI, y que si cierro los forms y vuelvo abrir funciona perfectamente, no se si se trata de alguna propiedad del grid pero no se exactamente donde puede estar el problema. Muchas gracias de antemano. Un saludo.
« última modificación: Enero 14, 2015, 01:56:49 pm por rokchlafen »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:se limpia el datagrid de un form al abrir otro form.
« Respuesta #1 en: Enero 14, 2015, 02:21:44 pm »
Hola
No conozco ese control (mejor dicho, no trabajo con el), pero me parece que solo puedes poblar un control de ese tipo a la vez, quiza requiera permanecer conectado , asumo que el RsRegistros lo has declarado en un modulo o en el formulario padre, bueno también que yo declarado el rs en cada modulo que lo necesite y no lo mantengo en memoria pero ya eso es tema de cada proyecto. En todo caso ¿y no te serviria declarar un RsRegistros2? en todo caso descarta eso, si esa solucion no te parece al menos ya sabes por donde va la cosa.

Saludos
Me encuentras en YAcosta.com

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:se limpia el datagrid de un form al abrir otro form.
« Respuesta #2 en: Enero 15, 2015, 01:12:21 am »
Estimado rockchlafen




Tomando como referencia el caso B en el formulario CrearForm realiza el siguiente cambio en el evento Load del formulario y nos comentas si la grilla se ha borrado o no.




Private Sub Form_Load()
    Skin1.LoadSkin App.Path & "\skin.skn"    ''''' CARGAMOS EL SKIN
    Skin1.ApplySkin RegistrosForm.hWnd    '''''APLICAMOS EL SKIN A NUESTRO FORMULARIO
   
    REGISTROS
    DATOS
    'Set GrillaRegistros.DataSource = RsRegistros
    'FormatoGrillaRegistros
    'BLOQUEAR
End Sub




Saludos, desde algún lugar de Lima-Perú
Saludos, desde algún lugar de Lima-Perú

rokchlafen

  • Bytes
  • *
  • Mensajes: 28
  • Reputación: +0/-0
    • Ver Perfil
Re:se limpia el datagrid de un form al abrir otro form.
« Respuesta #3 en: Enero 15, 2015, 11:19:52 am »
De veras muchas gracias por la contestación. Estoy realmente ofuscado con este tema. He realizado el cambio en crearform:
 
     'Set GrillaRegistros.DataSource = RsRegistros
    'FormatoGrillaRegistros
    'BLOQUEAR

y lamentablemente el problemas persiste. Abro modificarform(aparece todo), luego abro crearform(ahora la grilla aparece vacia por no llamar al set), y al volver a modificarform se borra todo. Recalcar que los abro desde un MDI,el problema solo sale si abro uno y abro otro sin cerrar el priemero(a este es al  que se le borran el grid). Si se cierra y vuelve abrir todo esta perfecto (tanto con la "x" del form como con cerrar del cmdbutton)

En cuanto a lo de crear diferentes recordset, no lo he probado....me preguntaba si podría hacerlo igual que el que viene abajo en el código que os muestro pero añadiendo un distintivo(un numero para cada vez que quiera usarlo en una grilla? seria hacer el recordset a la misma tabla).

Código: [Seleccionar]

''''DECLARACION EN UN MODULO'''''
Global Base As New ADODB.Connection
Global RsRegistros As New ADODB.Recordset

'''''''CONEXION EN OTRO MODULO''''''

Sub main()
    With Base
        .CursorLocation = adUseClient
        .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Base.mdb;Persist Security Info=False"
        MDIForm1.Show
    End With
End Sub

Sub REGISTROS()
    With RsRegistros
        If .State = 1 Then .Close
        .Open "select * from TablaRegistros", Base, adOpenStatic, adLockOptimistic
    End With
End Sub

De nuevo muchas gracias por vuestro esfuerzo, espero que haya una solución por que me pasa tambien en otros formularios en el que utilizo el mismo proceso  :'(. Un saludo.
« última modificación: Enero 15, 2015, 11:52:18 am por rokchlafen »

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:se limpia el datagrid de un form al abrir otro form.
« Respuesta #4 en: Enero 15, 2015, 12:00:17 pm »


Estimado rokchlafen


Para no estar en idas y venidas, lo mejor es que compartas el proyecto o nos prepares un proyecto de ejemplo y lo compartas, claro está debes de adjuntar el control grilla




Saludos desde algún lugar de Lima-Perú
Saludos, desde algún lugar de Lima-Perú

rokchlafen

  • Bytes
  • *
  • Mensajes: 28
  • Reputación: +0/-0
    • Ver Perfil
Re:se limpia el datagrid de un form al abrir otro form.
« Respuesta #5 en: Enero 15, 2015, 12:38:39 pm »
Me parece bien, hay alguna forma de compartirlo por el foro o tengo que subirlo yo?? Es que nunca he subido nada .... Gracias

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:se limpia el datagrid de un form al abrir otro form.
« Respuesta #6 en: Enero 15, 2015, 12:49:17 pm »
Subelo a mega, dropbox, 4shared, etc y nos pones el enlace.

Saludos
Me encuentras en YAcosta.com

rokchlafen

  • Bytes
  • *
  • Mensajes: 28
  • Reputación: +0/-0
    • Ver Perfil
Re:se limpia el datagrid de un form al abrir otro form.
« Respuesta #7 en: Enero 15, 2015, 02:12:51 pm »
Bueno he conseguido una cuenta ,ha costado pero muy util ,aquí esta el enlace.


Comentar también que si esta crearform o modificarform abiertos y se va a eliminar y buscar me descuadra el datagrid.

No se si hay alguna forma de que aparezcan los formularios en cascada o cualquier otra forma para poder ver mejor cuales son los que están abiertos.

Por ultimo en los form1 e introducrform , tengo un problema de validación con el primer txbox(txtX), que si pierde el foco al dar el keypress del txtY me lo guarda ya este letras vacio....
Un saludo y si ven cualquier cosa que esta mal soy todo oídos....muchas gracias por su pronta respuesta y preocupación. Un saludo. De nuevo mil gracias¡¡¡¡¡
« última modificación: Enero 19, 2015, 10:30:04 pm por rokchlafen »

rokchlafen

  • Bytes
  • *
  • Mensajes: 28
  • Reputación: +0/-0
    • Ver Perfil
Re:se limpia el datagrid de un form al abrir otro form.
« Respuesta #8 en: Enero 19, 2015, 09:32:40 pm »
Alguna solución??? o al menos saber si la podria tener??
Un saludo.

Ever Cerna

  • Megabyte
  • ***
  • Mensajes: 113
  • Reputación: +1/-1
  • anarkia99-Soft.
    • Ver Perfil
Re:se limpia el datagrid de un form al abrir otro form.
« Respuesta #9 en: Enero 20, 2015, 11:50:11 am »
Y donde  esta Link???  :o