<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">El 24-10-2012 13:23, Maxi escribió:<br>
    </div>
    <blockquote
cite="mid:CAOL=nArhkr-qWf9jgezj=bS0T+fxXjtifQuHiJ0OeTcvF0dvWA@mail.gmail.com"
      type="cite"><br>
      <br>
      <div class="gmail_quote">El 24 de octubre de 2012 14:05, Paola
        Bruccoleri <span dir="ltr"><<a moz-do-not-send="true"
            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(Column: TColumn);<br>
          var<br>
            temp : ZAbstractRODataset.TSortType;<br>
          const<br>
            PreviousColumnIndex: integer = 0;<br>
          begin<br>
            try<br>
                DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=<br>
                   DBGrid1.Columns[PreviousColumnIndex].title.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[PreviousColumnIndex].Title.ImageIndex:=
          1;<br>
            end else begin<br>
                 dbForm03.SortType := stAscending;<br>
                 DBGrid1.Columns[PreviousColumnIndex].Title.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>
          _______________________________________________<br>
          Lazarus-es mailing list<br>
          <a moz-do-not-send="true"
            href="mailto:Lazarus-es@lists.lazarus.freepascal.org"
            target="_blank">Lazarus-es@lists.lazarus.freepascal.org</a><br>
          <a moz-do-not-send="true"
            href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es"
            target="_blank">http://lists.lazarus.freepascal.org/mailman/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 moz-do-not-send="true"
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 moz-do-not-send="true" href="http://domonetic.com/blog"
        target="_blank">http://domonetic.com/blog</a><br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Lazarus-es mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a>
<a class="moz-txt-link-freetext" href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a>
</pre>
    </blockquote>
    Hola Paola:<br>
    <br>
    Esta de mas mi respusta pero apoyo la idea de maxi en cuanto a los
    indices..... ( yo uso indices por cada  columna que uso para ordenar
    y la verdad es bastante mas rapido).<br>
    <br>
    Saludos<br>
  </body>
</html>