PDA

Ver la Versión Completa : Cliente/servidor usando Paradox


darkerbyte
18-03-2008, 20:59:04
Saludos, estimados colegas del Club:

Recientemente me metí a programar bases de datos con Delphi. Hice una base de datos (para administrar un negocio) en Páradox, utilizando el BDE. Ya programé la aplicación utilizando TDatasource's y Ttable's. Y el programa funciona bien en forma local. Ahora mi interés en ponerlo en modo Cliente-Servidor.
He visto que algunos programas que usan paradox (por ejemplo, SAE, COI, etc.) Solo instalan el BDE en las máquinas cliente y cuando ejecutan el programa solo le indican la ruta \servidor\\carpeta donde se encuentran los datos.
¿Cómo podría pasar mi aplicación de ser local a modo Cliente servidor? en los Ttables utilizo el ALIAS y el nombre de la tabla para acceder a mi base de datos.
Alguien conoce de algun lugar donde encontrar información acerca de páradox en red? necesito ver lo de la concurrencia. Y aún no entiendo bien el uso de las sesiones en delphi. :confused:

Jaja, como pueden ver, aún estoy muy 'verde' en Bases de datos.
Les agradezco mucho su ayuda y el tiempo que se han tomado para leer mi pregunta. :D

Lepe
18-03-2008, 21:03:10
Paradox son tablas de escritorio, no tiene nada que ver con la arquitectura cliente/servidor, lo único que puedes hacer es ponerlo en red y cruzar los dedos.

El artículo de paradox en red (http://www.terra.es/personal/alksoft/delphi/articulo/paradox.htm)

Si buscas por "GetUsers (http://www.clubdelphi.com/foros/showthread.php?t=24235&highlight=getusers)" en el foro, te toparás con un mensaje mío sobre el tema de paradox en red y otras dudas relacionadas.

Edito: Pongo el enlace a GetUsers.

Saludos

Neftali [Germán.Estévez]
19-03-2008, 09:52:24
Ya se que no es lo que preguntas, pero en un caso así, creo que se debe comentar.
No se si has evaluado otras opciones de Base de Datos para tu programa. Cuando uno habla de Cliente-Servidor y de trabajo en red a uno se le vienen a la cabeza "cosas" que no son Paradox, que posiblemente no es la BD más adecuada para ese diseño.

Si ya lo has evaluado y lo tienes claro, pues nada, ni caso, pero si no te lo has planteado, yo te recomendaría que "hicieras un alto en el camino" y revisaras, al menos, la posibilidad de utilizar otras BD con arquiectura Cliente -Servidor (FB, IB, MySQL,...)

darkerbyte
19-03-2008, 20:24:29
Antes que nada, gracias por responder a mis preguntas anteriores. Sobre todo a Neftali, que varias veces me has ayudado.

Por lo que veo, Paradox tiene problemas con los índices y si algun usuario no cierra correctamente la aplicación las tablas siguen bloqueadas, segun he estado leyendo.
Yo he utilizado MySQL con PHP, pero como nunca había programado Delphi con bases de datos, por compatibilidad comenze con paradox.
Aunque el BDE soporta mas tipos de bases de datos, me recomendarian usar alguna de las que soporta el BDE en vez de paradox ??? o de plano me peleo con ZeosLib y le entro a MySQL ???
Como vamos a distribuir el programa a varios negocios, mi idea era hacer el programa lo mas facil de configurar. Por eso vi que Usando Paradox solo se le da la ruta al programa y desde el InstallShiel se mete el BDE y ya no es tanto problema al usuario 'comun y corriente' que no tiene ni servidores dedicados ni mucho menos un administrador para su SGBD. EL sistema tiene solo 7 tablas y la mas grande de estas tiene 11 campos, y calculamos tendrá a lo mas unos 4000 registros.

AzidRain
19-03-2008, 20:42:04
Con Zeos y MySQL no debes tener problema. El manejo es muy sencillo y no requieres del BDE para trabajar. Además tienes la ventaja de que tu programa puede trabajar vía internet con servidores remotos. MySQL es muy sencillo de instalar y se puede poner en cualquier pc sin importar que sea o no un servidor dedicado.

También está FireBird que te da practicamente las mismas ventajas aunque en eso no soy tan experto.

eduarcol
19-03-2008, 21:02:06
Si sigues con el BDE puedes tener problemas serios, eso no esta pensado para la arquitectura cliente servidor, te recomendaria Zeos con Firebird, o mysql. Paradoz es facil de configurar?, pues permiteme diferir en eso, si configuras mal el bde paradox puede ser un verdadero dolor de cabeza, claro que la cantidad de registro que piensas manejar la soporta mil veces, pero si te recomendaria mirar otras opciones para el trabajo en red.

darkerbyte
20-03-2008, 20:33:57
Muchas gracias por sus consejos. Estaba a punto de cometer un gran error. Estuve haciendo pruebas con Paradox en red y es un dolor de cabeza los bloqueos y el dichoso archivo LCK.
Ya instale Zeos y MySQL. Mejor migraré a estos todo el sistema, aunque es empezar de cero :( pero valdra la pena :)

Una vez mas, gracias por su ayuda y por su tiempo a leer mis menajes.

Lepe
21-03-2008, 14:32:14
Es cierto que es un dolor de cabeza si no sabes como hacerlo. Pero esto también ocurre en MySql o Firebird. Yo he tenido un problema bastante grave con Firebird que me ha llevado más de 1 mes encontrar el error. (El programa se quedaba colgado, con el reloj de arena de cursor, y no daba excepciones por ningún sitio).

Quiero decir qué: el problema no será usar paradox o Firebird, el problema será nuestra ignorancia sobre el tema que estamos tratando. (Yo soy de los que opinan que todos somos ignorantes en algo, aunque poniendo de nuestra parte, la ignorancia es pasajera ;)).

