Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-07-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Question Como capturar sentencia SQL desde el lado cliente?

Hola!, Estoy realizando una aplicación datasnap (ex midas) en delphi 2010 y me tope con un inconveniente ya que necesito obtener la sentencia SQL desde una función en la aplicación cliente. El problema es que los componentes DataSetProviderConnection + ClientDataSet que son lo que usamos del lado cliente ninguno trabaja con las sentencias ya que estos leen los datos del servidor donde se encuentra el SQLDataSet, que es el que tiene el CommnandText.
¿Alguien a podido obtener la sentencia SQL a partir de un ClientDataSet de la capa cliente?
Responder Con Cita
  #2  
Antiguo 11-07-2012
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Normalmente los RBDMS tienen funciones para obtener las últimas instrucciones ejecutadas por cada conexión, obviamente que esto difiere en cada motor. Desconozco que motor usas y si te serviría averiguar esta info por esos lados...

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 11-07-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Jere_84 Ver Mensaje
[...] necesito obtener la sentencia SQL desde una función en la aplicación cliente [...] ¿Alguien a podido obtener la sentencia SQL a partir de un ClientDataSet de la capa cliente?
Creo que podrías apoyarte en los propios eventos de TDataSetProvider y TClientDataSet (como el evento AfterGetRecords de este último), pero antes explica por favor la razón de esa necesidad.
Responder Con Cita
  #4  
Antiguo 11-07-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Gracias

Bueno buscare con respecto a estos temas, el porque de todo esto es que estoy migrando una aplicación cliente/servidor de delphi 6 al datasnap de delphi 2010. Muchas de las funciones que estaban creadas estoy viendo si se pueden reutilizar o por lo menos algunas lineas de ellas.
Responder Con Cita
  #5  
Antiguo 17-07-2012
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 485
Poder: 17
Neeruu Va por buen camino
Cool

Hola si lo que utilizas es Interbase o Firebird... Hay aplicaciones como Sinatica Monitor o InterBase Performance Monitor que te permiten capturas las consultas e incluso analizar el rendimiento, ver desde que puesto de trabajo se ejecuto y otras cosas mas....


Espero que te sirva...

Saluda atte Neeruu!!!
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #6  
Antiguo 01-08-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Cool Bueno una posible solución

utilizando el consejo de Al Gonzalez:

Es utilizar el evento BeforeGetRecords del DataSetProvider ubicado en la aplicacion servidor, con algo parecido a lo siguiente:

Código Delphi [-]
procedure TDSServerModule.DataSetProviderBeforeGetRecords(
  Sender: TObject; var OwnerData: OleVariant);
begin
  OwnerData := SQLDataSet.CommandText;
end;

y se obtiene la sentencia en la aplicacion cliente, en el AfterGetRecords del ClientDataSet:

Código Delphi [-]
procedure TDataModuleIndi.ClientDataSet1AfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
var
  ClienteSQL: string;
begin
  ClienteSQL := OwnerData;
end;

¿Para que nos podria servir esto?

Podemos trabajar con el ClientDataSet y su propiedad CommandText, cambiando la sentencia SQL y luego asignar nuevamente la sentencia original.
Algo util cuando trabajamos con ABM en grillas.

Saludos.

Última edición por Jere_84 fecha: 01-08-2012 a las 17:10:02. Razón: para ampliar la informacion
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
Como ejecutar video en un cliente Delphi 4 desde un servidor Web ? rolandoj Internet 4 30-04-2011 23:08:02
Como capturar el error sql desde Zeos? quinqui MySQL 1 17-09-2008 16:49:13
Ordenar datos del Lado del Cliente Efren2006 OOP 4 30-05-2008 17:01:48
DBExpress del lado cliente diegofhernando Conexión con bases de datos 1 08-04-2005 19:12:21
Como capturar puertos desde una dll... ??? Blazer2104 Internet 0 15-11-2004 23:14:26


La franja horaria es GMT +2. Ahora son las 01:59:25.


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