Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Consultas a un servidor de aplicaciones (https://www.clubdelphi.com/foros/showthread.php?t=65719)

ElDuc 08-01-2010 20:03:04

Consultas a un servidor de aplicaciones
 
Buenas tardes delphinianos.

Después de multitud de pruebas y consultas por internet he conseguido mi proposito, acceder a una base de datos que está ubicada en el server de la empresa desde mi casa.

La intención es crear un servidor de aplicaciones (por capas) de tal forma que los clientes, cuando necesitan acceder a la DB, en realidad la petición la hagan al servidor de aplicaciones y este a la DB.

Esto me permitiría mantener los clientes desconectados de la DB puediendo proteger la DB del exterior y permitiéndome hacer acciones sobre las peticiones y respuestas de los clientes desde el servidor de aplicaciones.

Para que podáis comprender mejor mi problema explicaré brevemente lo que he desarrollado:

SERVER:
He creado un proyecto y le he añadido un RemoteDataModule, en éste he incorporado un TADOConnection, un TADOQuery y un TDataSetProvider. Todo debidamente configurado y con el puerto declarado en el TADOConnection abierto.

CLIENT:
He creado un proyecto y le he añadido un TSocketConnection (porque es el único que me ha funcionado), un TClientDataSet (porque es el único que me ha funcionado), un TDataSurce y un TDBGrid, todo debidamente configurado.

TODO ESTO FUNCIONA, pero no como yo desearía, ya que me devuelve todo el contenido de la tabla que hay en la DB.

Yo necesito que me devuelva uno o varios registros en función de una consulta SQL, ya que no es lógico descargar toda la tabla para editar sólo un registro y además, si la tabla es grande, tarda una eternidad. He probado con los filtros del TClientDataSet pero igualmente carga toda la tabla aunque sòlo me muestra los registros filtrados.

Si podéis ayudarme me haréis un buen favor.

voldemmor 10-01-2010 21:46:05

tsocketserver
 
Hola amigo como te va.

La verdad de la manera que trabajas no lo he hecho y no cuento con mucha experiencia. Por lo cual espero poder ayudarete con lo que digo.

Que te parece mejor si en el server:
Inicias un socket (Tsocketserver) ni no me equivoco en el nombre del componente. que te escuche a los clientes, y acepte cadenas de texto(sentencias sql) y te envie un array de objetos o a su vez objeto a objeto.

las cadenas sql las mandas contra tu bd y las respuestas de tu bd las formates y las envias

en tu cliente:
COn tu tsocketclient te conectas a tu server(ya lo tienes), envias tus sql y recives tus objetos, los interpretas y los muestras.


Si no me equiboco hay un ejemplo que viene con delphi.

Espero todo te salga de lo mejos

ElDuc 10-01-2010 21:49:38

Tema pendiente
 
Hola otra vez,

Veo que nadie me puede ayudar, no sé si es porque no he puesto el hilo en el foro adecuado, si es asi os agradeceré que me digáis donde debo ponerlo.

Gracias.:)

ElDuc 10-01-2010 21:54:04

Gracias voldemmor,

Me contestaste mientras yo reclamaba ayuda.

Lo probaré, pero te agradecería me indicaras como se pasan los objetos, porque yo he hecho alguna cosa con strings y arrays de bytes pero nunca con objetos (clases)

Gracias otra vez.

fjcg02 11-01-2010 17:14:11

Hola,
has leido estos artículos ?
http://delphiallimite.blogspot.com/s...s%20de%20datos

Por otro lado, si utilizas TADOQuery podrás ejecutar 'select * from tabla where campo=XX', con lo que filtrarías el resultado de las consultas enviado a los clientes. Lógicamente, tendrás que romperte la cabeza para que desde el cliente te indiquen los clientes que quieren ver ( 10 debería ser el máximo para aplicaciones de este calado ), para 'montar' la query en base a los datos que el cliente te haya introducido. Así, en base a parámetros o generando la query dinámicamente, reducirías el resultado de la consulta.

Espero haberte ayudado.

Saludos

voldemmor 13-01-2010 15:00:25

con strings
 
hola la verdad yo tampoco he usado este tipo de conexion en delphi, en un curso de la Universidad me explicaron sobre el tema pero sobre .net 2005(que mas toca si el profe solo maneja eso jaja).

Si ya sabes usar strings que te parece si separas cada campo de tu registro mediante un caracter(, ; /) o algun otro como te acomodes.
Y en el servidor interpretas tu cadena y separas tus campos mediante ese caracte.

El orden de los campos como los envies y los recibas corre por tu cuenta.

Suerte y espero te salga todo bien


La franja horaria es GMT +2. Ahora son las 23:29: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