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 :

Inserer date dans base


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut Inserer date dans base
    Bonsoir,

    Je souhaite insérer automatiquement la date dans une de mes requêtes INSERT.

    Je fais cela en mode graphique avec un SqlDataSource et un FormView :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                ConnectionString="<%$ ConnectionStrings:csbase %>" 
                InsertCommand="INSERT INTO msg(dateMsg, libMsg, idSujet, idRub) VALUES (@date, @libMsg, @idSujet, @idRub)" 
                SelectCommand="select * from msg">
                <InsertParameters>
                    <asp:QueryStringParameter Name="idSujet" QueryStringField="id" Type="Int32" />
     
                </InsertParameters>
            </asp:SqlDataSource>
    Et le FormView :

    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
    <asp:FormView ID="FormView1" runat="server" DataKeyNames="idRub,idSujet,idMsg" 
                DataSourceID="SqlDataSource2" oniteminserted="FormView1_ItemInserted">
                <InsertItemTemplate>
                    idRub:
                    <asp:TextBox ID="idRubTextBox" runat="server" Text='<%# Bind("idRub") %>' />
                    <br />
                    libMsg:
                    <asp:TextBox ID="libMsgTextBox" runat="server" Text='<%# Bind("libMsg") %>' />
                    <br />
                    userid:
                    <asp:TextBox ID="useridTextBox" runat="server" Text='<%# Bind("userid") %>' />
                    <br />
                    <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
                        CommandName="Insert" Text="Insérer" />
                    &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
                        CausesValidation="False" CommandName="Cancel" Text="Annuler" />
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" 
                        CommandName="New" Text="Nouveau" />
                </ItemTemplate>
            </asp:FormView>
    Il faudrait donc que @date contienne la date actuelle et soit alors insérée dans la base. (le champs concerné est de type datetime).

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    bonjour,

    quel est l'intérêt de récupérer @date dans le INSERT ? pourquoi ne pas le remplacer par une fonction SQL qui renverrait la date actuelle ?

  3. #3
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    GETDATE() en sql server ne semble t'il

  4. #4
    Membre confirmé
    Profil pro
    Responsable informatique
    Inscrit en
    Mars 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 112
    Par défaut
    Bonjour,

    Peut-être aussi (non testés);

    ASPX:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        InsertCommand="INSERT INTO msg(dateMsg, libMsg, idSujet, idRub) VALUES (@date, @libMsg, @idSujet, @idRub)" 
        SelectCommand="select * from msg">
        
        <InsertParameters>
                <asp:QueryStringParameter Name="idSujet" QueryStringField="id" Type="Int32" />
    
            <asp:Parameter Name="date" Type="DateTime" DefaultValue=GetDataTime />  //Vérifies la syntaxe pour mettre une fonction ici
            <asp:Parameter Name="libMsg" Type="String" />
            <asp:Parameter Name="idRub" Type="Int32" />
        </InsertParameters>
    Codebehind:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public string GetDataTime() 
            {
                string sDateActuelle = DateTime.Now.ToLongDateString();
                return sDateActuelle;
            }

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut
    quel est l'intérêt de récupérer @date dans le INSERT ? pourquoi ne pas le remplacer par une fonction SQL qui renverrait la date actuelle ?
    Car en fait je fait un forum, il me faut donc l'heure à laquelle l'utilisateur a posté son message.

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut
    @emaluk : Je ne vois pas comment je pourrais appeler une fonction dans ce genre de lignes...

  7. #7
    Membre confirmé
    Profil pro
    Responsable informatique
    Inscrit en
    Mars 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 112
    Par défaut
    piero53,

    Voir l'exemple ci-dessous, j'ai utilisé "String" au lieu de "DateTime", que tu peux utilise à la place de "String".

    ASPX:
    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
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:cs2FiducDB2 %>"
                DeleteCommand="DELETE FROM TableTest2 WHERE (IdTest = @IdTest)" 
                InsertCommand="INSERT INTO TableTest2(DateTest, TextTest) VALUES (@DateTest, @TextTest)"
                SelectCommand="SELECT IdTest, DateTest, TextTest FROM TableTest2" 
                UpdateCommand="UPDATE TableTest2 SET DateTest = @DateTest, TextTest = @TextTest WHERE (IdTest = @IdTest)">
                
                <DeleteParameters>
                    <asp:Parameter Name="IdTest" Type="Int32" />
                </DeleteParameters>
                
                <UpdateParameters>
                    <asp:Parameter Name="DateTest" Type="String" />
                    <asp:Parameter Name="TextTest" Type="String" />
                    <asp:Parameter Name="IdTest" Type="Int32" />
                </UpdateParameters>
                
                <InsertParameters>
                    <asp:Parameter Name="DateTest" Type="String" />
                    <asp:Parameter Name="TextTest" Type="String" />
                </InsertParameters>
            </asp:SqlDataSource>
    Codebehind:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    protected void Page_Load(object sender, EventArgs e)
            {
                SqlDataSource1.InsertParameters["DateTest"].DefaultValue = DateTime.Now.ToString();
                SqlDataSource1.UpdateParameters["DateTest"].DefaultValue = DateTime.Now.ToString();
            }
    A toi de jouer.

  8. #8
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    sinon en LINQ, c'est encore plus simple, cela évite de se poser pas mal de quetion.

    Sinon tu peux égelement passer par les dbParameter, c'est un peu plus long mais très efficace.

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    je vois toujours pas pourqoui tu est obligé de passer la date en pramêtre alors que c'est quelque chose de "fixe", pour moi tu as juste à mettre la date actuelle dans ton insert ... pas besoin de paramètres.

  10. #10
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut
    Citation Envoyé par jjameau Voir le message
    je vois toujours pas pourqoui tu est obligé de passer la date en pramêtre alors que c'est quelque chose de "fixe", pour moi tu as juste à mettre la date actuelle dans ton insert ... pas besoin de paramètres.
    Ben oui c'est bien ce que je souhaite.

    Qu'est-ce-que donnerait cette solution plus simple? Ce n'est pas la même qu'emaluk avec sa fonction date?

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    InsertCommand="INSERT INTO msg(GETDATE(), libMsg, idSujet, idRub) VALUES (@date, @libMsg, @idSujet, @idRub)" 
        SelectCommand="select * from msg">
     
        <InsertParameters>
                <asp:QueryStringParameter Name="idSujet" QueryStringField="id" Type="Int32" />
            <asp:Parameter Name="libMsg" Type="String" />
            <asp:Parameter Name="idRub" Type="Int32" />
        </InsertParameters>
    comme ca?

  12. #12
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut
    Merci

    Résolu

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

Discussions similaires

  1. Problème insertion date dans base Access
    Par pep972 dans le forum JDBC
    Réponses: 2
    Dernier message: 13/06/2008, 11h15
  2. ranger date dans base de donnée
    Par SOPSOU dans le forum Langage
    Réponses: 1
    Dernier message: 21/12/2007, 21h36
  3. [Dates] affichage date dans base sql
    Par gtony dans le forum Langage
    Réponses: 4
    Dernier message: 16/10/2007, 19h00
  4. Inserer date dans Mysql a partir de ASP.NET
    Par MBAYE BABACAR GUEYE dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 11/09/2007, 10h23
  5. problème champ date dans base oracle
    Par ludovik dans le forum Oracle
    Réponses: 6
    Dernier message: 25/07/2005, 15h48

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