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++Builder Discussion :

enregistrer dans une base de données


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Points : 58
    Points
    58
    Par défaut enregistrer dans une base de données
    Bonjour
    J'ai un programme d'authentification (Login, Password) qui retourne la durée de connexion de chaque utilisateur. Les Login et Password des utilisateurs sont enregistrés dans une base de données sous une table (T_User). dans la table, il ya un champ vide (TpsConnexion). L'utilisatuer se connecte grâce a son login et son password et puis quand il clique sur le bouton "Quitter", la durée de connexion s'affiche sur une boîte de dialogue. J'aimerai pouvoir stocké cette durée dans le champs "TpsConnexion" de ma table.
    Merci pour votre aide

  2. #2
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Essaie ce lien developpez.com
    Plus nombreux sont les problèmes auxquels on réfléchit , plus on risque de n'en comprendre aucun .
    Pas de questions techniques en privé

  3. #3
    Membre du Club
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par karami
    Essaie ce lien developpez.com
    C'est ce lien qua j'ai utilisé pour établir la connexion entre mon programme et la base de données. mais il dit pas comment on peut enregistrer des données dans la base. ça doit se faire automatiquement après la déconnexion car l'utilisateur n'a pas accès à la base de données.

  4. #4
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Alors j'espère que cette source peut te servir.
    Fichiers attachés Fichiers attachés
    Plus nombreux sont les problèmes auxquels on réfléchit , plus on risque de n'en comprendre aucun .
    Pas de questions techniques en privé

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Tu dois utiliser le composant TQuery. Pour insérer des données dans une BD fais comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Query1->SQL->Clear();
    Query1->SQL->Add("INSERT INTO TaTable (champ1) VALUES (Valeur1) WHERE Utilisateur=...;");
    Query1->ExecSQL();
    Voilà
    Je te laisse un peu bosser lol

    N'oublies pas le tag Résolu si c'est ok et tiens nous au courant

  6. #6
    Membre du Club
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Points : 58
    Points
    58
    Par défaut
    merci
    une question, "champ1" et "valeur1" represente quoi en fait?

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Champ1 représente dans ton cas à TpsConnexion et valeur1 au temps passé.

  8. #8
    Membre du Club
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Points : 58
    Points
    58
    Par défaut
    j'ai déja un composant Tquery avec lequel j'execute une requete. est ce qu'il faut que j'en utilise un deuxième?

  9. #9
    Membre du Club
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Points : 58
    Points
    58
    Par défaut
    Voiçi la fonction Quitter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void __fastcall TForm1::QuitterButtonClick(TObject *Sender)
    {
    DateFin=FormatDateTime("DD/MM/YYYY HH:MM:SS",Now());
    ShowMessage("durée = " + (DateFin - DateDebut)) ;
    Query2->SQL->Clear();
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES (+ (DateFin - DateDebut)) WHERE Login= '"+LoginZone->Text+"'";
    Query2->SQL->Add(requete2);
    Query2->ExecSQL();
    }
    Moi j'aimerai enregistrer la durée "DateFin - DateDebut" dans le champ TpsConnexion de ma table. Mais ceci me genere une erreur SQL

  10. #10
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Si tu veux faire une nouvelle requête avec le même composant TQuery, rien t'empêche de le faire, cependant si pour x ou y raison tu dois venir faire des modifications ultérieurement ou même, juste pour la maintenance du programme, moi je te conseillerai de faire un nouveau composant TQuery, quitte à le créer dynamiquement. Déjà voyons pour ton erreur :

    Essaie ce code et si cela ne fonctionne pas, poste nous le message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void __fastcall TForm1::QuitterButtonClick(TObject *Sender)
    {
    DateFin=FormatDateTime("DD/MM/YYYY HH:MM:SS",Now());
    ShowMessage("durée = " + (DateFin - DateDebut)) ;
    Query2->SQL->Clear();
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES ("+(AnsiString)(DateFin - DateDebut)+") WHERE Login="+LoginZone->Text+";"
    Query2->SQL->Add(requete2);
    Query2->ExecSQL();
    }
    @ ++

  11. #11
    Membre du Club
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Points : 58
    Points
    58
    Par défaut
    Salut
    je n'ai plus la même erreur. Après avoir corrigé le code, il me dit que le champ '00:10' est d'un type inconnu. 00:10 représente le temps de connexion ici(c'est à dire +(AnsiString)(DateFin - DateDebut)+).

  12. #12
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Normal il manque les guillemet car l'heure est definit comme une chaine de caractere :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void __fastcall TForm1::QuitterButtonClick(TObject *Sender)
    {
    DateFin=FormatDateTime("DD/MM/YYYY HH:MM:SS",Now());
    ShowMessage("durée = " + (DateFin - DateDebut)) ;
    Query2->SQL->Clear();
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES ('"+(AnsiString)(DateFin - DateDebut)+"') WHERE Login="+LoginZone->Text+";"
    Query2->SQL->Add(requete2);
    Query2->ExecSQL();
    }
    les modifications sont en rouge
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  13. #13
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Dans ta BD, le champs où tu enregistres les temps de connexion est de quel type?

    EDIT:

    Ah ba j'avais pas vu! Essaie le code de Pottiez et dis nous ce qu'il en est

  14. #14
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Citation Envoyé par zakalova
    Salut
    je n'ai plus la même erreur. Après avoir corrigé le code, il me dit que le champ '00:10' est d'un type inconnu. 00:10 représente le temps de connexion ici(c'est à dire +(AnsiString)(DateFin - DateDebut)+).
    essaye d'inserer la variable (AnsiString)(DateFin - DateDebut) avec les 2 quotes.
    Plus nombreux sont les problèmes auxquels on réfléchit , plus on risque de n'en comprendre aucun .
    Pas de questions techniques en privé

  15. #15
    Membre du Club
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Points : 58
    Points
    58
    Par défaut
    Le type du champ "TpsConnexion" est Date/heure.
    maintenant il n'y a plus l'erreur champ inconnu mais il me dit qu'il y a erreur SQL general et qu'un point virgule manque à l'insruction SQL. Ma requête ressemble à cela maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Query2->SQL->Clear();
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES ('"+(AnsiString)(DateFin - DateDebut)+"') WHERE Login='"+LoginZone->Text+"'";
    Query2->SQL->Add(requete2);
    Query2->ExecSQL();

  16. #16
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Citation Envoyé par zakalova
    Le type du champ "TpsConnexion" est Date/heure.
    maintenant il n'y a plus l'erreur champ inconnu mais il me dit qu'il y a erreur SQL general et qu'un point virgule manque à l'insruction SQL. Ma requête ressemble à cela maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Query2->SQL->Clear();
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES ('"+(AnsiString)(DateFin - DateDebut)+"') WHERE Login='"+LoginZone->Text+"'";
    Query2->SQL->Add(requete2);
    Query2->ExecSQL();
    t'es sur que c'est "manquant"?
    si oui tu fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES ('"+(AnsiString)(DateFin - DateDebut)+"') WHERE Login='"+LoginZone->Text+"';";
    Plus nombreux sont les problèmes auxquels on réfléchit , plus on risque de n'en comprendre aucun .
    Pas de questions techniques en privé

  17. #17
    Membre du Club
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par karami
    t'es sur que c'est "manquant"?
    Oui il dit : point virgule absent à la fin de l'instruction SQL.
    c bizarre je ne vois où

  18. #18
    Membre éclairé
    Avatar de karami
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2005
    Messages : 343
    Points : 668
    Points
    668
    Par défaut
    Citation Envoyé par zakalova
    Oui il dit : point virgule absent à la fin de l'instruction SQL.
    c bizarre je ne vois où
    Je l'ai marqué en rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES ('"+(AnsiString)(DateFin - DateDebut)+"') WHERE Login='"+LoginZone->Text+"';";
    Plus nombreux sont les problèmes auxquels on réfléchit , plus on risque de n'en comprendre aucun .
    Pas de questions techniques en privé

  19. #19
    Membre du Club
    Profil pro
    Ingénieur Développement
    Inscrit en
    Juin 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Développement

    Informations forums :
    Inscription : Juin 2006
    Messages : 140
    Points : 58
    Points
    58
    Par défaut
    [QUOTE=karami]Je l'ai marqué en rouge :
    oui j'ai vu mais en fait il ya le même problème il m'affiche la boite de dialogue avec l'erreur puis je clique sur ok et im me pointe l'acollade de la fonction avec une flèche jaune

  20. #20
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Je ne suis pas sur, mais remplace la ligne correspondante par celle-ci (j'ai rajouté le point-virgule):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES ('"+(AnsiString)(DateFin - DateDebut)+"') WHERE Login='"+LoginZone->Text+"';";

Discussions similaires

  1. [Conception] Repérer un nouvel enregistrement dans une base de données
    Par MikeV dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/08/2007, 17h49
  2. MàJ/ajout d'un enregistrement dans une base de données mySQL
    Par BMT_Benoît dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/08/2007, 09h02
  3. Réponses: 10
    Dernier message: 17/03/2007, 15h05
  4. [MySQL] Enregistrer dans une base de données à partir d'une liste déroulante
    Par snakejl dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 17/05/2006, 17h32
  5. inscription via le web et enregistrement dans une base de données
    Par titoenis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 17/05/2006, 10h20

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