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. #21
    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 : 39
    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
    Si ca ne fonctionne toujours pas, essaye en séparant ta requete en deux ligne, certain SGBD l'exige :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Query2->SQL->Clear();
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES ('"+(AnsiString)(DateFin - DateDebut)+"')" ;
    Query2->SQL->Add(requete2);
    requete2 = "WHERE Login='"+LoginZone->Text+"'";
    Query2->SQL->Add(requete2);
    Query2->ExecSQL();
    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 .

  2. #22
    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 ero-sennin
    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+"';";
    j'ai dèja essayé.
    ça me fait une erreur de syntaxe

  3. #23
    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 pottiez
    Si ca ne fonctionne toujours pas, essaye en séparant ta requete en deux ligne, certain SGBD l'exige :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Query2->SQL->Clear();
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES ('"+(AnsiString)(DateFin - DateDebut)+"')" ;
    Query2->SQL->Add(requete2);
    requete2 = "WHERE Login='"+LoginZone->Text+"'";
    Query2->SQL->Add(requete2);
    Query2->ExecSQL();
    Merci mais il demande toujours un point virgule. ce n'est pas normale?!!!
    autant c Builder qui foire? non?

  4. #24
    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 : 39
    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
    Je ne pense pas, lorsque tu envoie ta requete un message revien du SGBD, Borland l'affiche mais c'est bien le SGBD qui a généré l'erreur, maintenant si tu nous montre le message d'erreur en entier on verra peut etre mieux.
    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 .

  5. #25
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    et comme ça, ça marche???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Query2->SQL->Clear();
    TDateTime Difference = DateFin - DateDebut;
    AnsiString requete = "INSERT INTO T_User (TpsConnexion) VALUES ("+QuotedStr(Difference.DateString())+") WHERE Login="+QuotedStr(LoginZone->Text);
    Query2->SQL->Add(requete);
    Query2->ExecSQL();
    + + +

  6. #26
    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,

    Citation Envoyé par pottiez
    Si ca ne fonctionne toujours pas, essaye en séparant ta requete en deux ligne, certain SGBD l'exige :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Query2->SQL->Clear();
    AnsiString requete2 = "INSERT INTO T_User (TpsConnexion) VALUES ('"+(AnsiString)(DateFin - DateDebut)+"')" ;
    Query2->SQL->Add(requete2);
    requete2 = "WHERE Login='"+LoginZone->Text+"'";
    Query2->SQL->Add(requete2);
    Query2->ExecSQL();
    Je me demande pas si tu n'as pas oublié le ; à la fin de la requête SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete2 = "WHERE Login='"+LoginZone->Text+"';";
    Peut-être que je me trompe mais bon, je tente

  7. #27
    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
    dac, voila le codage de mes boutons Annuler, OK et Quitter
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    TDate DateDebut;
    TDate DateFin;
    //AnsiString dateDebut ;
    //AnsiString dateFin ;
     
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::AnnulerButtonClick(TObject *Sender)
    {
    Close();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::OKButtonClick(TObject *Sender)
    {
    //ouverture et connexion, bdd et table
    Session1->Open();
    Database1->Open();
    Table1->Open();
    //si les champs sont vides ou contiennent des espaces
    if(Trim(LoginZone->Text) == "" || Trim(PasswordZone->Text) =="")
     {
     ShowMessage("Veuillez saisir un nom d'utilisateur et un mot de passe svp");
     LoginZone->Text="";
     PasswordZone->Text="";
     }
     else {
    // requête SQL
     Query1->SQL->Clear();
      AnsiString requete = "select count(Login) as nbReponse from T_User where Login= '"+LoginZone->Text+"' and Password= '"+PasswordZone->Text+"'";
      Query1->SQL->Add(requete);
      Query1->Open();
    int nbrep = Query1->FieldByName("nbReponse")->AsInteger;
    if (nbrep>0){  //bon Login, bon Password
                 ShowMessage("Bienvenue");
                 DateDebut=FormatDateTime("DD/MM/YYYY HH:MM:SS",Now());
                 ShellExecute(NULL,"open","winmine.exe","","",SW_SHOWDEFAULT);
                 //std::system( "winmine.exe" );
     
     
                }
                else{ ShowMessage("Nom d'utilisateur ou mot de passe invalide");}
    Query1->Close();
         }
    // fermeture et déconnexion
    //Session1->Close();
    //Database1->Close();
    //Table1->Close();
    }
    //---------------------------------------------------------------------------
     
    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)+"')" ;
    Query2->SQL->Add(requete2);
    requete2 = "WHERE Login='"+LoginZone->Text+"'";
    Query2->SQL->Add(requete2);
    Query2->ExecSQL();
    }
    et voilà l'erreur qui apparait dans une boite de dialogue "Notification d'une exeption du debogueur" :
    Le project AccesMEB.exe a provoqué une classe d'exeption EDBEngineError avec le message 'Erreur SQL générale.
    [Microsoft][Pilote ODBCMicrosoft Access] Point-virgule absent à la fin de l'instruction SQL.'. Processus stopé...

  8. #28
    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 bakaneko
    et comme ça, ça marche???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Query2->SQL->Clear();
    TDateTime Difference = DateFin - DateDebut;
    AnsiString requete = "INSERT INTO T_User (TpsConnexion) VALUES ("+QuotedStr(Difference.DateString())+") WHERE Login="+QuotedStr(LoginZone->Text);
    Query2->SQL->Add(requete);
    Query2->ExecSQL();
    Toujours la même erreur

  9. #29
    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 : 39
    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
    C'est quand même bisard cette erreur, j'ai plusieur projet qui font des requetes SQL sur Access ou d'autres SGBD, mais je n'ai jamais besoin de mettre de ';'
    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 .

  10. #30
    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
    et si j'essaie de mettre la requete dans la propriété SQL du composant? ça pourrait marcher ça? qu'est ce qu'il faut écrire ?

  11. #31
    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 : 39
    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
    Bin tu l'écrit déjà dans la propriété SQL, c'est ce que tu fait avec la fonction Add(), cette fonction ajoute une ligne dans la propriété SQL
    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 .

  12. #32
    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
    Tu peux toujours essayer de coder quelque chose en dur pour voir si déjà cela fonctionne correctement.

    Je m'explique lol:
    Au lieu de mettre Login->Texte, DureeDebut-DureeMoins, essaie de mettre des valeurs et vois si cela fonctionne.

    Moi non plus je ne vois pas trop de où pourrait venir le problème

  13. #33
    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
    Ok je vais essayer de coder en dure pour voir ce que ça fait. je vous tiens au courant merci pour votre aide. je dois y aller maintenant @++

  14. #34
    Membre actif Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Points : 206
    Points
    206
    Par défaut Base de données
    salut, j'ai devellopez un logiciel pour cybercafe

    si c'est cela que tu comptes faire, je peux t'aider.

    bon courage

    @+

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, 16h49
  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, 08h02
  3. Réponses: 10
    Dernier message: 17/03/2007, 14h05
  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, 16h32
  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, 09h20

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