Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consulta a un query en vez de a una tabla (https://www.clubdelphi.com/foros/showthread.php?t=48078)

eldiegofg 14-09-2007 17:28:23

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?

poliburro 14-09-2007 17:46:32

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.

Neftali [Germán.Estévez] 14-09-2007 17:49:47

Si ya lo tienes en memoria que yo sepa no.
No se si utilizando TClientDataSet tendrás opciones para filtrar y demás.

nemesio 14-09-2007 19:28:15

Si ya lo tienes en memoria y lo que deseas es obtener ciertos registros, entonces aplicale un filtro y asunto resuelto.

Saludos.

eldiegofg 15-09-2007 00:52:29

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.

Código SQL [-]
SELECT DISTINCT N_HAB FROM HABITACIONES WHERE N_HAB NOT IN((SELECT NHABITACION FROM RESERVAS WHERE FECHA BETWEEN :FI AND :FF) UNION (SELECT NHABITACION FROM ESTADIAS WHERE FECHA BETWEEN :FI AND :FF))
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?

mightydragonlor 15-09-2007 16:45:31

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.

gmontes 15-09-2007 18:18:14

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;

jcarteagaf 16-09-2007 02:22:25

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

eldiegofg 17-09-2007 02:47:57

Solucionado!
 
Muchas gracias gente, ya he solucionado mi problema.Saludos

Ivanzinho 19-09-2007 11:33:00

Cita:

Empezado por eldiegofg (Mensaje 231546)
Muchas gracias gente, ya he solucionado mi problema.Saludos

¿Podrías decir como para que quede constancia si alguien se encuentra con la misma duda?

Un saúdo.

duilioisola 19-09-2007 12:46:39

Quita los paréntesis que están después del NOT IN y los del final y te funcionará.

Código SQL [-]
SELECT DISTINCT N_HAB FROM HABITACIONES WHERE N_HAB NOT IN  SELECT NHABITACION FROM RESERVAS WHERE FECHA BETWEEN :FI AND :FF) UNION (SELECT NHABITACION FROM ESTADIAS WHERE FECHA BETWEEN :FI AND :FF


La franja horaria es GMT +2. Ahora son las 23:30:51.

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