Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Crear una Tabla SQL desde la Interfaz (https://www.clubdelphi.com/foros/showthread.php?t=37977)

Alejandro73 28-11-2006 16:57:57

Crear una Tabla SQL desde la Interfaz
 
Hola Amigos del Club.

Estoy construyendo un aplicacion en Delphi Studio 2006 con SQL SERVER 2000 como motor y quisiera saber como hago desde la interfaz para crear una tabla temporal con un nombre aleatorio, esto ya que mas de un usuario puede necesitar utilizar esta tabla al mismo tiempo.

Los comandos para generar la tabla los entrega el Motor

Create Table ....
.....
.....
etc

Pero como lo hago para utilizar estos desde la interfaz o tendre que crear un Procedimiento Almacenado entregandole como parametro el nombre aleatorio de la tabla.

Y luego como elimino la tabla temporal?.

Gracias

Alejandro
Valparaiso - CHILE

Bicho 28-11-2006 17:29:32

Hola, no se si he entendido muy bien tu problema, pero por lo que yo he entendido:

- Necesitas que desde tu programa, en ejecución, por alguna razón necesitas almacenar unos datos de forma temporar y quieres usar una tabla.

¿es así? Es que no me ha quedado claro. Puedes explicarte mejor?

Saludos

Neftali [Germán.Estévez] 28-11-2006 17:44:01

Puedes utilizar un TADOQuery o un TADoStoredProc para ejecutar la consulta que te crea la tabla.
Lo más sencillo para la tabla temporal es que uses como nombre: ##NumeroAleatorio

El número aleatorio es para no usar siempre el mismo, por si creas más de una tabla durante la ejecución del programa.
Lo del ## es porque crearás una tabla temporal que se elimina automáticamente cuando finaliza esa sesión y sólo es visible en esa sesión. Si el programa fallara en el borrado o acabara inesperadamente SQL Server se encargaría de borrarla por ti.

Bicho 28-11-2006 17:48:15

Cita:

Empezado por Neftali
Puedes utilizar un TADOQuery o un TADoStoredProc para ejecutar la consulta que te crea la tabla.
Lo más sencillo para la tabla temporal es que uses como nombre: ##NumeroAleatorio

Pues por lo que parace lo he entendido igual que tú.

Cita:

Empezado por Neftali
Lo del ## es porque crearás una tabla temporal que se elimina automáticamente cuando finaliza esa sesión y sólo es visible en esa sesión. Si el programa fallara en el borrado o acabara inesperadamente SQL Server se encargaría de borrarla por ti.

Muy interesante, lo de la almohadilla (#) ¿es exclusivo de SQLServer o sirve para otros motores?

Saludos

Neftali [Germán.Estévez] 28-11-2006 18:00:49

Cita:

Empezado por Bicho
Muy interesante, lo de la almohadilla (#) ¿es exclusivo de SQLServer o sirve para otros motores?

Que yo sepa es único de SQL Server, lo que ya no se si otros tienen algo similar.

Alejandro73 28-11-2006 18:03:18

Como Seria la Instruccion
 
Cita:

Empezado por Neftali
Puedes utilizar un TADOQuery o un TADoStoredProc para ejecutar la consulta que te crea la tabla.
Lo más sencillo para la tabla temporal es que uses como nombre: ##NumeroAleatorio

El número aleatorio es para no usar siempre el mismo, por si creas más de una tabla durante la ejecución del programa.
Lo del ## es porque crearás una tabla temporal que se elimina automáticamente cuando finaliza esa sesión y sólo es visible en esa sesión. Si el programa fallara en el borrado o acabara inesperadamente SQL Server se encargaría de borrarla por ti.

Muchas Gracias, pero como seria la instruccion dentro del Procedimiento Almacenado?, el motor se encargara entonces de crear una nueva tabla temporal si el numero que le asigna esta siendo utilizado por otro usuario?

Aqui va el codigo de lo que he realizado

CREATE PROCEDURE pa_NuevaTablaTemporal @nombre varchar(50)
AS
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[@nombre]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[@nombre]
CREATE TABLE [dbo].[@nombre] (
[campo1] [int] NOT NULL ,
[campo2] [varchar] (50) COLLATE Modern_Spanish_CI_AS NULL ,
[campo3] [int] IDENTITY (1, 1) NOT NULL
) ON [PRIMARY]
GO


En nombre de la Tabla lo envio aleatoriamente desde la interfaz como parametro, pero el problema radica en que no toma en cuenta el nombre enviado como parametro.

Si me puedes ayudar con este codigo o si lo prefieres me puedes ayudar con el codigo que describes arriba en base al ##numeroaleatorio

Lo que te sea + facil

Muchas Gracias

Alejandro




La franja horaria es GMT +2. Ahora son las 06:00:24.

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