Es cierto que MySql o Firebird son mucho más potentes (por supuesto, es c/s y Paradox son tablas de escritorio, no se debe comparar).

Cierto que si vas a vender tu programa en varios negocios, MySql es robusto y mejor opción.

Pero hay ocasiones en las que no se puede cambiar de Base de datos, o simplemente resultaría muy caro, y en ese sentido (teniendo la aplicación completamente terminada) puede ser una opción viable Paradox en red.

Para tí valdrá la pena el cambio, pero la verdad, tu cliente no notará diferencia alguna (ojo: desde el punto de vista del usuario). No importa la tecnología que uses, lo que importa es cómo la uses (si usas un TZTable en MySql, estás en las mismas que Paradox en red, no tendrás problemas de índices, pero sí problemas de rendimiento).

Según tengo entendido por este mismo foro, si vas a vender una aplicación hecha con MySql, tienes que pagar una licencia de 600 € (Firebird no tendría este "impedimento").


Saludos

darkerbyte
22-03-2008, 07:57:04
:eek: No puedo creerlo. Yo pensé que MySQL era enteramente gratuito!

Ya estoy migrando la base de datos a MySQL, y ya implementé buena parte del programa nuevamente. Lo bueno es que la base de datos esta practicamente vacía. Solo fue cosa de crear las tablas.

Pero no puedo creer que hay que pagar tanto? Mmm. Nunca he utilizado Firebird, pero voy a investigar, pero a estas alturas ya no quiero cambiar el SGBD.

Y si distribuyo la aplicación y el script que crea la base de datos, y el usuario por su cuenta baja e instala el MySQL ¿tambien hay que pagar?
Pues no creo que sea mucho problema aquí, es una aplicación a medida para un cliente que tiene varias tiendas.

Ademas, para bien o para mal, México aún está en pañales en cuanto a derecho informático.

Lepe
22-03-2008, 12:16:02
Aquí es (http://www.clubdelphi.com/foros/showpost.php?p=178838&postcount=16)donde lo leí.
Y aquí (http://www.clubdelphi.com/foros/showpost.php?p=178834&postcount=15)

Si quieres lee el hilo completo.

Como ves, siempre hay un "pero".

Saludos

Esteban Quito
04-04-2008, 17:59:57
No se si ya es tarde para responderte. Lo que pasa es que recien lo lei. Yo trabajo con paradox en red y lo hago de la siguiente manera.

Declaro el alias usando BDE Administrator. Dicho alias tienen el siguiente camino \\Servidor\c\Sistema\DatosDelSistema\ (file://\\Servidor\c\Sistema\DatosDelSistema\). eso en todas las PCs que accederán. Tambien lo podes hacer con el mismo instalador de tu aplicación.

Segundo. En el Programa, en el DataModule pongo el control TSession y las propiedades Active=False, AutoSessionName=False, SesionName=(ComoQuieras), y en el evento OnCreate del DataModule poner el código...

{Red}
Session1.NetFileDir:='\\Servidor\c\Sistema\net';
Session1.PrivateDir:='c:\Sistema\LocalTemp';
Session1.Active:=True;


... donde "Servidor" es el nombre de la PC servidora; "net" es el nombre de la carpeta donde se creara el archivo Pdoxusrs.net que es donde se "inscriben" todas las PCs que ejecutan la aplicación; "LocalTemp" es el nombre de la carpeta donde de registran temporalmente las tablas y registros a los cuales se acceden, de esta manera se mantiene el control de los registros a los cuales accedio cada PC conectados todos por medio de Pdoxusrs.net evitando escribir en un registro que este siendo accedido por otro usuario.

Importante. A todos los Querys o Tables se les deberá asignar en su propiedad SessionName el nombre de Session1.SessionName declarada en el DataModule sin importar que sean Querys o Tables que pertenezcan a otros formularios o modulos de datos.

De este modo te funcionara en red. La velocidad de acceso es otro tema

Espero te sirva. Un saludo para todos

darkerbyte
18-04-2008, 05:49:32
Gracias, yo no entedía para qué servían las sesiones. Has sacado de la ignorancia a un individuo :D