Visual Basic - Cargar Recordsets en Servidor

Life is soft - evento anual de software empresarial
   
Vista:

Cargar Recordsets en Servidor

Publicado por Alberto contacto@ssyaonline.com (1 intervención) el 05/05/2013 04:28:17
Saludos a todos espero puedan ayudarme, la situacion es la siguiente:

Tengo una aplicacion hecha en VB6 Cliente/Servidor con una base Access compartida en red, el problema es que el sistema carga al inicio mas de 50 recordsets lo que ha ocasionado que tarde mucho en cargar.

Mi pregunta es se podria cargar todos los recordsets en el servidor para que de esta manera esten siempre disponibles para los clientes sin necesidad de que cada uno abra un nuevo recordset cada ves que abren la aplicacion?, o alguna manera de compartir los recordsets del servidor con los clientes?

Si es posible como lo haria o que me siguieren para agilizar la carga de las recordsets.

Por cierto estoy usando ADODB.

Agradecere enormemente cualquier aportacion y gracias por su ayuda por anticipado.
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

Cargar Recordsets en Servidor

Publicado por El Viejo Charles (261 intervenciones) el 07/06/2013 18:57:48
Buen dia Alberto
De antemano perdon por la pastoral que te describire a continuacion, pero creo que es necesario explicar todo esto, posiblemente les sirva a otras personas.
Bueno te comento que tienes varios problemas aqui:
1. Access es una base de datos de escritorio
2. No es recomendable utilizarla para aplicaciones cliente servidor
3. Este tipo de base de datos tiende a ser muy lente si no la estructuras adecuadamente
4. Cuando cierras el archivo Access de base de datos debes utilizar una funcionalidad propia de access llamada compactar y reparar, de lo contrario esta se incrementara de manera absurda cada vez que tu aplicativo abre y cierra el archivo de base de datos.

Por experiencia propia, cuando comence mis primeros pasos en programacion tuve precisamente tu mismo problema, algunas soluciones que emplee fueron:
1. Utilizar en visual basic 6 el control "MSHieralchicalFlexGrid", el cual solo le asignaba el Recordset a la propiedad "DataSource". asi:

Dim Rs as new ADODB. Recordset
Rs.open "CONSULTA"
set MSHieralchicalFlexGrid.DataSource = Rs

'ESTO REALMENTE CARGABA RAPIDO, MAS NO ERA SUFICIENTE CUANDO LA BASE DE DATOS SE INCREMENTABA EN MAS DE 10 MIL REGISTROS.

2. Me cambie al motor de base de datos MySql, el problema con este es que los clientes no sabian como instalarlo y configurarlo, por tanto dependian de mi para eso.

SOLUCION DEFINITIVA:
1. Utilizar una version portable de Mysql
2. Mysql funciona perfectamente cliente servidor
3. Su motor de base de datos es mas potente que Access
4. La base de datos puedes hacerla parte del instalador del aplicativo.
5. Las tablas son archivos fisicos que puedes reemplazar tan sencillo como copia y pegar.
6. La mejor... MySql es gratuito.

Personalmente la recomiendo ya que desde mis aplicativos llamo el ejecutable del motor una sola vez, la base de datos hace parte del instalador del aplicativo y el cliente no tiene que configurar nada, solo instale y clic en NEXT...NEXT y ejecutar el programa.
El unico inconveniente que he tenido con esta base de datos, es que no permite la creacion de Store Procedures, Funciones, Triggers, mas lo que si funciona a la perfeccion son las tablas con llaves primarias e indices.

Si te decides trasladar a Mysql tocaria migrar tu base de datos, lo cual no veo complejidad alguna, mas si es un proceso que debes saber realizar.

Si necesitas alguna asesoria, podemos concretar una cita y te muestro lo que deberias hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar