Ver Mensaje Individual
  #9  
Antiguo 08-04-2005
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Apoyo lo dicho por Roman.

Ahora, hay formas de mitigar los problemas. Aparte de leer sobre BDE y Paradox (sobre lo cual no tengo ni idea) lo que debes es IDENTIFICAR los puntos calientes que causan o donde viven los problemas.

Una vez lei, que mas o menos, el 80% de los errores esta en el 20% del codigo (ojo que no es una regla, es una idea!)...

Que puedes hacer? Y que no gaste DIAS en hacerse? Primero que todo, lo mas probable es que los problemas se den en las partes de movimientos de tu programa, como facturacion. Siguiendo con este caso hipotetico, la facturacion tipicamente requiere muchas tablas... pero la MAYORIA son tablas de "lookup" o sea del tipo: Voy a mirar alli si este dato esta tonces devuevo esto y voy para la otra tabla...

Las tablas "lookup" son de solo lectura, pero dejarlas abiertas en la red AUMENTA la probabilidad de corrupcion. Si son de pocos registros (como unos 100) considera descargarlas en un TClientDataSet y cierra la conexion. Las tablas/datos se deben tratar igual que los objetos: Crearlos tarde, destruirlos temprano. Con los datos, se descargan tarde, se cierran las conexiones temprano.

Luego con la parte que si se tiene que actualizar mira si puedes usar lo mismo... TClientDataSet junto a SQL filtrados a los datos ya listos... luego haces los UPDATES en batch (asi funcionan los TClientDataSet) y te deberia mitigar los problemas.

En resumen:

- Determina el 20% del codigo donde es mas problematico
- Descarga copias de solo lectura de datos "lookup". Cierra los dataset originales tan pronto puedas. Mejor aun, crealos por codigo como:

funtion ObtenerDatos(lcSql:String):TClientDataSet

- Mira si el estado actual de codigo permite una operacion en batch. Si es asi, mueve los dataset de estar directos a las tablas a ser TClientDataset...

Esta estrategia no debe demorar mas de un par de dias... Al menos los dos primeros puntos te deberian aliviar un poco la situacion y no requieren un cambio inmediato de base de datos...(y de hecho adelantas para cuando lo hagas)
__________________
El malabarista.
Responder Con Cita