![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Hace muchos años que no manejo el obsoleto BDE pero, por la diferencia de tiempos que Gherardo señala, es casi seguro que TTable no esté trayendo esos 120 mil registros "de un jalón", es decir, que probablemente está haciendo "paginación" (se trae un grupo de registros y luego el siguiente según se necesiten).
Para salir de dudas, Gherardo, coloca una instrucción "Tabla.Last" después de poner en True su propiedad Active. En ese caso TTable habrá de demorar algo más. Con TClientDataSet también pueden traerse registros en paquetes de n filas según vaya necesitando avanzar el cursor (propiedad PacketRecords). No obstante, prefiero traerme de un solo golpe todos los registros de la consulta (dejando PacketRecords en -1), dado que no es muy buena práctica "entretener" al servidor con impredecibles acciones de la interfaz de usuario. Y bueno, si realmente se necesita una consulta de 120 mil registros, debemos acostumbrarnos a que algo así no es gratis (al menos no con los equipos actuales). ![]() |
|
#2
|
|||
|
|||
|
Muchas gracias AL Gonzalez.
Una vez que tienes todos los registros "aquì", el Last es instantaneo en ambos casos. Si cambio la propiedad PackectRecords del ClientDataSet a un valor distinto a -1, en este caso si hay retardo en el Last del clientDataSet, esto no me preocupa, pero me da un error al realizar un ApplyUpdate. El error dice lo siguiente: " no se puede crear una nueva transacción, se excedio la capacidad ". Gracias. |
|
#3
|
||||
|
||||
|
Cita:
Sobre PacketRecords, como dije antes, es preferible dejarla en -1. ![]() |
|
#4
|
||||
|
||||
|
Cita:
Aunque de todas formas extraña tanto tiempo para dbx siendo una base local. // Saludos |
|
#5
|
||||
|
||||
|
Esperemos a ver qué nos dice sobre la prueba de recorrido con "While Not EOF".
Y es que estrictamente hablando, DBX (dbExpress) son los componentes TSQLXXX (conexión y consulta). TClientDataSet no es parte de DBX (hay que erradicar ese mito). TClientDataSet, de la pestaña "Data Access", es un conjunto de datos genérico muy bueno para diversos escenarios, entre ellos conectarse a DBX, o a cualquier otro grupo de componentes de datos, usando un objeto TDataSetProvider (también de la pestaña "Data Access"). El cursor unidireccional de TSQLQuery (y sus similares de la familia DBX) debe ser mucho más rápido que un cursor bidireccional como TTable. Pero el trabajo del TDataSetProvider más el enriquecido cursor de TClientDataSet sí que van a añadirle algo de CPU a la carga de esa tabla. Sin embargo, cuando me he conectado a MS SQL Server (2008, creo) con el controlador DBX para ese motor que viene en Delphi 7, he visto que el trabajo no resulta del todo óptimo, por lo cual termino usando ADO. No sé si esto se deba al hecho de estar usando un controlador muy antiguo, creado para versiones más viejas de MS SQL Server (y habría que ver que tan al día va ese controlador en las nuevas versiones de Delphi). En resumen, DBX + TClientDataSet es una combinación muy buena con varios motores de base de datos (lo he comprobado con Firebird y no regresaría a usar IBX o similares), pero recordemos que MS SQL Server no es precisamente una base de datos que se lleve muy bien (hoy en día) con las bibliotecas de conexión pertenecientes a otras empresas. Las preguntas que le hago a Gherardo van encaminadas a descubrir qué tanto se debe esa tardanza al controlador, qué tanto a DBX y qué tanto a TClientDataSet. Saludos. ![]() Última edición por Al González fecha: 24-10-2012 a las 17:29:45. Razón: Añadir "o a cualquier otro grupo de componentes de datos" |
|
#6
|
||||
|
||||
|
Cita:
Como dije antes, creo que se está desestimando aquí el hecho de tratarse de un acceso local en el cual el BDE lleva las de ganar puesto que el acceso se hace directamente sobre el archivo físico de la tabla. // Saludos |
|
#7
|
||||
|
||||
|
Gracias por confirmarlo, Román.
![]() Cita:
Creo que me estoy perdiendo de algo... ![]() |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Comenzando con Firebird... | Kenobi | SQL | 6 | 15-04-2007 19:44:42 |
| Comenzando de Nuevo con Delphi 2007 | dvd2000 | Conexión con bases de datos | 3 | 15-04-2007 15:54:40 |
|