Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Interbase 3 capas (https://www.clubdelphi.com/foros/showthread.php?t=18488)

StartKill 14-02-2005 16:05:16

Interbase 3 capas
 
Wnas amigos del foro,

Trabajo con Delphi 7.0 Interbase 7.5 y utilizo componentes IBX

Tratare de poner my problem en la meza ;-)

Tengo una aplicacion, esta contiene componentes ibx para la conexion de una tabla.... detallo..

Código:

un IBDataBase conecta a mi base datos
un IBTransacction configurada asi:
    read_committed
    rec_version
    nowait

un ibquery selecionando mi tabla: select * from articulos
un ibupdate para el mantenimiento de mi tabla
un IBEvents, para saber si hay algun cambio en mi tabla por otro usuario
"Este ibvents me pinta un label en mi formulario
indicandome si la tabla a sufrido un cambio por otro usuario y de esa
forma se puede optar por tomar la descicion de refrescar o no los datos."

Lo antes mencionado me funciona correctamente no tengo quejas de ello, el problema surge cuando lo llevo a tres capas, asi:

Creo un aplicación nueva: (esta sera mi servidor de aplicaciones)

En esta nueva apliacion inserto un Remote Data Module asi:

File, New, Other..., Multitierm, Remote Data Module

En este Remote data module inserto:

Código:

un IBDataBase conecta a mi base datos
un IBTransacction configurada asi:
    read_committed
    rec_version
    nowait

un ibquery selecionando mi tabla: select * from articulos
un ibupdate para el mantenimiento de mi tabla
y por ultimo un IBEvents, para saber si hay algun cambio en mi tabla por otro usuario
(Este ibvents que deberia utilizarlo para informar
a las aplicacion cliente si la tabla a sufrido un cambio por otro(s) usuario(s)


y por ultimo DataSetProvider para poder entrelazar con mi programa cliente

Grabo, complilo.... y listo tengo mi servidor de aplicaciones

Luego creo mi aplicacion cliente que se comunicara con mi servidor de aplicaciones.

Creo un nuevo projecto inserto los siguientes componentes:
Código:

un WebConnection para poder conectarme a mi servidor de aplicaciones
un ClientDataSet1 que se conectara a DatasetProvider del servidor de
aplicaciones
Un Datasource para mi grid

Tambien funciona, casi perfecto-salvo un detalle, no se como utilizar el componente IBEvents en mi aplicacion cliente

Neftali [Germán.Estévez] 14-02-2005 16:09:53

¿Y el problema cual es? :D

StartKill 14-02-2005 16:40:42

Wnas amigos del foro,

Trabajo con Delphi 7.0 Interbase 7.5 y utilizo componentes IBX

Tratare de poner my problem en la meza ;-)

Tengo una aplicacion, esta contiene componentes ibx para la conexion de una tabla.... detallo..

Código:

un IBDataBase conecta a mi base datos
un IBTransacction configurada asi:
    read_committed
    rec_version
    nowait

un ibquery selecionando mi tabla: select * from articulos
un ibupdate para el mantenimiento de mi tabla
un IBEvents, para saber si hay algun cambio en mi tabla por otro usuario
--**Este ibvents me pinta un label en mi formulario
indicandome si la tabla a sufrido un cambio por otro usuario y de esa
forma se puede optar por tomar la descicion de refrescar o no los datos.

Lo antes mencionado me funciona correctamente no tengo quejas de ello, el problema surge cuando lo llevo a tres capas, asi:

Creo un aplicación nueva: (esta sera mi servidor de aplicaciones)

En esta nueva apliacion inserto un Remote Data Module asi:

File, New, Other..., Multitierm, Remote Data Module

En este Remote data module inserto:

Código:

un IBDataBase conecta a mi base datos
un IBTransacction configurada asi:
    read_committed
    rec_version
    nowait

