Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    ListBox, selezione multipla e stored procedure

    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_Campagn a", 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 scrivo
    WHERE Comuni.IDProvincia in ('PD','BS')

    funziona!!

    cosa sbaglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    559

    il problema è che non puoi costruire la IN con un solo parameter,
    per lui è come se fai:
    IN ('hello,world')

    ora cio ti porta a un altro problema:
    usando la stored sudi freddo, perchè non esiste in t-sql una funzione splitString()
    pertanto:

    1) in questo caso non usi la stored e ti costruisci il sqlCommand a manina
    2) ti cerchi su google una funzione che splitti una stringa e ti restituisca i valori splittati in una tabella temporanea
    3) usi all' interno della stored dell' sql dinamico per popolarti una tabella temporanea con i valori

    se nella vita avro avuto la possiblita di aiutare qualcuno non avro vissuto invano (E. Dikinson)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.