Ir al contenido


Foto

Desenmarañando el CommandText


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

#21 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 14 julio 2009 - 10:33

Por eso mismo te digo que lo encuentro innecesario y poco práctico cuando el resultado  que buscas lo obtienes con solo ejecutar



delphi
  1. ClientDataSetCliente.CommandText := 'SELECT * FROM CLIENTE WHERE ID_CLIENTE = ' + Edit1.Text;



Saludos


En realidad con esto solo obtengo los datos del encabezado, no del detalle, para hacerlo deberia lanzar otra consulta.
Ahora bien, te dire que si es práctico cuando tienes que consutar algo así­, con diferentes opciones de búsqueda para los Item de determinado Cliente.

Saludos!
  • 0

#22 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 14 julio 2009 - 10:47

Amigo Felipe estás equivocado, ensaya el ejemplo que te envié coloca un número válido en el cuadro de texto que tienes dispuesto para el perámetro de la consulta masetra, presiona su respectivo botón y verás como el grid de la parte inferior que está asociado a los detalles se llena con datos. Ahora si quieres un item o items en especial para ese cliente basta un filtro sobre el ClientDatset de detalles.

Saludos.
  • 0

#23 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 14 julio 2009 - 10:50

Amigo Felipe estás equivocado, ensaya el ejemplo que te envié coloca un número válido en el cuadro de texto que tienes dispuesto para el parámetro de la consulta masetra, presiona su respectivo botón y verás como el grid de la parte inferior que está asociado a los detalles se llena con datos. Ahora si quieres un item o items en especial para ese cliente basta un filtro sobre el ClientDatset de detalles.

Saludos.


A no amigo, por el tuyo no veo problema, lo digo es por el mio, sin usar un Dataset anidado  :D

Saludos!
  • 0

#24 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 14 julio 2009 - 11:01

A no amigo, por el tuyo no veo problema, lo digo es por el mio, sin usar un Dataset anidado 

En el tuyo no los ves porque no estás abriendo en ningún momento la consulta de detalles si agregas una lí­nea que abra el ClientDataset de detalles obtendrás el resultado esperado.
  • 0

#25 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 14 julio 2009 - 01:15

En el tuyo no los ves porque no estás abriendo en ningún momento la consulta de detalles si agregas una lí­nea que abra el ClientDataset de detalles obtendrás el resultado esperado.


¿Porque lo dices amigo?; si dentro del código puedes ver claramente estas lineas:



delphi
  1. procedure TForm1.Button2Click(Sender: TObject);
  2. begin
  3.   ClientDataSetItem.Close;
  4.   ClientDataSetItem.CommandText := 'SELECT * FROM ITEM WHERE ID_CLIENTE = ' + Edit2.Text;
  5.   ClientDataSetItem.Open;
  6. end;



¿O a que te refieres?

Saludos!
  • 0

#26 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 14 julio 2009 - 01:41

Perdonen si me salgo un poco del tema, precisamente estoy trabajando con ClientDataSet y con archivos XML como base de datos, y necesito hacer algunas consultas SQL, y querí­a saber si con el CommandText funcionarí­a las consultas.

Saludos.
  • 0

#27 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 14 julio 2009 - 01:47

Perdonen si me salgo un poco del tema, precisamente estoy trabajando con ClientDataSet y con archivos XML como base de datos, y necesito hacer algunas consultas SQL, y querí­a saber si con el CommandText funcionarí­a las consultas.

Saludos.


Pues amigo mira, el ClientDataSet en basicamente una tabla en memoria, ¿consultas sql? no creo... pero si podrias trabajar con filtros  ;)

Saludos!
  • 0

#28 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 14 julio 2009 - 03:17

¿O a que te refieres?


Amigo Felipe me refiero a que debes abrirlo pero aquí­:



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   ClientDataSetCliente.Close;
  4.   ClientDataSetCliente.CommandText := 'SELECT * FROM CLIENTE WHERE ID_CLIENTE = ' + Edit1.Text;
  5.   ClientDataSetItem.Open;
  6.   ClientDataSetCliente.Open;
  7. end;



Perdonen si me salgo un poco del tema, precisamente estoy trabajando con ClientDataSet y con archivos XML como base de datos, y necesito hacer algunas consultas SQL, y querí­a saber si con el CommandText funcionarí­a las consultas.

Saludos.


Como dice Felipe, toca defenderese con filtros, con los métodos Locate , LookUp, CloneCursor y para reemplazar las funciones Sum, Max, Min, AVG de SQL TClientDataset dispone de campos de estadí­sticas mediante la adición de un nuevo campo persistente del tipo Aggregate que a su vez disponen de una propiedad Exprression en la que puedes poner cosas como Sum(Cantidad).

Saludos
  • 0

#29 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 14 julio 2009 - 03:46

Hola,
mira, si hago lo que tu me dices eso no soluciona lo que intento, de este modo solo obtengo el detalle pero por cada encabezado que abra antes; la meta es se pueda buscar cualquier registro de la tabla Item sin importarle a la tabla Cliente, algo que hasta el momento no es posible pero tampoco imposible  :D.

Saludos!
  • 0

#30 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 14 julio 2009 - 04:32

Como dice Felipe, toca defenderese con filtros, con los métodos Locate , LookUp, CloneCursor y para reemplazar las funciones Sum, Max, Min, AVG de SQL TClientDataset dispone de campos de estadí­sticas mediante la adición de un nuevo campo persistente del tipo Aggregate que a su vez disponen de una propiedad Exprression en la que puedes poner cosas como Sum(Cantidad).

Saludos


Vale Wilson y Felipe, muchas gracias (y).

Saludos.
  • 0

#31 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 29 julio 2009 - 02:46

Hola,
He decidido concluir este tema, con el fin de dar a conocer lo que finalmente pude entender.
En parte con la clara y detallada explicación del compañero Wilson, encontré que efectivamente ocurrí­a dicho problema al intentar ejecutar la consulta en el detalle sin importar su maestro, ya que realmente dicha relación se basa en el trabajo de parametros, lo que en apariencia no es visible para nosotros.
Esta realmente se comporta como una subconsulta dentro de los datos del encabezado; de igual forma este concepto solo parece suceder en los CDS cuando realizamos las relaciones en dicha forma:

Imagen Enviada

Contrario a esto es posible trabajarlo como se pretende en la explicación de este tema realizando dicha relación directamente en los TQuery.

Imagen Enviada

El posible inconveniente al trabajar de esta manera como lo mencioné anteriormente, es el sostenimiento de esta relación, debido a que estos componentes trabajan unidireccionalmente. Obviamente es más cómodo trabajar cuando tu Delphi lo hace casi todo...
...solución de primera mano: un CDS auxiliar para realizar las consultas del detalle, en fin y al cabo solo te cargará los registros que pidas y podrás modificar, editar, eliminar o añadir a tu gusto.

Espero con esto haber dejado claro la intención incial del tema al buscar entender dicha propiedad, sus pro y sus contra, como también el hecho de querer entrar a conocer más allá de los temas que nos interezan.


Saludos!
  • 0




IP.Board spam blocked by CleanTalk.