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 :

Requête complexe pour remplissage de gridview


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut Requête complexe pour remplissage de gridview
    Bonjour,

    J'ai une table de ma base composé de plusieurs champ. En particulier, j'ai un champ de type varchar 'Chemin' correspondant au chemin d'accés complet de fichier.
    Je voudrais réaliser une extraction sur cette chaine afin de n'afficher que l'extension dans mon tableau mais sans modifier ma base.

    J'ai réalisé ce code mais j'ai une erreur de syntaxe au niveau de la requête et je ne vois pas comment la corriger :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <asp:SqlDataSource ID="SqlDataSourceFichier" runat="server" 
               ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
               SelectCommand="SELECT  [NumFichier],[SUBSTRING(REVERSE(Chemin), 1, CHARINDEX('.', REVERSE(Chemin)) -1) AS Chemin ]
    ,[Taille],[DateCreation]
           FROM [TableImage] "></asp:SqlDataSource>	   
    	   <asp:UpdatePanel ID="UpdatePanel3" runat="server">         
          <ContentTemplate>  
        <asp:GridView ID="GridViewListeFichier" runat="server" OnRowDataBound="GridView1_RowDataBound" AllowPaging="False" ShowHeader="true" 
               AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="NumFichier" 
               DataSourceID="SqlDataSourceFichier" BorderColor="#94979A"  CellPadding="10" BackColor="#ECEBEF"  HeaderStyle-BackColor="#6A97D0" AlternatingRowStyle-BackColor="#D2DBE6" HeaderStyle-ForeColor="White">    
          
           <Columns>
                <asp:TemplateField ShowHeader="true">
                    <ItemTemplate>
                        <asp:CheckBox ID="chkBox" runat="server" />
                    </ItemTemplate>
                    <HeaderTemplate>
                        <asp:CheckBox ID="cbSelectAll" runat="server" Text="" />
                    </HeaderTemplate>
                 </asp:TemplateField>
                       
                <%--  <asp:HyperLinkField datatextfield="NumFichier" 
                 datanavigateurlfields="NumFichier" datanavigateurlformatstring="~\DownloadFile.aspx?NumFichier={0}" headertext="Numéro"  target="_blank" SortExpression="NumFichier" />
                --%>
                
                <asp:BoundField DataField="NumFichier" HeaderText="Numéro" 
                       SortExpression="NumFichier" ShowHeader="true"/>
                       
                  <asp:HyperLinkField datatextfield="Chemin" 
                 datanavigateurlfields="Chemin" datanavigateurlformatstring="~\DownloadFile.aspx?Chemin={0}" headertext="Nom fichier"  target="_blank" SortExpression="Chemin" />     
                  
                <%--  <asp:BoundField DataField="Chemin" HeaderText="Nom fichier" 
                       SortExpression="Chemin" ShowHeader="true"/> --%>
                
                <asp:BoundField DataField="Taille" HeaderText="Taille (kb)" 
                       SortExpression="Taille" ShowHeader="true"/>
                                  
                <asp:BoundField DataField="DateCreation" HeaderText="Date de création" 
                       SortExpression="DateCreation" ShowHeader="true" HtmlEncode="false" DataFormatString="{0:dd/MM/yyyy}" />
                              
           </Columns>
            
       
               
         </asp:GridView>
    Si quelqu'un connait la syntaxe exacte? Merci.

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    A la louche essaye quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUBSTRING( t.f, CHARINDEX('.', t.f)+ 1, LEN(t.f)-CHARINDEX('.', t.f)+ 1) AS Extension
    FROM (SELECT 'c:\ABC\DEF\file.pdf' as f FROM [TableBidon]) as t
    En espérant t'avoir aidé.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Ok d'accord mais une question plus au niveau de la syntaxe de la requete.
    Si je veux afficher non pas Taille dans mon tableau, mais Taille/1000, comment j'écris ma requête sachant que je ne veux pas que mes données en base soient modifiées.

    J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <asp:SqlDataSource ID="SqlDataSourceFichier" runat="server" 
               ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
               SelectCommand="SELECT  [NumFichier],[Chemin],[Taille/1000],[DateCreation]
           FROM [TableImage] "></asp:SqlDataSource>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <asp:SqlDataSource ID="SqlDataSourceFichier" runat="server" 
               ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
               SelectCommand="SELECT  [NumFichier],[Chemin],[Taille]/1000,[DateCreation]
           FROM [TableImage] "></asp:SqlDataSource>
    Mais j'ai touljours un message d'erreur de syntaxe.

    Merci.

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Fais le en C# au moment du binding

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Autre question sur le même sujet:
    Pour l'instant, j'ai dans mon tableau la colonne 'Chemin' sous forme de lien qui se trouve sous la forme (doc.extension).
    Pour faire cela, j'ai utilisé ceci pour insérer mon fichier et les informations associés dans la base:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    using (var command = connection.CreateCommand())
                                {
                                    command.CommandText = "INSERT INTO TableImage(Image,Chemin,Taille,DateCreation,ContentType) values (@file_bytes,@Chemin,@Taille,@DateCreation,@ContentType)";
                                    command.Parameters.Add("file_bytes", SqlDbType.VarBinary).Value = FileUpload1.FileBytes;
                                    command.Parameters.Add("Chemin", SqlDbType.VarChar, 200).Value = FileUpload1.FileName;
                                    command.Parameters.Add("Taille", SqlDbType.VarChar, 50).Value = FileUpload1.PostedFile.ContentLength;
                                    command.Parameters.Add("DateCreation", SqlDbType.Date).Value = DateTime.Now.ToString();
                                    command.Parameters.Add("ContentType", SqlDbType.VarChar, 50).Value = FileUpload1.PostedFile.ContentType;
     
     
                                    command.ExecuteNonQuery();
                                }
    Jusque là, pas de problème.
    Par contre, je voudrais non plus insérer le nom dans la base, mais le chemin complet.
    J'ai donc mis à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     command.Parameters.Add("Chemin", SqlDbType.VarChar, 200).Value = FileUpload1.PostedFile.FileName;
    Le problème, c'est que je n'ai plus de lien au niveau de la colonne Chemin de mon tableau mais du texte brut.

    Est-ce que quelqu'un verrait d'ou cela peut venir? Merci.

Discussions similaires

  1. [MySQL-5.5] Requête complexe pour un nul!
    Par bladinium dans le forum Requêtes
    Réponses: 9
    Dernier message: 10/02/2014, 17h08
  2. Requête complexe pour remplir une plage
    Par Nicolas N. dans le forum Requêtes
    Réponses: 1
    Dernier message: 02/01/2011, 23h52
  3. Réponses: 6
    Dernier message: 09/08/2010, 13h28
  4. [MSSQL2005] Besoin d'aide pour une requête complexe
    Par Vonotar dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/01/2007, 16h47
  5. Aide pour écrire une requête complexe
    Par julienbdx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/11/2005, 16h58

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