Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-12-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Tablas temporales

Estaba viendo en otro hilo como crear un tabla temporal (CREATE GLOBAL TEMPORARY TABLE); no lo había usado nunca y me parece interesante. Sin embargo estoy teniendo un problema para poder emplearla en un TDBGrid.
  • Creo la tabla:
Código SQL [-]
CREATE GLOBAL TEMPORARY TABLE Temporal (Identidad VARCHAR(65), Referencia VARCHAR(13), Codigo INTEGER, Cuota NUMERIC(12, 2),
Seleccion SMALLINT DEFAULT 0 CHECK(Seleccion IN (0, 1)), Situacion VARCHAR(16), PRIMARY KEY (Identidad, Referencia, Codigo))
ON COMMIT PRESERVE ROWS
  • Inserto los valores que me interesan:
Código SQL [-]
INSERT INTO Tempral (Identidad, Referencia, Codigo, Cuota, Seleccion, Situacion) SELECT DISTINCT A.Apellidos||', '||A.Nombre,
COALESCE(NULLIF(A.Referencia, ''), NULLIF(A.Nif, ''), A.Codigo), A.Codigo, B.Cuota, 0 Seleccion, C.Literal
FROM Ls02 A LEFT JOIN Persona B ON A.CodPrv = B.CodPrv AND A.Codigo = B.Codigo, Instalacion C
WHERE A.CodPrv = (SELECT Literal FROM Instalacion WHERE Etiqueta = 'Provincia') 
 AND C.Etiqueta = 'Situacion' AND B.Situacion = C.Valor
AND A.Codigo IN (SELECT DISTINCT Codigo FROM Electos WHERE CodPrv = (SELECT Literal FROM Instalacion WHERE Etiqueta = 'Provincia'))

Ambos procesos se ejecutan sin ningún problema (gracias a jhonny y Casimiro por sus sugerencias en mi consulta anterior). La tabla temporal está asociada a un TIBTable (Temp) y el DBGrid tiene su TDataSource enlazado a ese TIBTable. Cuando he cargado la tabla temporal y trato de abrirla para poder visualizar su contenido en el DBGrid:
Código:
Temp->Close();
Temp->TableName = "Temporal";
<INSERT INTO...>
Temp->Open();
Siempre me da un error: que la tabla Temporal no existe. Entiendo que para hacerla "visible" habría que cerrar y abrir la base de datos pero si hago eso, y con lo que he entendido de la sintaxis, supongo que la tabla se elimina. ¿Alguna idea?
Responder Con Cita
  #2  
Antiguo 13-12-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
¡Descubierto el error! Y me da una rabia, porque es una estupidez. Tengo la costumbre, cuando escribo los querys, de poner los nombres de las tablas y las columnas como si fuerna nombres propios con sólo la primera letra mayúscula, como están más arriba. El problema está en que si pongo:
Cita:
CREATE TABLE Temporal...
la tabla de verdad se llama TEMPORAL y claro, luego no la encuentra al hacer el Open del TIBTable.
Responder Con Cita
  #3  
Antiguo 14-12-2017
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Que bueno que hayas encontrado el error, no te de ira, a todos nos ha sucedido alguna vez con X o Y cosa.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
tablas temporales jerryacuna Tablas planas 3 14-11-2014 22:20:01
¿tablas temporales? JXJ Firebird e Interbase 6 23-09-2012 23:20:34
Tablas Temporales look SQL 2 15-03-2008 17:53:16
Tablas Temporales Milperrimo Firebird e Interbase 7 25-10-2007 06:01:25
Query con tablas temporales cartmanrules Firebird e Interbase 4 27-05-2004 11:23:47


La franja horaria es GMT +2. Ahora son las 18:38:10.


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