Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #41  
Antiguo 02-05-2012
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por pelikno Ver Mensaje
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
Y estas usando la base de datos correcta ¿? A alguien que conozco (el primo del amigo de la prima del amigo de mi prima) le pasó eso, estuvo dos días buscando el error y la conexión la tenia a la base de pruebas y no la de producción

Saludos
Responder Con Cita
  #42  
Antiguo 02-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Desde hace 14 años uso IBX con delphi 5, una gestión de cientos de clientes con centenares de terminales conectados a un servidor firebird.
No necesitas probar con otro delphi ni con otros componentes. El resultado va a ser el mismo.
Responder Con Cita
  #43  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Y estas usando la base de datos correcta ¿? A alguien que conozco (el primo del amigo de la prima del amigo de mi prima) le pasó eso, estuvo dos días buscando el error y la conexión la tenia a la base de pruebas y no la de producción

Saludos
si si la base es la correcta, ya que en la terminal 1 agrego un registro en la tabla y para verlo en la terminal 2 tengo que apretar el boton refresh del dbnavigator
Responder Con Cita
  #44  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Desde hace 14 años uso IBX con delphi 5, una gestión de cientos de clientes con centenares de terminales conectados a un servidor firebird.
No necesitas probar con otro delphi ni con otros componentes. El resultado va a ser el mismo.
Si eso es verdad pero no se como hacer ya, es como que si no apreto el boton refresh del navigator los datos de la grilla en las terminales no se actualiza, solo lo ve el que hizo el cambio.
Como ejecutas tu aplicacion en los clientes con el ejecutable o con acceso directo al ejecutable comartido en el servidor?
Responder Con Cita
  #45  
Antiguo 03-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
A ver, a ver...
Terminal 1: tienes un dbgrid asociado a un dataset y ese dataset es un ibtable.
Terminal 2: en ese mismo dbgrid->dataset (ibtable), añades un nuevo registro... en el otro (terminal 1) debes refrescar el dbgrid (o sea, el ibtable) para que se vea el nuevo registro.

Si estás haciendo eso, entonces... es que eso es normal, eso es así.

Ahora bien, si sales de esa pantalla en el terminal 1 y vuelves a entrar, entonces verás el nuevo registro que se ha añadido en el terminal 2. ¿Es así?
Responder Con Cita
  #46  
Antiguo 03-05-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Cita:
Empezado por pelikno Ver Mensaje
Si eso es verdad pero no se como hacer ya, es como que si no apreto el boton refresh del navigator los datos de la grilla en las terminales no se actualiza, solo lo ve el que hizo el cambio.
Como ejecutas tu aplicacion en los clientes con el ejecutable o con acceso directo al ejecutable comartido en el servidor?
Hola nuevamente. Hice una siesta y el tema sigue!!

Yo te propongo que pongas un par de DbEdit, un DbGrid, y unos Tbotton que graben, eliminen y demas para ver que hacen (Todo por codigo).

Si tenes algun problema con como hacer esto en un rato vuelvo. Me voy a inspirar por ahi

Saludos
Responder Con Cita
  #47  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por MartinS Ver Mensaje
Hola nuevamente. Hice una siesta y el tema sigue!!

Yo te propongo que pongas un par de DbEdit, un DbGrid, y unos Tbotton que graben, eliminen y demas para ver que hacen (Todo por codigo).

Si tenes algun problema con como hacer esto en un rato vuelvo. Me voy a inspirar por ahi

Saludos
jajaj gracias idolo, ahora lo pruebo ya que hace mas de 6 horas que estoy con esto !!!!!
Responder Con Cita
  #48  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Código Delphi [-]
procedure TForm1.ButtonappendClick(Sender: TObject);
begin
localidades.Append;
end;

procedure TForm1.ButtonpostClick(Sender: TObject);
begin
localidades.Post;
end;


procedure TForm1.localidadesAfterPost(DataSet: TDataSet);
begin
localidades.Transaction.CommitRetaining;
localidades.Refresh;
end;

end;

Puse dos botones para las altas y saque el dbnavigator, ahora cuando hago un alta en una terminal, en la grilla de la otra no se actualiza. tengo configurada la base y transaction de la misma forma que el tutorial pero en vez de poner localhost puse la ip 192.168.1.103:c:\misistema\mibase.fdb que es donde se encuantra el sistema con la base, tengo instalado en el servidor firebird 2.5 claasicserver igual que en la terminal para que no le falte ningun dll ni nada. Alguna idea ?
Responder Con Cita
  #49  
