Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Diseño de sistema en RED LAN (https://www.clubdelphi.com/foros/showthread.php?t=78586)

pelikno 02-05-2012 14:45:59

Diseño de sistema en RED LAN
 
Hola gente, gracias de ante mano, y quería ver si me podían ayudar a organizar mi sistema en red.
Tengo una maquina la cual sera el servidor del sistema y tendria el ejecutable con la base de datos firebird. Las componentes para conectar a la base son interbase (databse,transaction) y para el AMB dbgrid,datasourse y ibtable.
Quería saber si esta bien y que me recomiendan para poder manejar los abm correctamente entre los clientes y la información de la base se actualice bien , ya que probé altas y bajas de un cliente y hasta q no cierro el sistema en el otro, la grilla no me muestra los datos correctos.
La base la tengo conectada con una configuración remota por medio de la iplocal del servidor y la ruta donde se encuentra mi base.fdb.
Si me falta alguna información adicional para que me den una mano avisen.
Desde ya muchísimas gracias !!

MartinS 02-05-2012 15:01:27

Hola pelikno: ¿Miraste el tutorial de Caral?. Ahi explica todo lo que necesitas y en cuanto a las actualizaciones de datos creo que el problema esta en la configuracion del componente de transacciones que también explica dicho tutorial.-

Saludos.-

pelikno 02-05-2012 15:08:46

Cita:

Empezado por MartinS (Mensaje 431539)
Hola pelikno: ¿Miraste el tutorial de Caral?. Ahi explica todo lo que necesitas y en cuanto a las actualizaciones de datos creo que el problema esta en la configuracion del componente de transacciones que también explica dicho tutorial.-

Saludos.-

Gracias ahi lo miro !!!

pelikno 02-05-2012 15:26:15

Cita:

Empezado por pelikno (Mensaje 431540)
Gracias ahi lo miro !!!

Lo vi pero es solamente para conectar la base firebird y yo lo que busco es ver si estoy haciendo bien el diseño de mi sistema para que funcione correctamente en red, estoy probando ejecutar el sistema desde otra maquina por medio de un acceso directo al .exe y arranca bien, me muestra los datos de la base, pero al modificar algo no me lo refleja los cambios en las otras maquinas, me explico ?
Ejecuto el sistema en las dos maquinas(servidor y cliente), luego del cliente elimino un registro y en la grilla del servidor no me lo refleja.
en el evento afterpost de mi tabla localidades coloque esto lo cual no genero ningun efecto.
Código Delphi [-]
localidades.ApplyUpdates;
localidades.Refresh;

Casimiro Notevi 02-05-2012 15:37:33

Hola, creo que has vuelto a olvidar decir con qué componentes estás trabajando, entre otras cosas ;)
Lo que te acaban de recomendar es muy importante, tienes que verificar el tema de transacciones.
Además, tampoco te recomiendo que por internet trabajes de esa forma, debes tener el programa ejecutable en cada equipo/terminal y estos se conectarán al servidor donde está la base de datos.
También puedes trabajar como has indicado, accediendo al ejecutable en el servidor, pero entonces te recomiendo un VPN o un programa del estilo "terminal server".
Definitivamente, falta mucha más información de lo que estás haciendo, de cómo lo haces, de qué quieres conseguir exactamente, etc.

Por cierto, decías que era una conexión por internet y ahora dices que es una red local. Es muy diferente. Casi que no valen los consejos anteriores con el nuevo entorno que indicas.
Repito, información amplia, detallada y clara ;)

pelikno 02-05-2012 15:45:52

Cita:

Empezado por Casimiro Notevi (Mensaje 431543)
Hola, creo que has vuelto a olvidar decir con qué componentes estás trabajando, entre otras cosas ;)
Lo que te acaban de recomendar es muy importante, tienes que verificar el tema de transacciones.
Además, tampoco te recomiendo que por internet trabajes de esa forma, debes tener el programa ejecutable en cada equipo/terminal y estos se conectarán al servidor donde está la base de datos.
También puedes trabajar como has indicado, accediendo al ejecutable en el servidor, pero entonces te recomiendo un VPN o un programa del estilo "terminal server".
Definitivamente, falta mucha más información de lo que estás haciendo, de cómo lo haces, de qué quieres conseguir exactamente, etc.

Por cierto, decías que era una conexión por internet y ahora dices que es una red local. Es muy diferente. Casi que no valen los consejos anteriores con el nuevo entorno que indicas.
Repito, información amplia, detallada y clara ;)

" firebird. Las componentes para conectar a la base son interbase (databse,transaction) y para el AMB dbgrid,datasourse y ibtable."
Por el tema de la conexion a internet, no hay , ya que es una conexion LAN como dice en el titulo.
Lo que quiero conseguir es que al realizar cambios en la base se me reflejen en todos tanto en el servidor como en los clientes.

Decime donde dije que era por internet asi lo modifico gracias ;)

