¿Cómo hacer que una aplicación trabaja en red conectando a un servidor local?
#1
Escrito 07 agosto 2010 - 09:39
#2
Escrito 08 agosto 2010 - 06:57
Lo mas sencillo es:
1- usar un ini en el programa.
2- crear la conexion a la red de windows.
Saludos
#3
Escrito 08 agosto 2010 - 09:00
Primeramente debe estar hecha la conexión de red.
Como ha dicho Caral, con un archivo ini se puede llevar la configuración de la conexión: el nombre de la db, la ruta, contraseña, etc. De este modo al iniciar el sistema se lee el archivo ini y se recuperan los datos para formar la cadena de conexión.
Una vez formada la cadena de conexión se la pasa al TADOConnection (¿Era ese el nombre...?, no tengo Delphi a mano) y se abre la conexión.
Como se trata de Access, el directorio donde esté almacenado la DB debe ser accesible y visible a la red por tanto debe estar compartido.
Ahora algo muy importante: manejo de transacciones. Un aplicativo que se ha diseñado inicialmente bajo una visión mono-usuario puede llegar a funcionar en una red, pero no de forma óptima. Cuando se está trabajando en red, con posibilidades de acceso simultáneo a la base de datos es más que una obligación atomizar toda comunicación con el motor (Access en tu caso).
Un buen sistema en red para trabajar de forma óptima debe contar con manejo de transacciones. ADO le da esa posibilidad a Access.
Recomiendo una lectura a la ayuda sobre los métodos BeginTrans, CommitTrans, RollBack con que cuentan los componentes ADO. Creo además que había en los foros unos ejemplos de transacciones con ADO.
Con todo respeto: hubiera sido mucho más provechoso y menos lioso si se hubiera pensado desde un principio en un sistema en red, con la arquitectura cliente/servidor. Y no forzar ahora a que el sistema se adapte al esquema de red.
Saludos,
#4
Escrito 08 agosto 2010 - 09:31
Si las sentencias sql estan hechas para access sera un trabajo extra pasarse a otro motor.
Si por el contrario se hicieron sql estándar sera sencillo.
Tambien depende del tamaño del proyecto.
Saludos
#5
Escrito 08 agosto 2010 - 10:09
Las sentencias SQL propias de Access dentro de todo cumplen con el estándar. Quizá alguna que otra den algún que otro problema.Hola
Si las sentencias sql estan hechas para access sera un trabajo extra pasarse a otro motor.
Si por el contrario se hicieron sql estándar sera sencillo.
Tambien depende del tamaño del proyecto.
Saludos
Lo del pasarse a otro motor quizá podría discutirse como indicas, si es que el proyecto es grande.
Se puede emplear Access en red tranquilamente. Pero si lo que se está buscando es algo grande, complejo, o demande mucho recursos, en tiempo, conexiones, espacio, velocidad, etc. yo diría que sería mejor, ya, desde ahora, migrar a un motor de base de datos que pueda con el trabajo.
Mi anterior post iba en el sentido de que se ponga cuidado con el manejo de transacciones. Y como he dicho, ADO le da esa posibilidad a Access. Es allí donde se centra el trabajo... adaptar el sistema para trabajar mejor en red. Las consultas SQL si ya están hechas van a seguir funcionando. El problema puede estar en el acceso simultáneo.
Saludos,
#6
Escrito 08 agosto 2010 - 10:12
El sql propio de access no va con otros motores, tiene muchas diferencias.
Recuerda que yo tuve que hacer una labor ardua para cambiarme.
Por otro lado:
Tienes toda la razon con las transacciones, es vital en red multi_Usuarios.
Saludos
#7
Escrito 08 agosto 2010 - 10:30
Espero que le quede claro a Master23.
Pasos a seguir:
1- Crear una carpeta en el ordenador donde se pondra la bd.
2- La carpeta tiene que tener todos los permisos, escritura y lectura.
3- La carpeta tiene que estar como compartida para que los demas ordenadores vean el archivo.
4- En Cada ordenador se tendra que crear un mapa de las red asi:
a. Inicio, MyComputer, boton derecho, Map Network Drive.
b. generar una letra para la conexion con el ordenador de la BD.
Una vez hecho esto:
5- Crear un archivo INI para el programa.
6- Colocar la ruta de la bd.
Listo.
Saludos
#8
Escrito 08 agosto 2010 - 11:30
Hola Caral:Hola
El sql propio de access no va con otros motores, tiene muchas diferencias.
Recuerda que yo tuve que hacer una labor ardua para cambiarme.
Por otro lado:
Tienes toda la razon con las transacciones, es vital en red multi_Usuarios.
Saludos
Aprovecho este hilo para hacerte una pregunta:
Quiero estudiar acerca de SQL en Access y sus diferencias con otros motores.
Si me podés indicar algún link, tutorial o libro por favor
Muchas gracias
Un saludo
#9
Escrito 08 agosto 2010 - 11:44
No conozco ningún tutorial ni información que hable al respecto.
Las diferencias mas importantes de Lo que hay en access y en otros motores no funciona:
1- Uso de # para los campos Date.
2- Uso de DISTINCTROW.
3- Uso de corchetes [...] en las cosultas.
4- Uso de IIf([.........]). (Firebird lo acepta pero algo diferente).
5- Uso de Last().
6- Uso de First().
Y otros que no me acuerdo.
Incluso he tenido problemas con el Having de access
Saludos
#10
Escrito 08 agosto 2010 - 11:47
Gracias Caral.Hola
No conozco ningún tutorial ni información que hable al respecto.
Las diferencias mas importantes de Lo que hay en access y en otros motores no funciona:
1- Uso de # para los campos Date.
2- Uso de DISTINCTROW.
3- Uso de corchetes [...] en las cosultas.
4- Uso de IIf([.........]). (Firebird lo acepta pero algo diferente).
5- Uso de Last().
6- Uso de First().
Y otros que no me acuerdo.
Incluso he tenido problemas con el Having de access
Saludos
Tomo nota.
Un saludo
#11
Escrito 08 agosto 2010 - 11:54
De nada amigo.
Recuerda: Todos los motores tienen sus particularidades con el sql.
Access, MySql, Firebird y otros son diferentes.
Pensar en que hay un estándar para el sql no creo que sea tan cierto.
Asi que no queda mas remedio que probar y ver las sentencias en cada motor.
Pero ahi esta lo divertido, la aventura de aprender algo nuevo.
Saludos