
29/06/2005, 08:06
|
 | | | Fecha de Ingreso: junio-2004 Ubicación: Misantla,Ver.Mexico
Mensajes: 181
Antigüedad: 20 años, 8 meses Puntos: 0 | |
Hola
Lo he hecho asi, usando un SP que acepte los parametros de tus campos, en transacsql armo la sentencia select con los parametros y ejecuto la cadena armada con el comando
EXEC [cadena SQL]
*uso IF para obtener los parametos y concatenar
* tengo string para las partes del select (campos,where,order)
*concateno todo y ejecuto
si necesitas el ejemplo de codigo lo agrego
-- DECLARACION
CREATE PROCEDURE Proc_Buscador
@Enable_date int=0,
@Fec1 char(20)='1900-01-01 12:00:00',
@Fec2 char(20)='1900-01-01 12:00:00',
@BU_ID int=0,
...
...
/*CONDICIONES PARA OPCIONES*/
IF @Options =0
BEGIN
IF @BU_ID =0
SELECT @COLBU_ID=''
ELSE
SELECT @COLBU_ID='BU_ID IN ('+ RTRIM(CONVERT(CHAR(5),@BU_ID)) +')'
...
...
...
IF @opcRepeat =0 --NO REPETIDOS
BEGIN
SELECT @Columna = 'SELECT [Issue_No], CONVERT(CHAR(10),[DATE_REQUEST],101) AS DATE_REQUEST,[BU_NAME],[LINE], [Assembly], [Comments], [EC_No], [TC_No],[CODEDESC],[ROOT_CAUSE], [Info], [ECStatus], [Parent], [Repeat],[AGILE_STATUS],[EC_CREATE_DATE] FROM VIEW_BOM_DataFindings_Rec WHERE Repeat IS NULL AND PARENT=0 ' + dbo.concatAND(@COLBU_ID) + RTRIM(@COLBU_ID) +dbo.concatAND(@COLFamily_ID) + RTRIM(@COLFamily_ID) + dbo.concatAND(@COLCode_ID) + RTRIM(@COLCode_ID) +dbo.concatAND(@COLRoot_Cause_ID)+ RTRIM(@COLRoot_Cause_ID) + dbo.concatAND(@COLECstatus_ID)+ RTRIM(@COLECstatus_ID) + dbo.concatAND(@COLRequest_date)+ RTRIM(@COLRequest_date)
SELECT @ColumnaCount = ' ;SELECT COUNT([ISSUE_NO]) AS TOTAL_ROWS FROM VIEW_BOM_DataFindings_Rec WHERE Repeat IS NULL AND PARENT=0 ' + dbo.concatAND(@COLBU_ID) + RTRIM(@COLBU_ID) +dbo.concatAND(@COLFamily_ID) + RTRIM(@COLFamily_ID) + dbo.concatAND(@COLCode_ID) + RTRIM(@COLCode_ID) +dbo.concatAND(@COLRoot_Cause_ID)+ RTRIM(@COLRoot_Cause_ID) + dbo.concatAND(@COLECstatus_ID)+ RTRIM(@COLECstatus_ID) + dbo.concatAND(@COLRequest_date)+ RTRIM(@COLRequest_date)
END
--Ejecutando la consulta
EXEC(@Columna + @ColumnaCount)
Disculpa si el ejemplo esta dividido, pero espero te sirva.
aunque se puede optimizar, cosa que no he tenido tiempo
de todos modos cualquier duda aqui te leo
saludos
Última edición por splinter; 29/06/2005 a las 08:24 |