Delphi - ADO Conección Cliente-Servidor

 
Vista:

ADO Conección Cliente-Servidor

Publicado por Carlos Galleguillos (1 intervención) el 11/07/2007 18:03:27
Hola! A ver si me pueden ayudar.
Definición:
- Hice un desarrollo de una aplicación cliente-servidor delphi 7+SQL Server 2000
- Tablas Utilizadas: 4 con aprox. 500.000 registros cada una con un crecimiento diario de 3.000 registros.
- Componente de conexión utilizado: ADO
- Proveedor de conexión utilizado es SQLOLEDB
- Componentes visuales: Grilla
Problema:
- Realizo la apertura de la base datos sin problemas.
- Tengo un datamodulo con las referencias adecuadas para abrir las tablas: ADOtable y ADOdataset
- Cuando activo las tablas dm.tabla.open
---- cuando coloco el "cursorlocation=clUseClient" SE DEMORA APROX. 12 segundos por cada tabla y este tiempo es directamente proporcional a la cantidad de registros.
---- cuando coloco el "cursorlocation=clUseServer" Se demora aprox. 7 segundos por cada tabla lo que es mejor, sin embargo no puedo realizar ciertas acciones..
- Cuando cierro las tablas dm.tabla.close
---- demora segun el valor del "cursorlocation" lo mismo que tardó en abrir.
- Ahora independiente de como abro las tablas, al asignar el "datasource" del componente visual grilla, LO QUE HACE ES QUE TRAE TODOS LOS REGISTROS AL EQUIPO LOCAL, por lo que si no da error "Falta de memoria virtual, imposible crear archivo temporal" no se pueden realizar búsquedas dinamicas en un tiempo razonable. Incluso cuando haces INSERT o POST de un registro ufff demora. Cuando recorres la grilla el equipo local va guardando en el disco información y hace todo muy lento, se nota cuando quieres ubicarte estando en el primer registro en el último, comienza a grabar al disco y por la cantidad de registros si el equipo no tiene suficiente capacidad la aplicación se cae.
Soluciones Probadas:
- Conexión1
Observando el SQL explorer de delphi 7 abre las mismas tablas y muestra su contenido en un tiempo razonable, incluso estando en el primer registro al ir al último lo hace rápido, l que si no graba en el disco local, lo que lo hace excelente al navegar por la data.
---- se realizó conexión a la base datos usando ODBC DSN (definida)
---- el datamodulo se usaron los componentes de la infopower 4000 para delphi 7: wwtable y wwdataset
---- se le asignó el ODBC DSN en el "databasename"
---- se activan las tablas y el tiempo siempre es menor o igual a 3 segundos lo que resulta excelente.
---- sin embargo al asignar el "datasource" del componente visual grilla wwDBGrid y comenzar a navegar frecuentemente escribe al disco local y estando en el primer registro luego ir al último ufff, demora una enormidad y el disco local comienza a guardar datos (archivo temporal) y luego muestra un error "memoria virtual insuficiente ó no es posible crear archivo temporal".
- Esta modalidad es la mejor en tiempo, pero no he podido resolver la navegación de la data en los componentes visuales sean cuales sean.

Alguien ha pasado por algo así, qué componentes utilizan? CONOCE ALGUIEN COMO TRABAJA LA APLICACION "SQL EXPLORER DE DELPHI 7"?

Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder