Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Trabajar con tablas #Temporales (https://www.clubdelphi.com/foros/showthread.php?t=51521)

Cabanyaler 18-12-2007 12:58:00

Trabajar con tablas #Temporales
 
Hola amigos.
Demasiado tiempo sin pasarme por aquí, :rolleyes:

Entorno:
Trabajo con Delphi 6, conexiones ADO y un servidor SQL Server.

Quiero:
Trabajar con tablas temporales alojadas en el servidor del tipo #NombreTabla,
volcarles datos, recorrerlas, insertarles, etc, etc. Luego algunas de estas tablas vincularlas con fuentes de datos para visualizarlas en DBGrids, y poca cosa más.

Lo que hago hasta ahora sin exito:
Hace unos años atrás lo hice y no recuerdo haber sufrido tanto, así que algo debo estar olvidando.

Hasta ahora me he creado:
El DataModule aparte para sólo estas tablas.
Los Store Procedures de creación de las tablas (por cuestión de espacio sólo anexaré uno):

Código:

CREATE PROCEDURE ADOSP_Crea_TMPOBR
AS
Create Table tempdb.dbo.TMPOBR
(
            NumObra        varchar(5),
            ImpAcuTotObr real     
)
GO

En el data module de las temporales, he añadido un componente TAdoConnetion conectada a la BBDD tmpdb, y las correspondientes TAdoTable conectadas a dicha Connection.
Después de crear las tablas temporales con Store Procedures como el el anterior, que como digo no veo en la BBDD tmpdb, intento asignar mediante instrucciones del tipo:
Código:

  DataModuleTMP.ADOTb_TMPOBR.TableName  := 'TMPOBR';
y me salta error resumido: El nombre de objeto TMPOBR no es valido.
He probado tb con
Código:

  DataModuleTMP.ADOTb_TMPOBR.TableName  := 'tmpdb.dbo.TMPOBR';

Problema por desconocimiento de como hacerlo:
Me interesa poder asignar en tiempo de diseño a la propiedad de los componentes TadoTable.TableName, las tablas temporales que creo en tiempo de ejecución y que no veo en el Sql Server Enterprise manager en la BBDD tmpdb durante la ejecución del programa. :confused:
El fin de poderlo asignar es poder tener los nombres de los campos de forma persistente en los componentes TAdoTable y de ese modo poderlos añadir a los DBGrid que me interesen, hacer las operaciones que desee con dichas tablas, y después destruirlas.

Pregunta para resolver:
¿Sabeis como puedo trabajar con estas tablas temporales de modo parecido si no igual a las tablas que creo en tiempo de diseño en cualquier BBDD y a las cuales puedo acceder mediante componentes TadoStoreProc o cualquier otro DataSet mediante la asignación del nombre de la tabla a la propiedad TableName del componente?
Algúna URL donde dirigirme y consultar ejemplos (no he encontrado en Google).

Gracias a todos.

Cabanyaler 18-12-2007 17:20:27

Ya está
 
Como me gusta comentar mis propias soluciones y siempre hago:


1) Creo las tablas temporales

Código:

  SL := TStringList.Create;
  DMTMP.ADOConTmp.GetTableNames(SL, False);
  Existe := False;

  for index := 0 to (SL.Count - 1) do
    if (SL[index] = 'TMPOBR')    then Existe := True;
  if not(Existe) then CreoTablaTemp_TMPOBR();      // Conté les obres on hi han partes d'eixe mes, per eixa casa de lloguer i eixe centre

Donde CreoTablaTemp_TMPOBR() es:
Código:

/* Crea la taula temporal TMPOBR per a la acumulació dels imports totals de cadasquna de les obres */
CREATE PROCEDURE ADOSP_Crea_TMPOBR
AS
Create Table tempdb.dbo.TMPOBR
(
            NumObra        varchar(5),
            ImpAcuTotObr real     
)
GO



2) Abro la tabla

Código:

  // Les obric
  DMTMP.ADOTb_TMPOBR.Open;

Y la asignación de campos permanentes, el nombre de la tabla así como la asignación a los objetos TadoTable, lo hago en tiempo de diseño.

La edición de la ConnectionStrings de cada una de las conexiones que intervengan, se dá por conocida.

:p


La franja horaria es GMT +2. Ahora son las 23:07:40.

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