consulta a un query en vez de a una tabla
Hola gente, hay alguna forma de hacer un query a un query que esta en memoria?? o sea, hacer un select * from query1 o algo similar?
|
Para poderte ayudar más efectivamente, podrias comentarnos cuál es la razón por la que quieres hacer eso? (Pueden existir soluciones alternativas), y otra más es comentarnos la base de datos que utilizas.
|
Si ya lo tienes en memoria que yo sepa no.
No se si utilizando TClientDataSet tendrás opciones para filtrar y demás. |
Si ya lo tienes en memoria y lo que deseas es obtener ciertos registros, entonces aplicale un filtro y asunto resuelto.
Saludos. |
Hola, gracias por su atencion. Paso a explicar mas detalladamente el tema.
Estoy queriendo ejecutar una consulta que mi base de datos no soporta (no se por que, pero bueno...). Cuando quiero abrirla me da un error y la sintaxis esta bien. El error que tira es:"Invalid use of keyword, Token: (SELECT"Alternativamente, para hacerlo funcionar de alguna forma, queria hacer una consulta en dos partes (o sea, dos consultas). LA primera haciendo la UNION entre Reservas y Estadias y luego desde otra consulta seleccionar los datos con el NOT IN. Es por eso que hacia la consulta, me podran ayudar? |
Tengo entendido que es posible crear una tabla virtual, y luego hacerle cualquier consulta pero no tengo los códigos, pero si no estoy mal en la Cara Oculta de Delphi lo encuentras.
|
crea un procedimiento en tu base de datos y luego esta la puedes consultar como si fuera una tabla mas.
procedimiento en la base de datos. icodigo parametro de entrada. ***procedimiento kardex*** begin /* Procedure Text */ nvariable = 0.0; for select clavemi, codigo, fechadoc, tipo, referencia, cantidad, precio, documento, mov from cmovinv where codigo = :icodigo order by clavemi into :sclavemi, :scodigo, :sfechadoc, :stipo, :sreferencia, :scantidad, :sprecio, :sdocumento, :smov do begin if (:smov = 'E') then nvariable = nvariable + scantidad; else nvariable = nvariable - scantidad; sexist = nvariable; suspend; end end y el codigo: with DMSIU.zroqryListados do begin Close; SQL.Clear; DMSIU.cdsClientes.Active:=false; SQL.Add('select scodigo, sfechadoc, stipo, sreferencia, sdocumento, sprecio,smov, scantidad, sexist, sclavemi from kardex('''+sDaCodigo+''') '); Open; |
TXQuery
Existe un componente llamado TXQuery que hace precisamente lo que buscas, hace un query sobre cualquier dataset abierto.
Lo tengo desde hace tiempo, no recuerdo donde lo baje pero buscando en google seguro lo encuentras. Saludos |
Solucionado!
Muchas gracias gente, ya he solucionado mi problema.Saludos
|
Cita:
Un saúdo. |
Quita los paréntesis que están después del NOT IN y los del final y te funcionará.
|
La franja horaria es GMT +2. Ahora son las 16:41:21. |
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