<br><br><div class="gmail_quote">El 24 de octubre de 2012 14:05, Paola Bruccoleri <span dir="ltr"><<a href="mailto:pbruccoleri@adinet.com.uy" target="_blank">pbruccoleri@adinet.com.uy</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hola todos..<br>
necesito me orienten en un problema que tengo.<br>
Tengo un form donde hay una grilla que muestra TODOS los registros de un TTable (firebird 2.1.4, componentes zeos).<br>
Además hay botones para agregar/eliminar/modificar esos registros.<br>
<br>
A ese TTable le hice clic derecho/editar campos y agregué todos los campos de la tabla y además cree 4 campos lookup para que por ejemplo en vez de que se vea el código del operario se vea el nombre, etc.<br>
En el grid se visualizan solo el número de registro, la fecha y esos 4 campos lookup.<br>
Como esos 4 campos son claves foráneas de otras tablas, hay índices.<br>
<br>
En el evento onTitleClick, se ordenan los datos según la columna clickeada.<br>
Uso este código:<br>
<br>
procedure TABMF03.DBGrid1TitleClick(<u></u>Column: TColumn);<br>
var<br>
temp : ZAbstractRODataset.TSortType;<br>
const<br>
PreviousColumnIndex: integer = 0;<br>
begin<br>
try<br>
DBGrid1.Columns[<u></u>PreviousColumnIndex].title.<u></u>Font.Style :=<br>
DBGrid1.Columns[<u></u>PreviousColumnIndex].title.<u></u>Font.Style - [fsBold];<br>
except<br>
end;<br>
<br>
Column.Title.Font.Style:= Column.Title.Font.Style + [fsBold];<br>
PreviousColumnIndex := Column.Index;<br>
<br>
temp := dbForm03.SortType;<br>
dbForm03.SortedFields := Column.FieldName;<br>
if temp = stAscending then begin<br>
dbForm03.SortType := stDescending;<br>
DBGrid1.Columns[<u></u>PreviousColumnIndex].Title.<u></u>ImageIndex:= 1;<br>
end else begin<br>
dbForm03.SortType := stAscending;<br>
DBGrid1.Columns[<u></u>PreviousColumnIndex].Title.<u></u>ImageIndex:= 0;<br>
end;<br>
end;<br>
<br>
pero con una simple tabla de 10mil registros, ordenar por esos campos lookup lo hace MUY LENTO y además, en la mayoría de las veces se cuelga el sistema.<br>
<br>
Otra cosa es que cuando agrego un registro a esa tabla, el guardar tb se hace mUY lento.. y solo hago 1 insert en esa tabla y hasta 6 inserts más en otra de detalle<br>
<br>
Se que es un disparate mostrar todos los registros de esa tabla.. pero en un principio es lo que ellos querían.<br>
Se que debería quizás rediseñar ese form para que se muestre solo determinados registros y quizás eso haga que no se enlentezca al ordenar por X columna y al grabar.<br>
<br>
El concepto es como si fuera un listado de facturas, con posibilidad de agregar, borrar, eliminar, imprimir las mismas.<br>
<br>
Agradezco cualquier idea..<br>
byeeeeeeeee<br>
<br>
<br>
<br>
<br>
______________________________<u></u>_________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org" target="_blank">Lazarus-es@lists.lazarus.<u></u>freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.<u></u>freepascal.org/mailman/<u></u>listinfo/lazarus-es</a><br>
</blockquote></div><br>Regla numero 1, si vas a ordenar debes tener indices creados para cada columna, asi el motor los aprovecha sino en cada ordenamiento los recorre uno a uno para generar el orden.<br>en un lookup no es buena idea una tabla con muchos registros no esta pensado para eso, en ese caso pondria un buscador segun tipee el usuario. y abrir una grilla con la busqueda en caso de que arroje mas de 1 coincidencia. Tengo un ejemplo si te sirve.<br>
<br clear="all"><br>-- <br>El que pregunta aprende, y el que contesta aprende a responder.<br><br>No a la obsolecencia programada: <a href="http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html" target="_blank">http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html</a><br>
<br>Linux User #495070<br><a href="http://domonetic.com/blog" target="_blank">http://domonetic.com/blog</a><br>