un ibquery selecionando mi tabla: select * from articulos
un ibupdate para el mantenimiento de mi tabla
y por ultimo un IBEvents, para saber si hay algun cambio en mi tabla por otro usuario
(Este ibvents que deberia utilizarlo para informar
a las aplicacion cliente si la tabla a sufrido un cambio por otro(s) usuario(s)


y por ultimo DataSetProvider para poder entrelazar con mi programa cliente

Grabo, complilo.... y listo tengo mi servidor de aplicaciones

Luego creo mi aplicacion cliente que se comunicara con mi servidor de aplicaciones.

Creo un nuevo projecto inserto los siguientes componentes:
Código:

un WebConnection para poder conectarme a mi servidor de aplicaciones
un ClientDataSet1 que se conectara a DatasetProvider del servidor de
aplicaciones
Un Datasource para mi grid

Tambien funciona, casi perfecto-salvo un detalle, no se como utilizar el componente IBEvents en mi aplicacion cliente :confused: :confused:

A la espera de su ayuda,

Your friend,

StartKill
Lima-Perú

Nota: Mil perdones amigo Neftali, sin querer presione el boton enviar en vez del boton Vista previa, razon por la cual no se indicaba mi problema.. gracias

rastafarey 15-02-2005 18:17:23

respuesta
 
Yo tengo una aplicacion tres capas pero uso otra cosa.

Yo trabajo con asta y solo envio codigo para pedir datos al servidor de aplicaciones.

Y este envia paketes conteniedo los resusltado el date set de memoria y es aqui que los muestro.

Y cuando voy modificar envio la data.

y si quiero que halla la notificacion de cambios cuando llegue algun cabio de alguan tabla solo envio un mensaje al cliente donde le modifico la data cambio
y que el cleinte decida que debe hacer
pero no actualizao directamente para no molestar su trabajo.


No se si esto te ayude pero fue la mejor opcion despues de probar muchas.

StartKill 16-02-2005 18:20:35

Holas foros, rastafarey gracias por contestar.

Cita:

Empezado por rastafarey
Yo trabajo con asta y solo envio codigo para pedir datos al servidor de aplicaciones.

"asta"??? hay alguno gratuito?

Cita:

Empezado por rastafarey
y si quiero que halla la notificacion de cambios cuando
llegue algun cabio de alguan tabla solo envio un mensaje al cliente donde le modifico la data cambio

Mi preguntas son:
Como notificas a los otros clientes del cambio efectuado por alguno de ellos?,
La notificacion los hace el servidor de aplicaciones (capa intermedia)


Your friend

StartKill
Lima-Perú
[email protected]

rastafarey 17-02-2005 19:35:45

respuesta
 
te pondo un jemplo claro

Tienes los codigos siguientes.

1 Para pedir la lista de articulos(articulos es una tabla)
2 Para insertar un articulo
3 Para que refrescar los articulos en los clientes des el servidor
4 Para decir al cliente que la insercion se ejecuto bien
5 Para decir al cliente que la insercion no se pudo ejecutar

Como lo estoy plantendo el cliente no s eentera que esta pasando en el servidor, es mas este no sabe no con que base de datos esta trabajando.

Si el cliente te envia una el codigo 2 ya sabes que debes leer los parametros a insertar.

Ejecutas la insercion. Ves que no hubo error le notificas al mismo cliente que envio, que todo estubo perfecto enviandop el codigo 4.

Y luego a al resto de las conexiones le envias el codigo 3 de esta manera el claiente lee los datos del registro que se inserto y lo inserta en el dataset
de articulos.

Estan sencilo todo esto ya que quien tiene el control total de las modificaciones que se le aplican a als bas de datos es el servidor de aplicaciones.

StartKill 17-02-2005 19:44:40

Correcto... ;)

Pero mi duda es:

Como haces para que el servidor de aplicaciones envie la
notificacion al cliente??-en tu respuesta dice que envias un
mensaje al cliente, como lo haces..perdon mi ignorancia.

Debo suponer que el cliente no esta leyendo continuamente
los datos del servidor.

Por ello mi duda, con que componente, propiedad..., haces,
envias, notificas al cliente???

A la espera de tu ayuda

Your friend

StartKill
Lima-Perú

rastafarey 17-02-2005 20:01:29

Eventos
 
Son multiples eventos
que por aqui no te lo spuedo explicar sonmuchos.

Pero te puedes basjar lo asta de evaluacion y los pruebas.

Para que veas que es mas cencillo de lo te digo.

Mira tienes un correo abrelo.


La franja horaria es GMT +2. Ahora son las 14:55:15.

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