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