ho una GV e 2 DDL.
queste 2 DDL fungono da filtro per la gv.
siccome i filtri possono essere anche tutti e 2 mi rimane scomodo fare diverse SP (in totale sarebbereo 4).
allora ho pensato di fare una cosa del genere:
funziona ma il problema è che il secondo parametro è di tipo tinyint, ma ha come valore iniziale un * e poi i numeri estratti dal db.codice:ALTER Procedure [dbo].[TNW_select_files_deploy_siti] @descrizione_ip varchar(64), @stato tinyint As IF @descrizione_ip = '*' AND @stato = 60 SELECT file_deploy_sito#,stato,siti.descrizione AS Expr1,files_deploy_siti.IP AS Expr2,data_ora_trasferimento FROM files_deploy_siti INNER JOIN siti ON files_deploy_siti.IP=siti.IP ELSE IF @descrizione_ip != '*' AND @stato = 60 SELECT file_deploy_sito#,stato,siti.descrizione AS Expr1,files_deploy_siti.IP AS Expr2,data_ora_trasferimento FROM files_deploy_siti INNER JOIN siti ON files_deploy_siti.IP=siti.IP WHERE siti.descrizione = @descrizione_ip ELSE IF @descrizione_ip = '*' AND @stato != 60 SELECT file_deploy_sito#,stato,siti.descrizione AS Expr1,files_deploy_siti.IP AS Expr2,data_ora_trasferimento FROM files_deploy_siti INNER JOIN siti ON files_deploy_siti.IP=siti.IP WHERE stato = @stato ELSE SELECT file_deploy_sito#,stato,siti.descrizione AS Expr1,files_deploy_siti.IP AS Expr2,data_ora_trasferimento FROM files_deploy_siti INNER JOIN siti ON files_deploy_siti.IP=siti.IP WHERE siti.descrizione = @descrizione_ip AND stato = @stato
io per ora ho agito così:
e così richiamo il metodo nell'objectdata source:codice:<asp:ListItem Selected="True" Value="60">*</asp:ListItem>
capite bene che nn è il migliore modo di procedere, perchè un giorno 60 potrebbe diventare un valore nel db.codice:public static DataSet gvFilesSiti(string descrizione, byte stato) { DataSet ds = null; SqlDataAdapter adapter = null; SqlCommand cmd = null; try { conn.Open(); cmd = new SqlCommand("TNW_select_files_deploy_siti", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@descrizione_ip", descrizione); cmd.Parameters.AddWithValue("@stato", stato); adapter = new SqlDataAdapter(cmd); ds = new DataSet(); adapter.Fill(ds); } catch (Exception ex) { throw new Exception(ex.Message); } finally { ds.Dispose(); adapter.Dispose(); conn.Close(); } return ds; }
come posso rimediare secondo voi??

Rispondi quotando