Consulta en grillas

Manuel Enrique González Ramírez maengora en gmail.com
Vie Ene 4 20:26:27 CET 2008


Cordial saludo.

Tengo una grilla en un form denominada grilla_marcas, un text control
denominado txt_marca, un botón buscar y otro cerrar.

Lo que se hace en este form es lo siguiente:
Digito en el text control el nombre de una marca de vehículo o parte del
nombre y al hacer clic en el botón buscar la información se despliega en la
grilla.

Todo funciona muy bien cuando cargo el form y busco cualquier marca, mi
problema radica que esta consulta solo funciona muy bien la primera vez, per
si quiero repetir la busqueda (sin cerrar el form) me aparece un error, el
cual dice (en pocas palabras y lo poco que entiendo) que la grilla ya ha
sido creada.

¿Cómo debo hacer para que yo pueda hacer varias consultas en este form sin
necesidad de cerrarlo??
Ya se que el problema está en la forma o el lugar donde  defino la grilla,
pero cómo  lo soluciono???

Aqui  les muestro el código:

        marca = self.txt_marca.GetValue()

        #Consulta de MySQL que da la cantidad de registros
        sql0 = c.execute('SELECT COUNT(codigo)FROM marcas WHERE nombre LIKE
%s',('%'+marca+'%'))
        res0 = c.fetchone()
        db.commit()

        #Limpiamos la grilla
        self.grilla_marcas.ClearGrid()

        """Defino la grilla que toma el valor de la
        consulta res0 para el total de filas, seguido
        del número de las columnas (2)"""
        self.grilla_marcas.CreateGrid(res0[0],2)


        """
        Luego doy nombre a los encabezados de las columnas,
        y agrego AutoSizeColumns en caso de que la consulta
        resulte vacía
        """
        self.grilla_marcas.SetColLabelValue(0,'CODIGO')
        self.grilla_marcas.SetColLabelValue(1,'MARCA')
        self.grilla_marcas.AutoSizeColumns(True)

        #Hago la consulta para obtener los datos de la aproximacion a la
marca buscada
        sql1 = c.execute('SELECT * FROM marcas WHERE nombre LIKE
%s',('%'+marca+'%'))
        res1 = c.fetchall()
        db.commit()

        """Mostramos el resultado de la consulta sql1
        y damos un tamaño automático a las columnas"""
        x = 0
        for i in res1:
            self.grilla_marcas.SetCellValue(x,0,str(i[0]))
            self.grilla_marcas.SetCellValue(x,1,str(i[1]))
            self.grilla_marcas.AutoSizeColumns(True)
            x += 1


Gracias
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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