Antiguo 03-05-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Yo tengo algunas ideas pero creo que no te van a gustar:
1) Vuelve al principio del hilo y lee lo que pusiste y lo que te han venido diciendo los compañeros con calma, tranquilidad.
2) Repítase el paso 1) hasta que los nervios hayan desaparecido
3) Inspire y exhale profundamente 10 veces. Resople, deja que todo el aire salga de tus pulmones.
4) Cierra los ojos, despeja tu cabeza... no pienses en código... ni en base de datos... no pienses en nada.
5) Abre los ojos, vuelve a leer de nuevo el hilo desde el comienzo.
6) Lance una buena puteada al que le dió estas intrucciones.
7) Una vez ya que se haya descargado vuelva a leer y a seguir en serio las recomendaciones de los compañeros.
8) Vuelva al paso 7) hasta que se haya cansado
9) Una vez que se haya enojado de nuevo. Vuelvase a las recomendaciones del los compañeros. Agarre la biblia de las transacciones que le han recomendado. Apréndasela como el padre nuestro.
10) Aprenda de una vez que el sistema no es un adivino. ¿Como carajos se supone que por arte de magia aparezca lo cambiado en una aplicación en otra? SIEMPRE, PERO SIEMPRE se lleva a cabo un REFRESCO de datos. Los datos no aparecerán por arte de magia. "Algo" le debe indicar a la aplicación que los datos han cambiado; o bien debe implementarse que cada x tiempo se refresquen los datos.
10) Aprende sobre los eventos de firebird. Están diseñados para esto. El servidor notifica a TODOS los clientes con un evento. Luego los clientes capturan este evento y es responsabilidad de éstos en hacer luego lo que necesiten. Para el caso REFRESCAR. En la documentación oficial de Firebird hay un paper que es casi una obligación leerse. Como vez, OBVIAMENTE sea cual fuese la forma... magia no hay.

¿Quieres que aparezcan los datos? ¡Debes refrescar! Ya sea que cierres las forma y vuelvas a abrir, vuelvas a cerrar y abrir el data set... o vuelvas a ejecutar la consulta para traer los datos... Lo que haces en A se queda en A. Si B to Z necesitan saber lo que hizo A le deben "preguntar" al server.... Después de todo, es el quien en verdad sabe que cosas se han hecho.
Me parece a mi que no tienes ni idea de como es que funciona la arquitectura cliente/servidor.

Dependiendo del nivel de aislamiento de las transacciones podrás ver más o menos registros. Cuando haces un CommitRetaing mantienes la transacción abierta PARA ESE CLIENTE, PARA ESE DATASET. Más eso no quiere decir que los demás inmediatamente van a saberlo. ENTIENDELO DE UNA VEZ.

11) ¿Que carajos haces mezclando ApplyUpdate con un trabajo que no tiene nada que ver? ApplyUpdates solo sirve cuando se trata de un trabajo a nivel caché. Es decir, todo se hace en forma localmente de manera temporal y luego se vuelca todo en la base de datos, es casi parecido a como trabajar con TClientDataSet.
Si no tienes en la propiedad CacheUpdates en true estas haciendo algo que no tendrá efecto en nada porque naturalmente, no hay que actualizar.

12) Ya no le sigas más... mejor ve a otra cosa. Duerme. En cuanto tengas la cabeza en blanco recién vuelve.

13) No nos interesa el tiempo que te demores, aqui no hay urgencias asi que da lo mismo que te demores 50 días que te lleve 4 horas. La desesperación a la taberna, y te tomas una cerveza para pasar el mal sabor. No apures lo que no se puede apurar. Tu estas bloqueado y seguirás así si no te resignas a aceptar que por hoy ya no más.

14) Aprende a reconocer tus batallas, hasta cuando puedes y cuando no.
15) Putea de nuevo. Dale, ¡que te encanta!
16) Vuelve al inicio del hilo... ¿Ya leíste toda la documentación que te recomendaron o vas a seguir en la negación?

