Ir al contenido


Foto

¿Cómo hacer que una aplicación trabaja en red conectando a un servidor local?


  • Por favor identifícate para responder
10 respuestas en este tema

#1 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 07 agosto 2010 - 09:39

Bueno estoy por terminar una aplicación y quiero que se pueda usar en red de manera autónoma al usuario común, osea la red debe estar creada en todas las computadoras ahora bien. quiero poner un módulo que con solo poner servidorpc osea la pc que es el servidor que contiene la base de datos y bueno la base de datos está en C:\\Carpeta\BD cómo puedo hacer que el software se conecte a esa base de datos teniendo en cuenta que uso una conexión ado con access , gracias de antemano.
  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 08 agosto 2010 - 06:57

Hola
Lo mas sencillo es:
1- usar un ini en el programa.
2- crear la conexion a la red de windows.
Saludos
  • 0

#3 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 08 agosto 2010 - 09:00

Hola Master23,
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,
  • 0

#4 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 08 agosto 2010 - 09:31

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
  • 0

#5 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 08 agosto 2010 - 10:09

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

Las sentencias SQL propias de Access dentro de todo cumplen con el estándar. Quizá alguna que otra den algún que otro problema.
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,
  • 0

#6 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 08 agosto 2010 - 10:12

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
  • 0

#7 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 08 agosto 2010 - 10:30

Hola
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
  • 0

#8 esocrates

esocrates

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 102 mensajes
  • LocationArgentina

Escrito 08 agosto 2010 - 11:30

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

Hola Caral:
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
  • 0

#9 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 08 agosto 2010 - 11:44

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. :D
Incluso he tenido problemas con el Having de access

Saludos

  • 0

#10 esocrates

esocrates

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 102 mensajes
  • LocationArgentina

Escrito 08 agosto 2010 - 11:47

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. :D
Incluso he tenido problemas con el Having de access

Saludos

Gracias Caral.
Tomo nota.
Un saludo
  • 0

#11 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 08 agosto 2010 - 11:54

Hola
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. (y)
Saludos
  • 0




IP.Board spam blocked by CleanTalk.