FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
Rendimiento DataSet
Hola.
Tengo una aplicación con Delphi XE3 la cual esta conectada a una DB Firebird 2.5 con DBExpress. La tabla en cuestión tiene alrededor de 20.000 registros. Accedo a los registros con un DBXQuery --> DataSetProvider --> ClientDataSet --> DataSource y se muestran los resultados en un DBGrid. El problema es que al intentar moverme por el DBGrid con la barra de desplazamiento tarda mucho en reaccionar, la barra de scroll no se mueve y al cabo de varios segundos se mueve la barra y se muestran los datos. He modificado la consulta de SQL para solo me muestre los 50 primeros registros, pero sigo teniendo el mismo problema. Alguien sabe de donde puede venirme el problema o como optimizarlo? Saludos y Gracias |
#2
|
||||
|
||||
Buen día, ses27coves.
Cita:
Saludos. |
#3
|
||||
|
||||
Que pase lo primero me parece normal con 20.000, que te pase lo segundo sólo con 50, me parece muy extraño.
¿Puedes dar más datos?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
||||
|
||||
Hola.
¿Tienes código en algún evento de DBGrid, como por ejemplo OnRowChange, OnColumnChange, etc.? ¿Tienes código en algún evento de algún field del clientdataset, como por ejemplo OnChange, etc.?
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... |
#5
|
|||
|
|||
La consulta SQL que utilizo para limitar los registros es:
Código:
Select FIRST 50 ID, NOMBRE, MUNICIPIO, LONGITUD, LATITUD, ALTITUD, PROFUNDIDAD, DESARROLLO, (ORDEN || '-' || SUBORDEN) AS ORDEN, ENTIDAD, PUBLICACION, VERIFICADO, PROTEGIDO, PROPIETARIO,ORDEN AS ORDEN1,SUBORDEN,NOMBREDISCRIMINANTE,TOPO from CUEVAS order by MUNICIPIO, NOMBREDISCRIMINANTE ASC ; Código:
//>>>>>>>>>>>>>>>>>>>> Color Filas Grid Cuevas >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>< procedure TFPrincipal.DBGridCuevasDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (Column.Field.Dataset.FieldbyName('VERIFICADO').asstring = 'SI') or (Column.Field.Dataset.FieldbyName('VERIFICADO').asstring = 'si') then begin DBGridCuevas.Canvas.Font.Color:= clGreen; end; DBGridCuevas.DefaultDrawColumnCell(rect,DataCol,Column,State); end; //>>>>>>>>>>>>>>>>>>>> Código:
procedure TDataModule1.DSCuevasDataChange(Sender: TObject; Field: TField); begin UPrincipal.FPrincipal.Statusbar1.Panels[2].Text:='Cargando mapa y topo...'; TimerCuevas.Enabled := False; TimerCuevas.Enabled := True; end; Si me muevo por el DBGrid con la rueda del ratón o con las flechas de desplazamiento del teclado, este responde bien. El problema esta en el uso de la barra de desplazamiento. Al intentar usarla esta no se mueve. Y al soltarla en algún punto(aunque no se mueva), pasados unos segundos se mueve. Si bien es cierto que con la tabla entera (20.000 registros) tarda 1 o 2 segundos y con 50 registros tarda menos. Pero en ningún caso se mueve cuando pinchas sobre ella i la mueves. Gracias por vuestro interés y ayuda. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Copiar el contenido de un DataSet a otro DataSet | Javi2 | Varios | 82 | 22-11-2022 09:26:16 |
Actualizar un dataset desde otro dataset | jafera | Conexión con bases de datos | 17 | 18-12-2008 23:57:10 |
rendimiento de PHP | Ñuño Martínez | PHP | 1 | 20-09-2006 06:29:55 |
Rendimiento TStringList | Delphius | Varios | 7 | 13-06-2005 07:16:46 |
rendimiento | carlomagno | Firebird e Interbase | 14 | 06-07-2004 17:05:13 |
|