Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2014
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Consultas en cliente movil a un server Datasnap

Estimados.

Estoy realizando pruebas con los servidores DataSnap y aplicaciones mobiles. He visto casi todos los videos y ejemplos que hay los cuales me han funcionado, pero hasta ahora no he logrado hacer lo siguiente, necesito hacer consultas a "demanda" contra mi server dsanp y por lo que he visto hasta ahora, hay que "crear" las consultas previamente en el server para que pueda "publicarlas" al cliente.

O sea.. tengo el ds server con una FDConnection, una FDQuery y un TDataSetProvider. Me conecto a mi bd sin problemas.

Por otro lado tengo mi cliente movil con los componentes TSQLConnection ( apuntando al dnsap) , un DSProviderConnection y un TClientDaset ( apuntando al TDataSetProvider del server ).

Mi problema y aqui el motivo de la pregunta es como puedo hacer x ej. de agregar un tedit en el form
principal del cliente movil y obtener un dataset de una tabla cualquiera y obviamente asignarle el resultado a otros tedits. Se que debo utilizar parametros pero no me doy cuenta como y donde se lo indicio para que el server lo tome y me devuelva la respuesta que necesito. Se entiende?
Los componentes que uso en el cliente son los que deberia usar?

Uno esta acostumbrado a realizar consultas de ese tipo y con joins de varias tablas en aplicaciones comunes de escritorio pero con las moviles y los datasnap me las estoy viendo dificil.
Se puede hacer este tipo de consultas ???

Se agradece cualquier luz en el camino..

Saludos.
Responder Con Cita
  #2  
Antiguo 02-10-2014
edgargh edgargh is offline
Miembro
 
Registrado: jun 2006
Ubicación: León, Guanajuato
Posts: 25
Poder: 0
edgargh Va por buen camino
Hola, hay varias formas de hacerlo, yo lo manejo de la siguiente manera:

Del lado del servidor datasnap solo dejo la conexión y el dataset (Query o Table) enlazado a la conexion.

Ejemplo: Creo una funcion que se llama lista_estados que recibe de parametro una cadena con el nombre del pais sobre el cual deseo obtener el listado de los estados y el resultado lo regreso en un dataset

Código Delphi [-]
function TServerModule.lista_estados(Pais: string):TDataset;
begin
  qry_estados.Close;
  qry_estados.SQL.Clear;
  qry_estados.SQL.Add('select clave, nombre_estado ');
  qry_estados.SQL.Add('from estados ');
  qry_estados.SQL.Add('where nombre_pais='+quotedstr(pais));
  qry_estados.SQL.Add(' order by nombre_estado');
  qry_estados.Open;

  result:=qry_estados;
end;


De lado del cliente móvil agrego:

TSQLServerMethod.- lo nombro sm_estados y asocio las propiedades:

SQLConnection conexion_al_servidor_datasnap
ServerMethodName TServerModule.lista_estados
Params Nos aparecen 2 parametros: Pais (Entrada) y ReturnParameter (salida). Asociamos el tipo ftWideString al parametro Pais


TDatasetProvider.- lo nombro dsp_estados y le asocio en la propiedad Dataset el nombre de mi servermethod (sm_estados).

TClientDataSet .- lo nombro cds_estados y le asocio en la propiedad ProviderName el nombre de mi datasetprovider (dsp_estados)


Finalmente, hago mi consulta:
Código Delphi [-]
    sm_estados.close;
    sm_estados.Params.ParamByName('Pais').Value:=editpais.text;
    sm_estados.ExecuteMethod;
    sm_estados.SQLConnection.Close;
El resultado lo tengo en cds_estados y lo visualizo donde quiera. Saludos y espero sea lo que necesitas.

Última edición por ecfisa fecha: 02-10-2014 a las 01:32:15. Razón: etiquetas
Responder Con Cita
  #3  
Antiguo 03-10-2014
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Gracias Edgard por responder.