MartinS 02-05-2012 15:54:27

Podrias poner el codigo donde das el alta?. En algun lugar haces

Código Delphi [-]
  TuTransaccion.commit;

Pd.: Yo sigo con que son las transacciones y con el permiso del compañero Casimiro pongo esto que una vez me sugirio

pelikno 02-05-2012 15:58:41

Mi ibtransaction esta configurada como el tutorial igual que la ibdatabase , sera alguna propiedad de las tablas que no esta correctamente seteada para que actualice los datos o se refresque correctamente ?, porque elimino un registro en la tabla localidades desde el cliente (el cual se ejecuta por medio de un acceso directo a la unidad compartida con el servidor en donde se encuentra miprograma.exe) y en la tabla localidades del servidor (es la maquina en la red lan la cual alberga el sistema y la base de datos firebird 2.5 y el dbms tambien) sigue figurando el registro supuestamente eliminado. Para que se vea la eliminación tengo que cerrar el sistema y volverlo abrir y ahí si se ven los cambios de la eliminación.

Casimiro Notevi 02-05-2012 16:01:00

Cita:

Empezado por pelikno
Decime donde dije que era por internet asi lo modifico gracias ;)

Aquí hablaste de conectar remotamente con la IP local, eso da a entender que la conexión es por internet .
Cita:

Empezado por pelikno
Ya pude crear el instalador y conecte la base firebird remotamente con ip local





Cita:

Empezado por MartinS
Pd.: Yo sigo con que son las transacciones y con el permiso del compañero Casimiro pongo esto que una vez me sugirio

Sí, casi con total seguridad es problema de transacciones, y ese documento es el "padre nuestro" sobre las tracciones :)

pelikno 02-05-2012 16:01:06

Cita:

Empezado por MartinS (Mensaje 431545)
Podrias poner el codigo donde das el alta?. En algun lugar haces

Código Delphi [-]
  TuTransaccion.commit;

Pd.: Yo sigo con que son las transacciones y con el permiso del compañero Casimiro pongo esto que una vez me sugirio

Uso un dbNavigator para manipular la grilla, uso el append del navigator para crear un nuevo registro y edito los datos directamente de la grilla, luego guardo los cambios tb con el navigator.

Casimiro Notevi 02-05-2012 16:06:54

Amigo pelikno, lo que comentas es asunto de las transacciones, el documento antes indicado es "primordial" en ese tema. Te aconsejo que lo leas y lo comprendas claramente para tener las ideas claras al respecto.
También haz una búsqueda por un tema que hemos tratado en otras ocasiones y tiene que ver con todo esto: post_event
Se trata de hacer saltar un evento en la base de datos para hacer "algo" que requerimos, cosa que también te viene bien para este caso.

Edito: por cierto, parece que te estuvieras enfadando por que intentemos ayudarte :confused:

pelikno 02-05-2012 16:13:26

Cita:

Empezado por Casimiro Notevi (Mensaje 431547)
Aquí hablaste de conectar remotamente con la IP local, eso da a entender que la conexión es por internet .


[/i]


Sí, casi con total seguridad es problema de transacciones, y ese documento es el "padre nuestro" sobre las tracciones :)

Por lo de internet, interpreto ip publica 190.x.x.x como Internet y local como por ejemplo 192.x.x.x ademas de LAN ( local area network) supuse que se interpretaria por el lado correcto, aunque creo que remotamente quiere decir que no se incia el sistema con el archivo ejecutable en la misma computadora sino se instancia desde otra ya sea LAN o WAN o alguna otra forma que no sea en la misma maquina.
Puede que sea un problema de interpretación y si me exprese mal pido disculpas y confirmo que es una red lan con la ip del servidor 192.168.1.226 y el cliente 192.168.1.227, el cliente tiene en el escritorio un acceso directo al .exe de mi aplicación en la carpeta compartida en el servidor

Por el lado de mi problema con los datos tiene que ser algo que me falte en el transaction o en las tablas. Pero el diseño esta correcto no ? me refiero a las componentes que utilizo para mi aplicación.

pelikno 02-05-2012 16:17:28

Cita:

Empezado por Casimiro Notevi (Mensaje 431550)
Amigo pelikno, lo que comentas es asunto de las transacciones, el documento antes indicado es "primordial" en ese tema. Te aconsejo que lo leas y lo comprendas claramente para tener las ideas claras al respecto.
También haz una búsqueda por un tema que hemos tratado en otras ocasiones y tiene que ver con todo esto: post_event
Se trata de hacer saltar un evento en la base de datos para hacer "algo" que requerimos, cosa que también te viene bien para este caso.

Edito: por cierto, parece que te estuvieras enfadando por que intentemos ayudarte :confused:

