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
    Expert confirmé

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 150
    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();

  2. #22
    Membre confirmé
    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
    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 confirmé
    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
    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
    Expert confirmé

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 150
    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.

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

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    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 : 39
    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
    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 confirmé
    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
    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 confirmé
    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
    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
    Expert confirmé

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 150
    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 ';'

  10. #30
    Membre confirmé
    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
    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
    Expert confirmé

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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 150
    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

  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 : 39
    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
    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 confirmé
    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
    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 expérimenté 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
    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