Selezione multipla e query

venerdì 16 maggio 2008 - 15.28

squilibrio Profilo | Expert

Secondo voi dove sbaglio??

Da un listbox recupero gli X valori selezionati e li divido con una virgola

string IDProvince = "";

foreach (ListItem list in lbProvince.Items)
{
if (list.Selected)
{
IDProvince = IDProvince + ", '" + list.Value + "'";
}
}

IDProvince = IDProvince.Substring(1);

SqlParameter[] parameters = new SqlParameter[1];
parameters[0] = new SqlParameter("@IDProvince", IDProvince);

SqlCommand cmd = CreateStoreProcedureCommand("GetAnagrafica_Campagna", connection, parameters);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;


nella mia SP


GO
ALTER PROCEDURE [dbo].[GetAnagrafica_Campagna]
@IDProvince varchar(MAX)

AS
BEGIN
SET NOCOUNT ON;

SELECT
...
FROM
Anagrafica
...
WHERE Comuni.IDProvincia in (@IDProvince)

Niente... vuoto!!

La cosa straa è che se

nel codice metto
IDProvince = "PD";
visualizzo dati

se invece metto
IDProvince = "PD,BS";
non vedo nulla


al contrario se nella SP metto
WHERE Comuni.IDProvincia in ('PD','BS')

funziona!!

cosa sbaglio?

alx_81 Profilo | Guru

> WHERE Comuni.IDProvincia in (@IDProvince)
>cosa sbaglio?

Non si può fare così.. O utilizzi quanto ti ho consigliato qui:

http://www.dotnethell.it/forum/messages.aspx?ThreadID=22942

Oppure, se vuoi usare la IN, devi creare un SQL dinamico, qualcosa tipo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ma non è una soluzione molto elegante..
Poi con @InString devi fare attenzione, perchè devi aggiungere le apici visto che hai delle stringhe..
Fossi in te seguirei la prima opzione che ti ho indicato..

Se proprio non ci salti fuori ti faccio un esempio..
Ora sono un po' impossibilitato e devi avere pazienza

Ciao!
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
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