Saludos,
PD: 16 ideas de como no agradar a nadie. 16 maneras de como despertar a alguien... Depende de como lo desee mirar uno.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #50  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Yo tengo algunas ideas pero creo que no te van a gustar:
1) Vuelve al principio del hilo y lee lo que pusiste y lo que te han venido diciendo los compañeros con calma, tranquilidad.
2) Repítase el paso 1) hasta que los nervios hayan desaparecido
3) Inspire y exhale profundamente 10 veces. Resople, deja que todo el aire salga de tus pulmones.
4) Cierra los ojos, despeja tu cabeza... no pienses en código... ni en base de datos... no pienses en nada.
5) Abre los ojos, vuelve a leer de nuevo el hilo desde el comienzo.
6) Lance una buena puteada al que le dió estas intrucciones.
7) Una vez ya que se haya descargado vuelva a leer y a seguir en serio las recomendaciones de los compañeros.
8) Vuelva al paso 7) hasta que se haya cansado
9) Una vez que se haya enojado de nuevo. Vuelvase a las recomendaciones del los compañeros. Agarre la biblia de las transacciones que le han recomendado. Apréndasela como el padre nuestro.
10) Aprenda de una vez que el sistema no es un adivino. ¿Como carajos se supone que por arte de magia aparezca lo cambiado en una aplicación en otra? SIEMPRE, PERO SIEMPRE se lleva a cabo un REFRESCO de datos. Los datos no aparecerán por arte de magia. "Algo" le debe indicar a la aplicación que los datos han cambiado; o bien debe implementarse que cada x tiempo se refresquen los datos.
10) Aprende sobre los eventos de firebird. Están diseñados para esto. El servidor notifica a TODOS los clientes con un evento. Luego los clientes capturan este evento y es responsabilidad de éstos en hacer luego lo que necesiten. Para el caso REFRESCAR. En la documentación oficial de Firebird hay un paper que es casi una obligación leerse. Como vez, OBVIAMENTE sea cual fuese la forma... magia no hay.

¿Quieres que aparezcan los datos? ¡Debes refrescar! Ya sea que cierres las forma y vuelvas a abrir, vuelvas a cerrar y abrir el data set... o vuelvas a ejecutar la consulta para traer los datos... Lo que haces en A se queda en A. Si B to Z necesitan saber lo que hizo A le deben "preguntar" al server.... Después de todo, es el quien en verdad sabe que cosas se han hecho.
Me parece a mi que no tienes ni idea de como es que funciona la arquitectura cliente/servidor.

Dependiendo del nivel de aislamiento de las transacciones podrás ver más o menos registros. Cuando haces un CommitRetaing mantienes la transacción abierta PARA ESE CLIENTE, PARA ESE DATASET. Más eso no quiere decir que los demás inmediatamente van a saberlo. ENTIENDELO DE UNA VEZ.

11) ¿Que carajos haces mezclando ApplyUpdate con un trabajo que no tiene nada que ver? ApplyUpdates solo sirve cuando se trata de un trabajo a nivel caché. Es decir, todo se hace en forma localmente de manera temporal y luego se vuelca todo en la base de datos, es casi parecido a como trabajar con TClientDataSet.
Si no tienes en la propiedad CacheUpdates en true estas haciendo algo que no tendrá efecto en nada porque naturalmente, no hay que actualizar.

12) Ya no le sigas más... mejor ve a otra cosa. Duerme. En cuanto tengas la cabeza en blanco recién vuelve.

13) No nos interesa el tiempo que te demores, aqui no hay urgencias asi que da lo mismo que te demores 50 días que te lleve 4 horas. La desesperación a la taberna, y te tomas una cerveza para pasar el mal sabor. No apures lo que no se puede apurar. Tu estas bloqueado y seguirás así si no te resignas a aceptar que por hoy ya no más.

14) Aprende a reconocer tus batallas, hasta cuando puedes y cuando no.
15) Putea de nuevo. Dale, ¡que te encanta!
16) Vuelve al inicio del hilo... ¿Ya leíste toda la documentación que te recomendaron o vas a seguir en la negación?

Saludos,
PD: 16 ideas de como no agradar a nadie. 16 maneras de como despertar a alguien... Depende de como lo desee mirar uno.
las cosas que probe fueron las que pusieron con la mejor voluntad casimiro y martins que lamentablemente no tuve solucion, por eso puse en este hilo toda la info para que me ayuden a saber cual es el problema, se como funciona un cliente servidor , por eso como estoy migrando esta aplicacion que con sqlserver funcionaba correctamente,configurando los odbc de windows y utilizando los drivers del mismo. Por eso quiero ahora hacer lo mismo pero con firebird , estoy usando interbase para conectar y ejecuto el sistema desde las terminales directamente desde el ejecutable, tengo claro que el problema es con la base y los commits o algo que no le informa a los clientes de los cambios en la base , por ese motivo es que abri este hilo para saber si el diseño y las componentes utilizadas eran las correctas.
Código Delphi [-]
procedure TForm1.localidadesAfterPost(DataSet: TDataSet);
begin
 //CustomerData.IBTransaction1.CommitRetaining;
//localidades.Transaction.CommitRetaining;
localidades.Close;
localidades.Open;
localidades.Refresh;
end;
esto lo unico que hace es actualizar los datos pero de la terminal la cual se modifico. Puede ser por instalar mal firebird en los clientes ?
Responder Con Cita
  #51  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
