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 !! |
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.- |
Cita:
|
Cita:
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.
|
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 ;) |
Cita:
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 ;) |
|
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.
|
Cita:
Cita:
Cita:
|
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.
|
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: |
Cita:
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. |
Cita:
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. |
Cita:
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 |
Cita:
|
Cita:
|
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
y para actualizar con un simple
me funciona |
Cita:
|
Cita:
|
Cita:
|
El problema es que no se actualizan las tablas y no se porque !! :mad:
|
Cita:
Por otro lado las consultas se ejecutan en el servidor y enviar todos (y digo todos) los datos por red puede ser demasiado engorroso y saturar todo facilmente. Por ello mis consultas son del tipo Donde solo traera los Perez y si quiero editar un registro, primero lo busco y solo traigo el que me interesa Mas o menos es así :o En cuanto a las tablas si cerras y volves a abrir los cambios estan tiene que ser tema de refresco pero ahi como ya te dije mucho no se.:confused: |
Cita:
Terminal 1: abres la ficha de artículos, buscas el artículo 'A001' y lo tienes en pantalla. Terminal 2: abres la ficha de artículos, buscas el artículo 'A001' y lo tienes en pantalla. En el terminal 1 modificas el precio del artículo. Haces 'post' y 'commitretaining'. En el terminal 2 sigues viendo la pantalla con el precio anterior, si vuelves a buscar el mismo artículo entonces te aparecerá con el nuevo precio. ¿Es eso? |
Cita:
Me podrías decir de las opciones del transaction cual seria la correcta en este caso para cuando realizo un cambio que no espere para hacer commit y se realice al instante ?:o |
Cita:
|
ademas la base si se actualiza porque por ejemplo
-terminal 1 agrego la localida con codigo 2 la grilla muestra cod nombre 1 loc1 2 loc2 -la terminal 2 muestra o sea no se actualizo cod nombre 1 loc1 -la terminal 2 intento agregar localidad con codigo 2 me tira error de primarykey o sea que si se agrego en la base pero la tabla no lo refleja :confused: |
Estado de mi transaction active = true defaultaction =tacommit defauldatabase = ibdatabase Idletimer = 0 name =ibtransaction params = read_committed rec_version nowait tag = 0 estado de mi base de datos connected= true databasename = 192.168.1.226:C:\Documents and Settings\virtualbox\Escritorio\misistema\mibase.FDB defaultransaction = IBTransaction Idletimer = 0 loginpromt = false name = ibdatabase params = user_name=SYSDBA password=masterkey sql_role_name=3 lc_ctype=ISO8859_1 sqldialect = 3 tag = 0 traceflags = todas en false ---------------------------------- las ibtables tiene como database =CustomerData.ibdatabase y no se de alguna propiedad que tenga que modificar para que se actualice como tiene la componenete tquery la propiedad requestlive. |
A ver vamos por parte dijo JACK :D:D
Yo para los datos uso un TDataModule y este el procedimiento cuando se crea (pone en uses IniFiles)
Lo que hace es leer un archivo .ini que se encuentra en el mismo directorio del ejecutable tomando la ruta de la base de datos Dentro del .ini (BDatos.ini) tiene solo esto (Cliente/servidor): [BD] Path=":C:\Desarrollos\RegistroGeneral\MASTERBASE.FDB" y en la maquina cliente por decirlo de alguna manera tengo en un directorio la copia del ejecutable pero el ini de esa maquina dice esto: [BD] Path="10.151.129.138:C:\Desarrollos\RegistroGeneral\MASTERBASE.FDB" donde esa IP es donde esta la Base de datos. Resumiendo tengo dos ejecutables, uno en el cliente/servidor y otro en el cliente pero con diferente Ini. No se si me explico.- Proba algo similar |
Cita:
|
Cita:
|
Cita:
|
Cita:
La ip de la base se la seteo directamente con 192.168.1.226:C:\Documents and Settings\virtualbox\Escritorio\misistema\mibase.FDB |
Cita:
|
Si usas los componentes IBX, yo nunca usé eso de "applyupdates" :confused:
En el evento afterpost del dataset debes hacer el commit, algo así:
|
Cita:
y esto es lo que esta en el evento afterpost de mi ibtable
sigue haciendo lo mismo, es como si desde la base de datos no les mande el aviso que se modificaron los datos y se vuelva a mostrar en la grilla, doy de alta una localidad con codigo 4 en una terminal y en la otra no la veo hasta que no cierro la aplicacion y la vuelvo abrir |
Sera problema de delphi 5 y las componentes interbase ?
Voy a ver si puedo compilar con delphi 10 a ver que pasa porque es algo muy simple lo que quiero hacer y no se que pasa que no anda y me estoy volviendo loco. |
Cita:
¿Pero has probado lo que te hemos comentado? :confused::confused::confused: |
Cita:
|
Cita:
|
Cita:
|
La franja horaria es GMT +2. Ahora son las 23:05:23. |
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