Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2010, 12:27
LOD_Fredy
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Crear tabla desde store procedure y como ver la lista de tablas

Hola a todos, estoy haciendo algo parecido a una hoja de excel en ASP.Net. Los datos de la hoja se guardan en una tabla, de hecho la hoja es la tabla por asi decirlo. El problema que tengo es que asi como en excel, necesito poder crear mas hojas (tablas) con un nombre especificado por el usuario, tambien necesitaria que el usuario pudiera elegir que hoja (tabla) quiere ver, para asi poder realizar modificar, insertar o eliminar.

La idea que tenia para esto era hacer un store procedure y buscando encontre algo como esto que quice adecuar a lo que necesito pero no funciona ni el original ni el modificado, este es el original:

Código:
SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS OFF 
    GO
    CREATE PROCEDURE sp_Crear_Tabla_Recicle
        (@BaseDeDatos SYSNAME,@TablaRecicle SYSNAME)  AS
        DECLARE @INSTRUCCION1 CHAR(2000)
        DECLARE @INSTRUCCION2 CHAR(2000)
    SELECT @INSTRUCCION1='' +
        'CREATE TABLE [' + @BaseDeDatos + '].[dbo].[' + @TablaRecicle + '] (' +
        '[Id_Reciclaje] [numeric](18, 0) IDENTITY (1, 1) NOT NULL,' +
        '[Fecha_Exportacion] [datetime] NOT NULL,' +
        '[Nombre] [char] (40) COLLATE database_default NOT NULL,' +
        '[Paterno] [char] (30) COLLATE database_default NOT NULL,' +
        '[Materno] [char] (30) COLLATE database_default NOT NULL,' +
        ') ON [PRIMARY] '
    SELECT @INSTRUCCION2='' +
        'ALTER TABLE [' + @BaseDeDatos + '].[dbo].['+@TablaRecicle+'] WITH NOCHECK ADD  ' +
        'CONSTRAINT [DF_'+@TablaRecicle+'_Paterno] DEFAULT ('+CHAR(39)+CHAR(39)+') FOR [Paterno],' +
        'CONSTRAINT [DF_'+@TablaRecicle+'_Materno] DEFAULT ('+CHAR(39)+CHAR(39)+') FOR [Materno],' +
        'CONSTRAINT [DF_'+@TablaRecicle+'_Resultado] DEFAULT ('+CHAR(39)+CHAR(39)+') FOR [Resultado],' +
        'CONSTRAINT [PK_'+@TablaRecicle+'] PRIMARY KEY  CLUSTERED ' +
        '(' +
            '	[Id_Reciclaje]' +
        ')  ON [PRIMARY] '
Este es el modificado por mi:
Código:
CREATE PROCEDURE sp_Crear_Tabla1
        (@Tabla SYSNAME)  AS
        DECLARE @INSTRUCCION1 CHAR(8000)        
    SELECT @INSTRUCCION1='' +
        'CREATE TABLE [SAP_SENSA].[dbo].['+@Tabla+']'+
		 '(' +
        '[no_proy] [int] [NOT] [NULL] [identity] [primary] [key],' +
        '[rc] [char](50),' +
		'[contrato] [char](50),' +
		'[nombre_cliente] [char](50),' +
		'[no_proyecto] [char](100),' +
		'[se] [char](100),' +
		'[solucion] [char](100),' +
		'[equipo] [char](100),' +
		'[tipo_servicio] [char](100),' +
		'[plazo] [char](50),' +
		'[fechas_iniciov] [smalldatetime],' +
		'[fecha_limitev] [smalldatetime],' +
		'[iapl01] [char](50),' +
		'[iapl02] [char](50),' +
		'[iapl03] [char](50),' +
		'[tpro01] [char](50),' +
		'[tpro02] [char](50),' +
		'[responsable] [char](50),' +
		'[fecha_iniciopp] [smalldatetime],' +
		'[fecha_finpp] [smalldatetime],' +
		'[diaspp] [int],' +
		'[fecha_iniciopr] [smalldatetime],' +
		'[fecha_finpr] [smalldatetime],' +
		'[diaspr] [int],' +
		'[ciudad] [char](50),' +
		'[factor] [char](50),' +
		'[estado] [char](50))'
Retomando, primero, necesito tanto poder crear la tabla, probablemente la mejor manera es con un store procedure. Segundo guardar en algun lado los nombres de las tablas de que consta la base de datos de forma que el usuario pueda seleccionar que tabla quiere ver.