http://www.delphiaccess.com/forum/de...base-de-datos/
En ese hilo tratan un poco del tema y al parecer es como decia todo lo que realizan las terminales no se informa a los clientes a no ser que sea por algun evento para informarles del cambio. Uds que tienen aplicaciones conectadas con firebird cliente/servidor como hacen para informar de cambios en la base ??
Responder Con Cita
  #52  
Antiguo 03-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que no has leido todo lo que hemos contestado
Responder Con Cita
  #53  
Antiguo 03-05-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Cita:
Empezado por pelikno Ver Mensaje
http://www.delphiaccess.com/forum/de...base-de-datos/
En ese hilo tratan un poco del tema y al parecer es como decia todo lo que realizan las terminales no se informa a los clientes a no ser que sea por algun evento para informarles del cambio. Uds que tienen aplicaciones conectadas con firebird cliente/servidor como hacen para informar de cambios en la base ??
Entonces el tema estaba resuelto desde el principio? y lo que necesitabas era como que automáticamente al modificar un registro del servidor y/o cliente se reflejara sin hacer absolutamente nada en el cliente y/o servidor?
Responder Con Cita
  #54  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Creo que no has leido todo lo que hemos contestado
Si por eso pregunto el commitRetaining es el evento que commitea y avisa que se actualien los clientes ? porque sigue sin actualizar, no encuentro la forma.
Responder Con Cita
  #55  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por MartinS Ver Mensaje
Entonces el tema estaba resuelto desde el principio? y lo que necesitabas era como que automáticamente al modificar un registro del servidor y/o cliente se reflejara sin hacer absolutamente nada en el cliente y/o servidor?
El tema no lo solucione ya que no puedo actualizar mas que a la terminal que realiza los cambios, como hacen uds para hacer un commit en la base he informe a los clientes de los cambios para actualizar porque abrir y cerrar el dataset lo unico que afecta es a la aplicacion local y no al resto de las terminales
Responder Con Cita
  #56  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
1- instale firebird 2.5 CS en la maquina servidor
2-instale firebird 2.5 solo cliente en una terminal
3- coloque en la maquina servidor una carpeta con el ejecutable y la base de datos
4- comparti esa carpeta en internet
5-en la terminal ejecute el sistema directamente de la carpeta compartida del servidor
6-ejecute mi aplicacion tb en el servidor
7-doy de alta un registro con el servidor el cual no se ve reflejado en la terminal.
8-quiero dar de alta el mismo registro en la terminal ya que no figura pero me tira error de primary key, o sea que si se hizo el commit en la base pero la terminal no se entero.

El punto 8 como lo puedo solucionar ?
Responder Con Cita
  #57  
Antiguo 03-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Amigo, insisto, no has leido todo lo que hemos escrito
Responder Con Cita
  #58  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
A ver, a ver...
Terminal 1: tienes un dbgrid asociado a un dataset y ese dataset es un ibtable.
Terminal 2: en ese mismo dbgrid->dataset (ibtable), añades un nuevo registro... en el otro (terminal 1) debes refrescar el dbgrid (o sea, el ibtable) para que se vea el nuevo registro.

Si estás haciendo eso, entonces... es que eso es normal, eso es así.

Ahora bien, si sales de esa pantalla en el terminal 1 y vuelves a entrar, entonces verás el nuevo registro que se ha añadido en el terminal 2. ¿Es así?
Te referias a eso que no lei?. Si lo vi, pero como hago para solucionarlo ya que no esta bueno, por medio de un trigger en la base o con un timer que refesque las grillas o algo que cuente los registros de las tablas en la base !!
Responder Con Cita
  #59  
Antiguo 03-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No, te hablo del documento sobre las transacciones y también sobre post_event.
Además del funcionamiento cliente/servidor.
Responder Con Cita
  #60  
Antiguo 03-05-2012
pelikno pelikno is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 95
Poder: 14
pelikno Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si usas los componentes IBX, yo nunca usé eso de "applyupdates"

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;
Esto lo realizo !!
Código Delphi [-]
procedure TForm1.localidadesAfterPost(DataSet: TDataSet); 
begin 
  localidades.Transaction.CommitRetaining; // si dejo  DataSet.Transaction.CommitRetaining; no compila 
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Diseño de Sistema magnu9 Varios 14 16-10-2007 05:27:53
Consulta con diseño de BD Petolansa Varios 7 11-08-2007 02:30:01
en diseño web miamuxi Conexión con bases de datos 6 19-01-2007 20:13:50
Diseño pepelu1975 Varios 1 31-05-2004 09:55:36
duda en el diseño wonder boy SQL 3 31-03-2004 19:55:06


La franja horaria es GMT +2. Ahora son las 22:12:02.


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
Copyright 1996-2007 Club Delphi