IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

passer un parametre sous forme de liste


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut passer un parametre sous forme de liste
    Bonjour
    comment puis je passer un parametre sous forme de liste a une requete sql ?
    comment puis je passer un parametre sous forme de list a un tableadapter ?
    Comment puis je resortir tous les id du resultat d'une requete dans une meme colonne séparée par un ";" ?

    x1;x2;x3 x1 .....
    x1;x2;x3 x2 .....
    x1;x2;x3 x3 .....
    .merci

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Bonjour,

    Une requete sql ne prends en general pas de liste en parametres, bon sql serveur le peut via les UserDefined table mais bref passons.

    Ce qui est fait generalement c'est que l'on passe un string et que l'on effecture un double split: le premier pour isoler chaque parametre, le seconde pour separer cle de valeur.

    Sur le net tu trouvera des moyens de faire ce split pour chaue base de donnees.

    donc cela reponds aux question 1 et 2.



    Pur la troisieme: la methode la plus simple qui me vient a l'esprit est de le faire en c# via linq:

    imaginons que j'ai une table result ayant la colonne id:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var concatenated = string.Join(";",resultats.Select(a=>a.Id));

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    Je n'ai pas encore trouvé de solution

    comment puis je passer une chaine a un tableadapter sous la forme : "x1;x2;x3"

    et quand je passe au generateur de requetes je lui donne la chaine
    je dois la séparer en list x1; x2
    et selectionner toutes les lignes ayant x1 comme id, x2 comme id, x3 comme id ???

    veuillez m'aider, je suis bloquée ?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Par défaut
    Bonjour,

    Personnellement, je ne comprends absolument rien à ton problème.
    Soit plus précis s'il te plait.

    Cordialement

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    table value parameter
    ou sur des versions qui n'ont pas cette fonctionnalité une table temporaire

    et dans les cas une jointure
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Par défaut
    bonjour, j'ai pu avancer un petit peu mais je n'ai pas trouver toutes la solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    -- Fonction qui permet de récupérer une chaine
    -- Retourne la valeur si elle est trouvé ou NULL si @Index supérieur au nombre d'occurence dans @Chaine
    CREATE FUNCTION [dbo].[SubVal]
    (
    	@Chaine VarChar(255),		-- Chaine contenant les valeurs
    	@Idx TinyInt,			-- Index de la valeur recherchée
    	@Separateur VarChar(5) = ';'	-- Séparateur des valeurs dans la chaine
    )  
    RETURNS VarChar(255)
    AS 
    BEGIN
    	Declare @Valeur VarChar(255)	-- Valeur de retour de la fonction
    	Declare @Pos Int		-- Position du curseur dans la chaine
    	Declare @Cpt Int		-- Compteur
     
    	SELECT @Cpt = 1, @Pos = 0, @Valeur=NULL
     
    	While (@Cpt < @Idx AND Charindex(@Separateur, @Chaine, @Pos+1)>@Pos)
    	Begin
    		SELECT @Cpt=@Cpt+1, @Pos=Charindex(@Separateur, @Chaine, @Pos+1)
    	End
     
    	IF @Cpt=@Idx
    		SET @Pos = @Pos + 1
    		IF Charindex(@Separateur, @Chaine, @Pos)>@Pos
    			SET @Valeur = ltrim(rtrim(Substring(@Chaine, @Pos, Charindex(@Separateur, @Chaine, @Pos)-@Pos)))
    		ELSE IF Charindex(@Separateur, @Chaine, @Pos)=@Pos
    			SET @Valeur = ''
    		ELSE
    			SET @Valeur = ltrim(rtrim(Substring(@Chaine, @Pos, 255)))
     
    	RETURN @Valeur
    END
    j'ai crée cette fonction qui marche bien sauf que je dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT dbo.SubVal('x1;x2,x3', 1, ';') retourne x1
    SELECT dbo.SubVal('x1;x2,x3', 2, ';') retourne x2
    SELECT dbo.SubVal('x1;x2,x3', 3, ';') retourne x3
    je cherche quelque choses comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (int i = 0; i< NombreElementDeLaChaine;i++)
    SELECT dbo.SubVal('x1;x2,x3', i, ';') retourne x1
    pour qu'elle me retourne tous les elements et non pas un par un sachant que ne je ne sais pas le NombreElementDeLaChaine ??


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passer les infos sous forme de colonne en ligne
    Par kssillati dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/01/2008, 10h38
  2. [MySQL] Récupérer les données sous forme de liste déroulante
    Par loopback dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 26/12/2007, 16h10
  3. Action de menu sous forme de liste
    Par frog43 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/12/2007, 13h33
  4. afficher des données sous forme de liste
    Par yannick9 dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/08/2007, 14h32
  5. Réponses: 5
    Dernier message: 08/03/2006, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo