Ir al contenido


Foto

Query con parámetros


  • Por favor identifícate para responder
10 respuestas en este tema

#1 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 23 febrero 2012 - 02:36

Buenas,

Soy nuevo en esto del DataSnap. Estoy haciendo una pequeña aplicación para adentrarme en ello. Agradecer el artículo que tiene axesys que me ayudó en los primeros pasos :-)

Bueno, la cosa es la siguiente. Ya he conseguido recuperar datos desde el cliente (que no es poco para mi jejejeje). Pero ahora necesito abrir una consulta SQL con parámetros y no soy capaz.

Estoy haciendo las pruebas con BDE (imagino que no importará), así que tengo:

Servidor:  TDatabase -> TQuery con sentencia SQL parametrizada -> TDataSerProvider
Cliente: TClientDataSet -> TDataSource -> TDBGrid

Bien, ejecuto el servidor y desde el cliente "veo" el TDataSetProvider y el TClientDataSet me recupera correctamente los parámetros de la consulta (1 sólo parámetro de tipo string). En el constructor del cliente hago esto



delphi
  1.     try
  2.       cdsClosedDay.Params.ParamByName('date').AsString := '22/02/2012';
  3.       cdsClosedDay.Open;
  4.     except
  5.       on E: Exception do
  6.         raise Exception.Create(Format(errOpenDataSet, [cdsClosedDay.Name, E.Message]));
  7.     end;



El campo es de tipo string aunque lo usemos para almacenar una fecha :| y si lanzo el SQL desde el SQL Explorer me devuelve resultados

Alguna sugerencia?

Gracias de antemano

Nos leemos
  • 0

#2 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 23 febrero 2012 - 07:57

¿Y no debe ir entre comillas la fecha?


Saludos!
  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 23 febrero 2012 - 08:46

¿Y no debe ir entre comillas la fecha?


Tu dices algo así ¿?



delphi
  1. cdsClosedDay.Params.ParamByName('date').AsString := QuotedStr('22/02/2012');



Saludos
  • 0

#4 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 23 febrero 2012 - 09:33

Si, si es una cadena las debe llevar.


Saludos!
  • 0

#5 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 23 febrero 2012 - 10:10

Buenas,

Gracias por las respuestas. He hecho el cambio pero sigue sin devolverme resultados el TClientDataSet :(

Alguna otra idea?

Nos leemos

  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 23 febrero 2012 - 10:22

Buenas,

Gracias por las respuestas. He hecho el cambio pero sigue sin devolverme resultados el TClientDataSet :(

Alguna otra idea?

Nos leemos


Cuando yo he usado parámetros con ClientDataSet he tenido que utilizar  el método FetchParams() antes de asignarlos, no se si éste sea el caso, pero bien puedes hacer una prueba.



delphi
  1.   cdsClosedDay.FetchParams;
  2.   cdsClosedDay.Params.ParamByName('date').AsString := QuotedStr('22/02/2012');



Saludos

  • 0

#7 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 23 febrero 2012 - 11:29


Buenas,

Gracias por las respuestas. He hecho el cambio pero sigue sin devolverme resultados el TClientDataSet :(

Alguna otra idea?

Nos leemos


Cuando yo he usado parámetros con ClientDataSet he tenido que utilizar  el método FetchParams() antes de asignarlos, no se si éste sea el caso, pero bien puedes hacer una prueba.



delphi
  1.   cdsClosedDay.FetchParams;
  2.   cdsClosedDay.Params.ParamByName('date').AsString := QuotedStr('22/02/2012');



Saludos


Saludos.

Esa operación se puede realizar en Design Time, haciendo un clic derecho sobre el TClientDataSet.
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 23 febrero 2012 - 11:36

Esa operación se puede realizar en Design Time, haciendo un clic derecho sobre el TClientDataSet.


Si, claro, pero suelo hacer casi todo en tiempo de ejecución ya que además también los componentes los agrego en ejecución. :)

Saludos
  • 0

#9 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 23 febrero 2012 - 01:04

Mañana lo pruebo, gracias :-)

PD: en design time lo he hecho ya, pero bueno, lo pondré como código a ver qué ;-)
  • 0

#10 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 23 febrero 2012 - 01:44

Hola Xavi.

A mi también me parece que te debería funcionar.

¿ Ya has leído los capítulos 31, 32, 33 y 34 de la Cara Oculta de Delphi 6 ?. Imagino que aún conservas ese libro, en caso contrario, lo puedes descargar del blog de Marteens.

Salut.
  • 0

#11 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 23 febrero 2012 - 06:29

Hola Xavi.

A mi también me parece que te debería funcionar.

¿ Ya has leído los capítulos 31, 32, 33 y 34 de la Cara Oculta de Delphi 6 ?. Imagino que aún conservas ese libro, en caso contrario, lo puedes descargar del blog de Marteens.

Salut.


Saludos.

Para la parte básica del manejo de los componentes esa referencia es excelente, ahora bien, a partir de D2009 DataSnap dio un gran giro en su Core.

Por mala suerte, Ian Marteens no continuo con la escritura de temas relacionados al Delphi, sin embargo, Marco Cantu tiene una serie de Hand Book que si explican lo nuevo de DataSnap.
  • 0




IP.Board spam blocked by CleanTalk.