Ahora mi pregunta es, segun tu experiencia, es necesario definir previamente todas las consultas en el ds server antes de poder "usarlas" desde el cliente ? En otras palabras, es posible desde el cliente crear las consultas ( querys ) que necesite y que el ds server me responda ??? Como ??

Mil gracias

Saludos cordiales.
Responder Con Cita
  #4  
Antiguo 12-10-2014
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Buenas, esto no es una critica, solo expongo mi punto de vista al trabajar con datasnap.

La idea del trabajo con datasnap es un escenario de cliente-servidor, en la cual el cliente es quien se adapta al servidor y no el servidor al cliente. Imaginate que el servidor lo programa otra persona y vos no tenes acceso a modificarlo o agregarle funcionalidad directamente, basicamente es un "arreglate con lo que te doy, si no lo tengo lo lamento". Cuando estas en el cliente movil el servidor deberia ser una caja negra, no sabes exactamente como trabaja, solamente sabes que le pides algo y el cumple y te devuelve.

Dicho esto, yo creo que la forma correcta de trabajar con datasnap, es publicando todos los metodos necesarios en el servidor y que el cliente haga los llamados correspondientes. El cliente basicamente se encarga de, pedir informacion y luego presentarla, ordenarla , formatearla, como decimos aca, ponerla pipi cucu.

Saludos!
Responder Con Cita
  #5  
Antiguo 13-10-2014
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 AgustinOrtu Ver Mensaje
... el servidor deberia ser una caja negra, no sabes exactamente como trabaja, solamente sabes que le pides algo y el cumple y te devuelve.
Exactamente, esa es la filosofía cliente/servidor.
Responder Con Cita
  #6  
Antiguo 13-10-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por lbidi Ver Mensaje
En otras palabras, es posible desde el cliente crear las consultas ( querys ) que necesite y que el ds server me responda ??? Como ??
De la misma manera que lo harias en una app monolitca. Solo que en vez de tener todo acoplado (logica, GUI, datos, etc) lo desacoplas:

Código Delphi [-]

procedure CargarClientes(...)
begin
  Clientes := ServidorRemoto.ListarClientes(["Codigo", "Nombre"], TWhere(Campo="Codigo", Valor=1));
end;

function ListarCliente(ListaCampos, Filtros):TDataSet
---
P.D:
Ten en cuenta que una vez tenes un servidor expuesto en internet, no solo tu cliente sera el unico que exista. Estas abriendote a que te envien datos/comandos maliciosos (y ademas, tampoco debes confiar en *tu propio* cliente: Lee sobre injeccion de sql en google!)
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 13-10-2014
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Cita:
Empezado por mamcx Ver Mensaje
Ten en cuenta que una vez tenes un servidor expuesto en internet, no solo tu cliente sera el unico que exista. Estas abriendote a que te envien datos/comandos maliciosos (y ademas, tampoco debes confiar en *tu propio* cliente: Lee sobre injeccion de sql en google!)
Con respecto a este punto, podes usar autenticación y autorización de datasnap. Yo mucho no te puedo decir más que darte algún link que tengo ahí guardado pendiente de estudio para el día que realice algo en serio, de momento solo he jugado un poco con datasnap

edn.embarcadero.com/article/41267

Saludos!
Responder Con Cita
  #8  
Antiguo 15-10-2014
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Muchas gracias a todos por sus respuestas. Me han dado muchas ideas y sugerencias.

Saludos.
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
Servidor y cliente DataSnap cmfab Varios 9 11-09-2014 16:03:27
Ejemplo de un Cliente/Servidor Datasnap? kaiserilich Conexión con bases de datos 2 30-06-2014 17:21:49
Datasnap en el cliente da error tulio Desarrollo en Delphi para Android 12 10-06-2014 17:28:00
Datasnap y cliente android - Problema al conectar vicens22 Desarrollo en Delphi para Android 8 04-12-2013 11:13:28
Cliente/servidor o Datasnap u otros jgutti Varios 2 23-12-2010 18:54:21


La franja horaria es GMT +2. Ahora son las 01:48:50.


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