Rcerca valori con gestione "tutti gli elementi"

venerdì 16 maggio 2008 - 22.53

squilibrio Profilo | Expert

Ciao a tutti, ho creato una pagina .NET che passa alla SP i valori di alcuni dropdownlist; nel caso in cui l'utente non selezioni nulla da uno specifico DDL devono essere recuperati tutti i valori (nessun filtro per quel campo); io ho fatto in modo che se l'utente non sceglie nulla, il valore del campo è null (in caso contrario invece passo il valore del campo da usare nella WHERE)

il problema è che non so come gestire nella SP il fatto che se il valore del parametro è null, non deve essere applicata la WHERE per quello specifico campo

ALTER PROCEDURE [dbo].[Get]
@IDS varchar(1) = null,
@IDA int = null,
@DataInizio DateTime = null,
@DataFine DateTime = null

AS
BEGIN
SET NOCOUNT ON;

SELECT
..
FROM
...
WHERE
(Attivita.IDS = @IDS) AND
(Attivita.IDA = @IDA)
ORDER BY Data DESC

END



nel metodo ho:





public DataSet GetAAAA(SqlConnection connection, String IDA, String IDS)
{

try
{
SqlParameter[] parameters = new SqlParameter[6];

if(IDA == null)
parameters[0] = new SqlParameter("@IDA", DBNull.Value);
else
parameters[0] = new SqlParameter("@IDA", IDA);

if(IDS == null)
parameters[1] = new SqlParameter("@IDS", DBNull.Value);
else
parameters[1] = new SqlParameter("@IDS", IDS);


SqlCommand cmd = CreateStoreProcedureCommand("GetAAAA", connection, parameters);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
finally
{
if ((currState == ConnectionState.Closed))
connection.Close();
}
}


Cosa sbaglio?

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao!

>il problema è che non so come gestire nella SP il fatto che se
>il valore del parametro è null, non deve essere applicata la
>WHERE per quello specifico campo
Puoi usare nel filtro una condizione fatta così:

WHERE (@parametro2 IS NULL OR campo = @parametro2) AND (@parametro2 IS NULL OR campo2 = @parametro2)

Funziona ma non è un gran che per le prestazioni, se sai che i campi sono solo due puoi sempre pensare di farti le IF dedicate, una per ogni filtro che puoi ottenere..
Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

squilibrio Profilo | Expert

Grazie mille!!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5