Tablas a considerar:

  • Codigos_Seg_Columnas_Sistema: almacena TODO EL UNIVERSO de columnas que pueden usarse dentro del sistema. NO PUEDEN REPETIRSE LOS REGISTROS. PK -> datafield. Si la columna del listado/DataTable/Pivot no existe, cargar en esta tabla.
  • Codigos_Query_Columnas: almacena todas las columnas que devuelve un SP utilizado para DataTable. La llenamos con el siguiente query (ejecutar CADA VEZ QUE SE CREA UN DATATABLE CON S.P.):

declare @query_id int

set @query_id = id del datatable

SELECT * INTO #temp1
FROM OPENROWSET(‘SQLNCLI’, ‘Server=bg-srv07;uid=sa;pwd=base321+’,
‘EXEC DATOS_DESA.[dbo].[nombre de SP]’);

/*
SELECT * FROM tempdb.sys.columns
WHERE object_id=object_id(‘tempdb..#temp1’)
GO
*/

insert into Codigos_Query_Columnas(Query_Id,Tabla_Id,Columna_Id,Alias,Orden,Agrupar,Sumar,Contar,OrdenAgrupar,dt_lastupdate,vc_updateuser)
SELECT @query_id, ‘nombre de sp‘, name, name, column_id*10, 0,0,0,0, getdate(), ‘system’ FROM tempdb.sys.columns
WHERE object_id=object_id(‘tempdb..#temp1’) and name not in (‘_state’,’_state_code’,’_state_color’,’_state_text’,’_tags’)

DROP TABLE #temp1

select * from Codigos_Query_Columnas where Query_Id = @query_id order by orden asc
–delete Codigos_Query_Columnas where Query_Id = @query_id

  • ATENCIÓN: SI EN EL LISTADO/DATATABLE O PIVOT LA COLUMNA SE MUESTRA VACÍA SIGNIFICA QUE NO EXISTE EN LA TABLA [CODIGOS_SEG_COLUMNAS_SISTEMA], sino preguntar a LPERDOMO.