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

ASP.NET Discussion :

Alimenter une requete SQL par la valeur d'un TextBox


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut Alimenter une requete SQL par la valeur d'un TextBox
    Bonjour,

    J'ai eu ce bizarre problème, j'essaye d'ajouter la valeur d'un champ texte directement dans une requete sql.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:TextBox ID="TB_paramequipedatedebut" runat="server" Width="143px" ></asp:TextBox>
    ....
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <asp:SqlDataSource ID="SqlDataSourceEquipe2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
        SelectCommand="SELECT Code,Somme
      FROM MyTable
       WHERE [Date debut] >= "<%Response.Write(Request.Form["MyTextBox"]);%>"
      GROUP BY [Niveau]
      ORDER BY 2 DESC" >
      </asp:SqlDataSource>
    (lorsque je commente le code marqué en rouge, tout marche nickel !)

    sauf que lors de la compilation, j'ai eu ce message d'erreur !!


    Les expressions littérales telles que '<%$ ConnectionStrings:ConnectionString %>' ne sont pas autorisés. Utilisez <asp:Literal runat="server" Text="<%$ ConnectionStrings:ConnectionString%>" /> à la place. ~\statistiques.aspx 190

  2. #2
    Membre expérimenté Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Par défaut
    Je te propose d'utiliser un parametre dans ton select au lieu de le concatener

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
      SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID" 
      ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
      RunAt="server">
     
      <SelectParameters>
        <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
      </SelectParameters>
    </asp:sqlDataSource>
    Je t'invite aussi à voir tous les types de parametres :
    surtout ControlParameter et FormParameter

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut
    Mais comment je modifie la valeur de mon paramètre en code behind ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <SelectParameters>
        <asp:controlparameter Name="datedebut" Type="DateTime" />
      </SelectParameters>

  4. #4
    Membre expérimenté Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Par défaut
    t'as pas à le modifier a chaque fois que tu rentre du texte dans ton textbox et que tu fait un postback la valeur est récupérée automatiquement

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut
    Je ne comprends pas votre suggestion g_tarik0010,
    Comment je peux initialisé la valeur de mon controlparameter !
    mon asp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        <asp:SqlDataSource ID="SqlDataSourceEquipe2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
        SelectCommand="SELECT [Niveau] , count(*) AS [Somme] FROM [Table] WHERE [Date debut] >= @equipe_datedebut GROUP BY [Niveau] ORDER BY 2 DESC" >
        <SelectParameters>
        <asp:controlparameter Name="equipe_datedebut" Type="DateTime" ControlID="formStat$cequipe_datedebut" />
      </SelectParameters>
      </asp:SqlDataSource>

    et voici le code behind

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            string date_fin_init = DateTime.Now.ToString("dd/MM/yyyy");
            ControlParameter conditionEquipeDateDebut = new ControlParameter();
            conditionEquipeDateDebut.Name = "equipe_datedebut";
            conditionEquipeDateDebut.ControlID = "formStat$cequipe_datedebut";
      =>  conditionEquipeDateDebut.DefaultValue = date_debut_init;

  6. #6
    Membre expérimenté Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        <asp:SqlDataSource ID="SqlDataSourceEquipe2" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
        SelectCommand="SELECT [Niveau] , count(*) AS [Somme] FROM [Table] 
        WHERE [Date debut] >= @equipe_datedebut GROUP BY [Niveau] ORDER 
        BY 2 DESC" >
        <SelectParameters>
             <asp:controlparameter Name="equipe_datedebut" Type="DateTime" ControlID="cequipe_datedebut"  PropertyName="Depend on the type of your control" DefaultValue="Depend on the type of your control"/>
      </SelectParameters>
      </asp:SqlDataSource>
    Voila un exemple pour PropertyName et un autre pour DefaultValue
    Depuis le code Behind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MyDataSource.SelectParameters["equipe_datedebut"].DefaultValue =
                                         fromDate.SelectedDate.Date.ToString("yyyyMMdd HH:mm:ss");

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/03/2012, 21h03
  2. Réponses: 1
    Dernier message: 26/03/2009, 19h43
  3. Remplacer Dlookup par une requete SQL
    Par nbouseem dans le forum IHM
    Réponses: 9
    Dernier message: 09/06/2006, 16h45
  4. [C#][Débutant] Comment récuperer une valeur d'une requete sql
    Par Cazaux-Moutou-Philippe dans le forum Accès aux données
    Réponses: 2
    Dernier message: 12/05/2006, 01h45
  5. Regroupement par tranche dans une requete SQL (MS SQL)
    Par AODRENN dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/03/2006, 13h21

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