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?

pelikno 02-05-2012 17:15:59

El problema es que no se actualizan las tablas y no se porque !! :mad:

MartinS 02-05-2012 17:22:14

Cita:

Empezado por pelikno (Mensaje 431565)
Porque usas querys?

Simplemente porque no es recomendable ni necesario en cualquier sistema que se muestren todos los registros. Es decir, cuando un usuario busca algo en particular sabe lo que necesita ver y nosotros debemos darle mas o menos la estructura de busqueda para que no se nos dispare la memoria del programa. Imaginate si la tabla tiene un millon de registros por ejemplo. Entonces solo limito lo que quiero mostrar.
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

Código Delphi [-]
   IbQuery1.close;
   IbQuery1.Sql.Clear;
   IbQuery1.Sql.Add(Select Apellido,Nombres,DNI,Direccion From Clientes);
   IbQuery1.Sql.Add(Where apellido = 'Perez')
   ibQuery1.Sql.Open;
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:

Casimiro Notevi 02-05-2012 17:26:52

Cita:

Empezado por pelikno (Mensaje 431570)
El problema es que no se actualizan las tablas y no se porque !! :mad:

Veamos:
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?

pelikno 02-05-2012 17:30:09

Cita:

Empezado por MartinS (Mensaje 431572)
Simplemente porque no es recomendable ni necesario en cualquier sistema que se muestren todos los registros. Es decir, cuando un usuario busca algo en particular sabe lo que necesita ver y nosotros debemos darle mas o menos la estructura de busqueda para que no se nos dispare la memoria del programa. Imaginate si la tabla tiene un millon de registros por ejemplo. Entonces solo limito lo que quiero mostrar.
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

Código Delphi [-]
   IbQuery1.close;
   IbQuery1.Sql.Clear;
   IbQuery1.Sql.Add(Select Apellido,Nombres,DNI,Direccion From Clientes);
   IbQuery1.Sql.Add(Where apellido = 'Perez')
   ibQuery1.Sql.Open;
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:

Entiendo lo que pasa que ente caso la tabla de localidades para dar de alta un inmueble por lo tanto tiene que estar todas porque no se sabe a priori cual es la correcta.
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

pelikno 02-05-2012 17:46:41

Cita:

Empezado por Casimiro Notevi (Mensaje 431575)
Veamos:
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?

Todo correcto excepto que para ver el nuevo precio en la terminal 2 tengo que cerrar mi aplicacion y volver a ejecutar y ahi si me muestra actualizada la base, como que se tiene que desconectar para poder actualizar la tabla no se porque :confused:

pelikno 02-05-2012 18:04:17

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:

pelikno 02-05-2012 18:21:57

Código Delphi [-]
procedure TForm1.localidadesAfterPost(DataSet: TDataSet);
begin

CustomerData.IBTransaction1.CommitRetaining;
CustomerData.ibdatabase.ApplyUpdates([localidades]);
localidades.ApplyUpdates;
localidades.Active:=false;
localidades.Active:=true; 
localidades.Refresh;


end;

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.

MartinS 02-05-2012 18:29:57

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)


Código Delphi [-]
procedure TDm.DataModuleCreate(Sender: TObject);
Var BaseDeDatos: String;
    IniFile: TIniFile;
begin
   // Obtiene la ruta y el nombre de la base de datos
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'BDatos.ini');
   BasedeDatos := IniFile.ReadString('BD','Path','');
   If BasedeDatos = '' then
    ShowMessage('Error al cargar Base de Datos') else
    BaseGeneral.DatabaseName := BaseDeDatos;
end;

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

pelikno 02-05-2012 18:36:32

Cita:

Empezado por MartinS (Mensaje 431587)
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)


Código Delphi [-]
procedure TDm.DataModuleCreate(Sender: TObject);
Var BaseDeDatos: String;
    IniFile: TIniFile;
begin
   // Obtiene la ruta y el nombre de la base de datos
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'BDatos.ini');
   BasedeDatos := IniFile.ReadString('BD','Path','');
   If BasedeDatos = '' then
    ShowMessage('Error al cargar Base de Datos') else
    BaseGeneral.DatabaseName := BaseDeDatos;
end;

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

Si probe copiar el ejecutable en el escritorio de la terminal y le coloque a la base de datos la ip del servidor, si no me equivoco es lo mismo que hiciste vos nada mas que no tomo la ip de un archivo. y no me actualiza cuando agrego algo me tira error de primary key

MartinS 02-05-2012 18:36:51

Cita:

Empezado por pelikno (Mensaje 431586)
Código Delphi [-]
procedure TForm1.localidadesAfterPost(DataSet: TDataSet);
begin

CustomerData.IBTransaction1.CommitRetaining;
CustomerData.ibdatabase.ApplyUpdates([localidades]);
localidades.ApplyUpdates;
localidades.Active:=false;
localidades.Active:=true; 
localidades.Refresh;


end;

El commitRetaining va despues del applyupdates.

MartinS 02-05-2012 18:38:40

Cita:

Empezado por pelikno (Mensaje 431589)
Si probe copiar el ejecutable en el escritorio de la terminal y le coloque a la base de datos la ip del servidor, si no me equivoco es lo mismo que hiciste vos nada mas que no tomo la ip de un archivo. y no me actualiza cuando agrego algo me tira error de primary key

¿Y como hiciste eso? Por codigo?.. no entiendo?

pelikno 02-05-2012 18:46:59

Cita:

Empezado por MartinS (Mensaje 431591)
¿Y como hiciste eso? Por codigo?.. no entiendo?

en la configuracion de la base le puse directamente la ip del servidor de mi aplicacion o sea 192.168.1.226, cuando se ejecuta en el servidor mi aplicacion es como la ip loopback porque se direcciona la base a la misma maquina, pero cuando se hace desde el cliente , la base apunta a la ip 192.168.226 cuando la localhost es 192.168.1.224 me explico ?
La ip de la base se la seteo directamente con 192.168.1.226:C:\Documents and Settings\virtualbox\Escritorio\misistema\mibase.FDB

pelikno 02-05-2012 18:58:54

Cita:

Empezado por MartinS (Mensaje 431590)
El commitRetaining va despues del applyupdates.

No actualiza :mad: con ese cambio

Casimiro Notevi 02-05-2012 19:20:25

Si usas los componentes IBX, yo nunca usé eso de "applyupdates" :confused:

En el evento afterpost del dataset debes hacer el commit, algo así:

Código Delphi [-]
procedure TDMmain.QRcentrosCosteAfterPost(DataSet: TDataSet); 
begin 
  DataSet.Transaction.CommitRetaining; 
end;

pelikno 02-05-2012 19:44:34

Cita:

Empezado por Casimiro Notevi (Mensaje 431596)
Si usas los componentes IBX, yo nunca usé eso de "applyupdates" :confused:

En el evento afterpost del dataset debes hacer el commit, algo así:

Código Delphi [-]
procedure TDMmain.QRcentrosCosteAfterPost(DataSet: TDataSet); 
begin 
  DataSet.Transaction.CommitRetaining; 
end;

CustomerData es mi datamodule
y esto es lo que esta en el evento afterpost de mi ibtable
Código Delphi [-]
CustomerData.ibtransaction.ApplyUpdates;
Localidades.refresh;

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

pelikno 02-05-2012 19:45:15

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.

Casimiro Notevi 02-05-2012 19:54:53

Cita:

Empezado por pelikno (Mensaje 431607)
Sera problema de delphi 5 y las componentes interbase ?

No, no es problema de delphi ni de los componentes, es problema de las confirmaciones de transacciones, ya te lo hemos repetido constantemente un montón de veces :confused:

¿Pero has probado lo que te hemos comentado?
:confused::confused::confused:

pelikno 02-05-2012 22:28:33

Cita:

Empezado por Casimiro Notevi (Mensaje 431610)
No, no es problema de delphi ni de los componentes, es problema de las confirmaciones de transacciones, ya te lo hemos repetido constantemente un montón de veces :confused:

¿Pero has probado lo que te hemos comentado?
:confused::confused::confused:

si si probe todo, fijate en los post anteriores que puse el codigo exactamente como lo tengo en el delphi ademas de la configuracion de las componentes.

Casimiro Notevi 02-05-2012 22:32:21

Cita:

Empezado por pelikno (Mensaje 431623)
si si probe todo,

¿Y qué resultados has obtenido?, ¿bien?, ¿algún mensaje?, ¿cómo has hecho la prueba?, ¿con qué código?...

pelikno 02-05-2012 23:20:57

Cita:

Empezado por Casimiro Notevi (Mensaje 431625)
¿Y qué resultados has obtenido?, ¿bien?, ¿algún mensaje?, ¿cómo has hecho la prueba?, ¿con qué código?...

ningun resultado :( hace lo mismo, o me actualiza, ahora estoy tratanto de compilar con delphi 2010 a ver si cambia pero no me conecta a la base remota estoy fijandome porque


La franja horaria es GMT +2. Ahora son las 17:38:07.

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