private void listGenres_SelectedIndexChanged(object sender, EventArgs e) { SqlDataReader rdr = null; string strArtist = null; SqlCommand cmd = null; string lesGenres = null; listArtistes.Items.Clear(); listAlbums.Items.Clear(); // REFRESH DES ARTISTES POUR LE GENRE SELECTIONNE // Détection si il y a plusieurs Genres sélectionnés if (listGenres.SelectedItems.Count > 1) { // Définition du premier argument Genre lesGenres = "Genre = '" + listPlaylists.Items[0] + "' "; // Parcours des autres arguments OR Genre = 'plop' OR Genre = 'plop2' ... for (int i = 1; i < listPlaylists.SelectedItems.Count; i++) { lesGenres = lesGenres + "OR Genre = '" + listPlaylists.Items[i] + "'"; } } if(listPlaylists.SelectedItem.ToString().Equals("Toutes les playlists")) { // Requete pour la récupération des artistes en fonctions des playlists et du Genre strArtist = "SELECT DISTINCT Artist FROM Tracks WHERE @Genre"; } else { // Requete pour la récupération des artistes en fonctions de la playlist et du Genre strArtist = "SELECT DISTINCT Artist FROM Tracks WHERE Tracks.TrackID IN( SELECT TrackID FROM PlaylistDetails WHERE PlaylistID = @IDPlaylist ) AND @Genre"; cmd.Parameters.Add("@IDPlaylist", SqlDbType.Int).Value = searchPlaylistsID(listPlaylists.SelectedItem.ToString()); } try { // Instanciation de la requete SQL avec la connection à la base de données cmd = new SqlCommand(strArtist, oConnection); // Renseignement des différents paramètres cmd.Parameters.Add("@Genre", SqlDbType.NVarChar).Value = lesGenres; MessageBox.Show(strArtist); // Ouverture de la base de données oConnection.Open(); // Execution de la commande SQL rdr = cmd.ExecuteReader(); while (rdr.Read()) { listArtistes.Items.Add(rdr[0]); } } finally { // Fermeture du SQLReader if (rdr != null) { rdr.Close(); } // Fermeture de la connection if (oConnection != null) { oConnection.Close(); } }