FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
ADOTable y ACCESS lentos al cargar
Hola.
Estoy usando access 2003 y ado en Delphi 7. corriendo en WinXP tengo un programa que ya tiene cierta cantidad de datos. pero veo que se pone muy lento en las maquinas cliente al cargar los adotable. el sistema corre en una red de cable utp y la distancia es pequeña solo son tres computadoras conectadas. Eh estado viendo la propiedad maxrecords de los adotable para redusir el tiempo de carga. para que no me cargue todos lo registros. pero parece que no funciona esta propiedad. Que pudeo hacer para mejor el rendimiento en la carga de los adotable Última edición por Chogo fecha: 04-07-2008 a las 21:30:47. |
#2
|
||||
|
||||
Hola
Yo usaria un AdoQuery con TOP para limitar la cantidad de registros. Saludos |
#3
|
||||
|
||||
Cita:
Si hicera eso como haria con los formulario maestro-detalle los adoquery no estan diseñados para eso. habria que programar mas. |
#4
|
||||
|
||||
¡Hola!
No te preocupes, lo que experimentas ahora es parte de un proceso cotidiano de aprendizaje en el que terminas comprendiendo por qué muchas veces es mejor utilizar bases de datos cliente-servidor y por qué en la mayoría de los casos no tiene lógica alguna leer de la base de datos todos los registros de una tabla. La lentitud que presenta ahora tu programa es normal debido a la gran cantidad de bytes que estás "jalando" de la base de datos (los procesadores y los cables de red tienen sus límites ). Cita:
Debes acostumbrarte a ver a las bases de datos como un almacén y no como un remolque, no puedes andar llevando la bodega de aquí para allá, como si nada. Las aplicaciones deben tomar de la base de datos solamente la información que requieren, grabando en ellas resultados de sus procesos. Para permitirle al usuario navegar en una tabla y capturar información en ella, generalmente hago una apertura de la misma trayéndome tan solo las últimas 100 filas que fueron modificadas. Y cuando el usuario desea ver otros registros, le proporciono mecanismos de búsqueda que utilizan un "data set" alterno parametrizado e integran los resultados al listado que ya tengo abierto. Para esto es importante utilizar componentes que te permitan discriminar registros en la extracción de la base de datos que realizan internamente. Casi* ningún componente "Table" te permite hacer esa discriminación, por lo que usualmente se aconseja la alternativa de los componentes "Query", ya que en estos colocas una sentencia SQL Select que lleva condiciones en su cláusula Where para "sacar" de la base de datos sólo ciertos registros. Cita:
Por un lado los componentes Query sí pueden establecerse en relaciones maestro-detalle. En la Red y en estos mismos foros podrás encontrar muchos ejemplos. Por otra parte, si tu aplicación corresponde a las características típicas de un programa de gestión, es muy probable que sólo unas cuantas tablas tengan miles de registros (¿o acaso las 40 almacenan casi 300 mil?). Podrías empezar por convertir a TADOQuery los cuatro o cinco TADOTable más críticos, como medida de alivio transitorio. Después tendrás más tiempo para revisar tu proyecto a profundidad y plantearte seriamente el usar una base de datos más adecuada (cliente-servidor, como Firebird, por ejemplo). Espero te resulte orientadora mi aportación. Un abrazo selectivo. Al González. *Por mi experiencia con los componentes IBX, sé que TIBTable maneja la carga de registros de manera eficiente al establecer un valor en su propiedad Filter antes de la apertura (con Filtered en True, desde luego). Internamente se ejecuta una consulta Select con cláusula Where, donde ésta lleva como condiciones el texto de la propiedad Filter. No conozco a fondo el componente TADOTable, pero dudo que haga lo mismo. |
#5
|
||||
|
||||
Cita:
|
#6
|
||||
|
||||
Cita:
si tus tablas tienen cientos de miles de registros, nada, lo mejor es que uses querys
__________________
Conoce mi blog http://www.edgartec.com |
#7
|
||||
|
||||
La mas grande tiene 279,133 registros. ¿ creen que son demasidos registros para no usar Adotable?
|
#8
|
||||
|
||||
La base de datos mide 100 Mb
|
#9
|
||||
|
||||
Cita:
Pero claro que son demasiados para usar un AdoTable. Imaginate, estás cargando 100 megas en memoria. modifica tu aplicación a AdoQuery
__________________
Conoce mi blog http://www.edgartec.com |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Access Violation al cargar forma | jcarteagaf | Varios | 1 | 16-03-2007 21:57:59 |
Procesos lentos...., | Luis Castillo | Conexión con bases de datos | 4 | 22-12-2005 00:20:47 |
cargar imagen en access | detybel | Conexión con bases de datos | 1 | 07-04-2005 09:37:35 |
Access Violation al cargar un Tbitmap en mi componente | pepe2000 | OOP | 3 | 22-01-2005 13:27:59 |
Cargar tabla Access en un TListView | dabas | OOP | 2 | 23-10-2003 11:09:36 |
|