Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-05-2018
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Datasnap Duda

Hola a todos.

TEngo una aplicación cliente-servidor (dataSnap) en delphi 10 con firebird.

Y se me ha ocurrido la maravillosa idea de que el servidor cada cierto tiempo envíe unos emails automáticamente según un filtro que debo hacer de unos registros de la base de datos.
Tengo lo siguiente en el servidor:
- ServerMethodsUnit1. (donde van todas las funciones que llamo desde el cliente).
- UPrincipal. Es la unidad donde está el formulario principal del servidor, es decir, la pantalla que se muestra cuando se ejecuta el servidor.
- ServerContainerUnit1.

Cuando desde la aplicación cliente llamo a una función del servidor no me da ningun problema.

Pero, ahora bien, he colocado un timer1 en el formulario principal del servidor(UPrincipal) y quiero llamar cada cierto tiempo a una funcion que está en ServerMethosUnit1 y no puedo me da error. ¿ cómo lo puedo hacer?.

Espero haberme explicado. GRacias.
Responder Con Cita
  #2  
Antiguo 18-05-2018
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Dificil saber que puedes hacer sin que sepamos cual es el mensaje de error . De todas formas voy a suponer que es un problema de "visibilidad" debido a que la función a la que quieres llamar está definida en alguna sección private de alguna clase de la unidad ServerMethosUnit1 y no en la sección public de dicha clase. Siguiendo con la suposición, y considerando que la función a la quieres llamar es una función global (no una función definida en la clase), dicha función seguramente está definida en la implementación (invisible para cualquier otra unidad) y no en la interface de la unidad ServerMethosUnit1 (donde si puede ser accedida por otras unidades del proyecto).
Responder Con Cita
  #3  
Antiguo 18-05-2018
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
La instancia del DSServer, se crea al conectarse un cliente. Si la ejecutas desde el propio servidor, no existe esa instancia... por lo que da error...
Por definicion, el servidor da un servicio a las apps clientes, crea una instancia y procesa sus llamadas... por si solo no debe hacer nada...

Debes crear una app cliente, que llame al servidor cada X tiempo (TTimer) para llamar a la función que envie lo mails...
Responder Con Cita
  #4  
Antiguo 18-05-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por iMia Ver Mensaje
La instancia del DSServer, se crea al conectarse un cliente. Si la ejecutas desde el propio servidor, no existe esa instancia... por lo que da error...
Por definicion, el servidor da un servicio a las apps clientes, crea una instancia y procesa sus llamadas... por si solo no debe hacer nada...
Debes crear una app cliente, que llame al servidor cada X tiempo (TTimer) para llamar a la función que envie lo mails...

Por norma debería ser así, un servidor es un servidor... y un cliente es un cliente.
El camarero (servidor) no debería enviar emails a cada rato
Responder Con Cita
  #5  
Antiguo 19-05-2018
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Gracias a todos por contestar.

Lo he solucionado sacando la definición de la función fuera de implementation y definiéndola en la interface.

Ahora, me he quedado pillado con lo que ha dicho Casimiro. Si resulta que el usuario tarda en conectarse varios días. Cómo le hago llegar los emails, si no es a través del servidor??, ya que el cliente no se conecta. Y esos email tienen que llegar aunque no esté conectado.

Saludos y gracias.
Responder Con Cita
  #6  
Antiguo 19-05-2018
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Cita:
Empezado por usuario1000 Ver Mensaje
Gracias a todos por contestar.

Lo he solucionado sacando la definición de la función fuera de implementation y definiéndola en la interface.

Ahora, me he quedado pillado con lo que ha dicho Casimiro. Si resulta que el usuario tarda en conectarse varios días. Cómo le hago llegar los emails, si no es a través del servidor??, ya que el cliente no se conecta. Y esos email tienen que llegar aunque no esté conectado.

Saludos y gracias.



Me contesto a mí mismo, porque me he dado cuenta, porque lo que debo hacer es un nuevo proyecto enlazando al servidor para solicitar los datos y a partir de ahí generar emails.


Gracias por vuestros aporte, porque me han dado el camino a seguir.


Saludos.
Responder Con Cita
  #7  
Antiguo 19-05-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Responder Con Cita
  #8  
Antiguo 21-05-2018
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Cita:
Empezado por usuario1000 Ver Mensaje
Me contesto a mí mismo, porque me he dado cuenta, porque lo que debo hacer es un nuevo proyecto enlazando al servidor para solicitar los datos y a partir de ahí generar emails.


Gracias por vuestros aporte, porque me han dado el camino a seguir.


Saludos.
Es lo que decía más arriba... crear una app cliente, o bien un servicio, donde puedas configurar el tiempo de llamada, y varias cosas que tu quieras parametrizar (Datos del servidor, cuenta de correo a utilizar, log, aviso de tarea realizado o fallada, etc, etc...) , y que sea esa app o servicio la que llame al sevidor para hacer que haga el trabajo... este puede estar instalado en el mismo equipo del servidor, no hace falta que sea remoto, así no te lo pararán ni nada...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
DataSnap TomasChavezJ Desarrollo en Delphi para Android 4 29-01-2015 18:38:50
DataSnap y XML rchavezh Providers 5 12-07-2013 23:23:15
DataSnap o LAMP Chris Debates 70 24-07-2012 19:42:48
datasnap jgutti Varios 1 23-12-2011 15:25:20
Duda sobre DataSnap Mauro Daniel Providers 3 02-03-2011 21:07:09


La franja horaria es GMT +2. Ahora son las 11:49:04.


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