Refrescar wxGrid

Mario Lacunza mlacunza en gmail.com
Lun Oct 31 18:19:00 CET 2005


Josep: en q parte pongo el ForceRefresh?? lo tengo comentado en una
linea del programa xq no hacia nada... Estoy recien aprendiendo wxPython
x el tema q tengo q hacer un trabajo con urgencia.

Les agradesco cualquier ayuda!

Ahi va el codigo completo, por si acaso estoy usando Boa Constructor
v.0.4.4:

#-----------------------------------------------------------------------------
# Name:        frmIngDoc.py
# Purpose:     
##-------------------------------------------------------------------------------
# Author:      <Mario Lacunza Vasquez>
#
# Created:     2005/09/29
# RCS-ID:      $Id: frmIngDoc.py $
# Copyright:   (c) 2005
# License:     <GPL>
#-----------------------------------------------------------------------------
#Boa:Frame:Frame1

import wx
import wx.grid
import Conexion #Modulo de Conexion a la DB

def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1BTNAGREGAR, wxID_FRAME1GRDDAT, 
 wxID_FRAME1STATICTEXT1, wxID_FRAME1STATICTEXT2, wxID_FRAME1TXTDOC, 
 wxID_FRAME1TXTOBS, 
] = [wx.NewId() for _init_ctrls in range(7)]

class Frame1(wx.Frame):   
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name=u'Frame1',
parent=prnt,
              pos=wx.Point(428, 248), size=wx.Size(411, 371),
              style=wx.DEFAULT_FRAME_STYLE, title=u'Documentos')
        self.SetClientSize(wx.Size(411, 371))
        self.Center(wx.BOTH)
        self.SetToolTipString(u'')

        self.txtDoc = wx.TextCtrl(id=wxID_FRAME1TXTDOC, name=u'txtDoc',
              parent=self, pos=wx.Point(20, 20), size=wx.Size(312, 21),
style=0,
              value=u'')
        self.txtDoc.SetToolTipString(u'Nuevo Documento')

        self.btnAgregar = wx.Button(id=wxID_FRAME1BTNAGREGAR,
label=u'Agregar',
              name=u'btnAgregar', parent=self, pos=wx.Point(340, 20),
              size=wx.Size(56, 24), style=0)
        self.btnAgregar.SetToolTipString(u'Agregar')
        self.btnAgregar.Bind(wx.EVT_BUTTON, self.OnBtnAgregarButton,
              id=wxID_FRAME1BTNAGREGAR)

        self.txtObs = wx.TextCtrl(id=wxID_FRAME1TXTOBS, name=u'txtObs',
              parent=self, pos=wx.Point(24, 312), size=wx.Size(375, 40),
              style=0, value=u'')
        self.txtObs.SetToolTipString(u'Ingresar Observaciones')

        self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
              label=u'Observaciones', name='staticText1', parent=self,
              pos=wx.Point(24, 288), size=wx.Size(71, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_FRAME1STATICTEXT2,
              label=u'Descripci\xf3n', name='staticText2', parent=self,
              pos=wx.Point(24, 8), size=wx.Size(64, 13), style=0)

        self.grdDat = wx.grid.Grid(id=wxID_FRAME1GRDDAT, name=u'grdDat',
              parent=self, pos=wx.Point(24, 56), size=wx.Size(368, 224),
              style=0)

    def __init__(self, parent, CoServ ='0000'):
        """Inicializa el Formulario.
        
        Carga Datos del Codigo de Servicio por default sino se le pasa 
        el Codigo 
        Luego carga los controles."""
                
        self._init_ctrls(parent)
        
        #Carga Grid
        self.CodServ=CoServ
        self.CargaGrid()
    
    def CargaGrid(self):
        """Carga los datos de la consulta en el grid."""      
        
        #Obtiene datos para cargar el Grid
        self.reg=self.Datos(self.CodServ)
        #Numero de registros
        filas=len(self.reg)
        
        #borra cualquier dato presente
        self.grdDat.ClearGrid()
        
        #Si tiene registros
        if filas>0:
            self.grdDat.CreateGrid(filas,3)
            self.grdDat.SetColLabelValue(0,"I")
            self.grdDat.SetColLabelValue(1,"Cod.")
            self.grdDat.SetColLabelValue(2,"Por Asignar")
            self.grdDat.SetColFormatBool(0)
            self.grdDat.SetColSize(0,20)
            self.grdDat.SetColSize(1,30)
            self.grdDat.SetColSize(2,200)
            
            x=0
            for r in self.reg:
                self.grdDat.SetCellValue(x,1,str(r[1]))
                self.grdDat.SetCellValue(x,2,str(r[6]))
                x+=1
                self.secu=str(r[1])
                
        #Sino hay registros        
        elif filas==0:
            self.grdDat.CreateGrid(1,3)
            self.grdDat.SetColLabelValue(0,"I")
            self.grdDat.SetColLabelValue(1,"Cod.")
            self.grdDat.SetColLabelValue(2,"Por Asignar")
            self.grdDat.SetColFormatBool(0)
            self.grdDat.AutoSizeColumns(True)
            self.secu = ' '
        self.Refresh()
        #self.grdDat.ForceRefresh()
    

    def Datos(self,Codigo):
        """Ejecuta la consulta."""
        
        #Obtengo el conjunto de datos
        self.cnn=Conexion.Conectar()
        self.rsIng=self.cnn.EjecutarSQL("Select * From H_REQU_SERV \
                                WHERE CO_SERV='%s' ORDER BY NS_SECU" %
self.CodServ)
        #Devuelve el recordset en forma de Lista
        return self.rsIng
       
    
    def Grabar(self):
        """Graba la informacion de la descripcion."""
        
        mdata=self.txtDoc.GetValue()
        
        #Aumenta el valor del secuencial
        var=int(self.secu) + 1
        ins="Insert into H_REQU_SERV\
        (CO_SERV,NS_SECU,DE_REQU,IN_ESTA,ID_USUA_MODI,NO_DOCU)\
        Values('%s',%d,'1','1','00000','%s')" % (self.CodServ,var,mdata)
        
        try:
            self.cnn.EjecutarSQL(ins, TipoSQL = "Insert")
        
            dlg=wx.MessageDialog(self,'Se guardo con exito el
dato','Enlace',wx.OK | wx.ICON_INFORMATION)
            dlg.ShowModal()
            dlg.Destroy()
            #Repintar Grid
            #borra cualquier dato presente
            self.CargaGrid()
           
            # TODO: Corregir error al recargar formulario!!!!!
            
        except ValueError:
            dlg.wx.MessageDialog(self,'No se guardaron los
datos','Enlace',wx.OK | wx.ICON_INFORMATION)
            dlg.ShowModal()
            dlg.Destroy()
        

#-------------------------------------------------------------------------------
    
    def OnBtnAgregarButton(self, event):
        """Agregar nuevo Documento relacionado al Servicio."""
            
        self.Grabar()
        



Saludos / Best regards 

Mario Lacunza Vásquez 
Desarrollador de Software - Webmaster 

Teléfono       : 51-1-476-7423
Celular        : 51-1-93-100-386 (Claro) 
Website        : http://mlacunzav.cogia.net 
Email          : mlacunza en gmail.com 
Blog           : http://mlacunza.blogspot.com 
Messenger MSN  : mario_lacunza en hotmail.com 
Yahoo Messenger: mario_lacunza en yahoo.es 
Lima - Peru

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es