NOOOOOOO Casimiro al contrario !!! :eek: fue solo mala interpretación y en verdad agradezco tu tiempo y el del resto para darme una mano para solucionar el tema.
Segui el tutorial al pie de la letra y en una sola maquina funciona correctamente todo pero solamente en la manquina que realizo los cambios en la otra no veo nada distinto hasta que no cierro y vuelvo abrir el sistema. Al parecer porque se conecta y desconecta la base y se actualiza la info.

MartinS 02-05-2012 16:19:21

Cita:

Empezado por pelikno (Mensaje 431548)
Uso un dbNavigator para manipular la grilla, uso el append del navigator para crear un nuevo registro y edito los datos directamente de la grilla, luego guardo los cambios tb con el navigator.

Bueno. Creo que nunca use el DbNavigator para dar de alta un registro (aunque creo que solo lo estas usando para probar) y por lo tanto no se bien como captar que boton apreta el cliente. Lo que si puedes hacer y como para probar es en el evento que indicas "afterpost" poner así:

Código Delphi [-]
localidades.ApplyUpdates;
TuTransaccion.commitRetaining;
localidades.Refresh;

y en cuanto a componentes yo no uso IbTable, lo hago a traves de IbDataset pero creo que no esta mal como lo implementas.-

PD: Son las transacciones :p:D:D

Casimiro Notevi 02-05-2012 16:23:24

Cita:

Empezado por MartinS (Mensaje 431555)
PD: Son las transacciones :p:D:D

Son las transacciones, amigo pelikno :)

pelikno 02-05-2012 16:31:58

Cita:

Empezado por MartinS (Mensaje 431555)
Bueno. Creo que nunca use el DbNavigator para dar de alta un registro (aunque creo que solo lo estas usando para probar) y por lo tanto no se bien como captar que boton apreta el cliente. Lo que si puedes hacer y como para probar es en el evento que indicas "afterpost" poner así:

Código Delphi [-]
localidades.ApplyUpdates;
TuTransaccion.commitRetaining;
localidades.Refresh;

y en cuanto a componentes yo no uso IbTable, lo hago a traves de IbDataset pero creo que no esta mal como lo implementas.-

PD: Son las transacciones :p:D:D

Lo del navigator es para prueba :p, probe con lo que me dijiste y sigue igual, tengo que cerrar la aplicacion en el cliente para poder refrescar los cambios que hizo el servidor y viceversa :mad:.

MartinS 02-05-2012 16:53:38

Imagino que estas haciendo referencia a traves del datasource al IbTable. Por eso yo uso IbDataset donde la consulta sale a partir de una sentencia SQL que se actualiza cada vez que se abre el formulario, por decirlo de alguna forma.

Por ejemplo

Código Delphi [-]
 IbQuery1.close;
   IbQuery1.Sql.Clear;
   IbQuery1.Sql.Add(Select Apellido,Nombres,DNI,Direccion From Clientes);
   ibQuery1.Sql.Open;

y para actualizar con un simple

Código Delphi [-]
 IbQuery1.close;
   IbQuery1.Open;

me funciona

pelikno 02-05-2012 17:01:53

Cita:

Empezado por MartinS (Mensaje 431560)
Imagino que estas haciendo referencia a traves del datasource al IbTable. Por eso yo uso IbDataset donde la consulta sale a partir de una sentencia SQL que se actualiza cada vez que se abre el formulario, por decirlo de alguna forma.

Por ejemplo

Código Delphi [-]
 IbQuery1.close;
   IbQuery1.Sql.Clear;
   IbQuery1.Sql.Add(Select Apellido,Nombres,DNI,Direccion From Clientes);
   ibQuery1.Sql.Open;

y para actualizar con un simple

Código Delphi [-]
 IbQuery1.close;
   IbQuery1.Open;

me funciona

si si tengo en la grilla,datasource y ibtable. Claro te funciona porque se realiza la consulta otra vez a la base con los datso actualizados, pero no entiendo porque con el ibtable no lo hace, le hice un trasaction.commit; y me cierra todas las tablas, como que rompe todo.

MartinS 02-05-2012 17:07:05

Cita:

Empezado por pelikno (Mensaje 431562)
si si tengo en la grilla,datasource y ibtable. Claro te funciona porque se realiza la consulta otra vez a la base con los datso actualizados, pero no entiendo porque con el ibtable no lo hace, le hice un trasaction.commit; y me cierra todas las tablas, como que rompe todo.

El commit solo cierra los dataset usa commitretaining. Igual debe quedar colgado algún procedimiento para hacer. A partir de aquí desconozco porque no hago nunca referencia al ibtable directo para mostrar datos, siempre uso Query's.

pelikno 02-05-2012 17:09:40

Cita:

Empezado por MartinS (Mensaje 431564)
El commit solo cierra los dataset usa commitretaining. Igual debe quedar colgado algún procedimiento para hacer. A partir de aquí desconozco porque no hago nunca referencia al ibtable directo para mostrar datos, siempre uso Query's.

Porque usas querys?


La franja horaria es GMT +2. Ahora son las 15:48:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi