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 :

[DBExpress] Formulaire d'insertion (Base de donn�e)


Sujet :

C++Builder

  1. #1
    Membre confirm� Avatar de Nadd
    Profil pro
    �tudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Par d�faut [DBExpress] Formulaire d'insertion (Base de donn�e)
    Bonjour
    J'ai su cr�e un petit formulaire (Form) pour mon programme qui a pour but d'ajouter une donn�e � l'une de mes table.

    La requ�te devrait sembler � ca (- modification) :

    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
     
    INSERT INTO [DBUse].[dbo].[Table_2]
               ([ID]
               ,[Nom]
               ,[Prenom]
               ,[Adresse]
               ,[Email]
               ,[Tel]
               ,[Fax]
               ,[Type]
               ,[Client])
         VALUES
               (2
               ,'Zaa'
               ,'Zaa'
               ,'Chauss'
               ,'Aucune'
               ,'Aucun'
               ,'Aucun'
               ,'Administrateur'
               ,'Oui')
    Je dispose sur mon Formulaire d'un boutton "Enregistrer", et j'aimerais que lorsque je clic dessus, ce prenne les donn�es contenue dans les Champs Texte et les replaces dans la requ�te. Mais pour la requ�te... Comment faire ? QUe dois-je utiliser comme composant ? Un TSQLSimpleDataSet ? un TSQLQuery (+ TSQLConnection) ?

    En vous remerciant d'avance,

    Nadd.

  2. #2
    Membre exp�riment�
    Avatar de Djob
    Inscrit en
    Ao�t 2002
    Messages
    215
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 215
    Par d�faut
    � priori je dirais TSQLQuery...


    compose d'abord la chaine representant ta requete par rapport aux donn�es
    provenant de tes boites de saisies...
    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
     
    AnsiString name = EDT_NAME->Text;
    AnsiString email = EDT_EMAIL->Text;
    int CustId =....;
    ...etc...
     
    String MyQueryStr = "INSERT INTO ...... VALUES("
                                 + IntToStr(CustId)+",'"
                                 + name + "','"
                                 + ....
                                 + ")";
     
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Text = MyQueryStr;
    SQLQuery1->PrepareStatement();
    SQLQuery1->ExecSQL(false);
    bon c'est toujours � prendre avec des pincettes car nous n'avons pas les m�mes composants dbexpress....

  3. #3
    Membre confirm� Avatar de Nadd
    Profil pro
    �tudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Par d�faut
    Etant donn�e que je n'ai pas r�ussi avec le TSQLQuery, j'ai d�cid� d'essaier avec un SimpleDataSet (Qui avais bien marcher dans mon dernier probl�me).
    Seulement, une nouvelle erreur apparait !

    Mon Code :

    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
     
    void __fastcall TMDIChild3::SaveClick(TObject *Sender)
    {
    String name = Edit1->Text;
    String prenom = Edit2->Text;
    String adresse = Edit3->Text;
    String email = Edit4->Text;
    String tel = Edit5->Text;
    String fax = Edit6->Text;
    String type = ComboBox1->Text;
     
    String myQuery = "INSERT INTO Table_2(ID,Nom,Prenom,Adresse,Email,Tel,Fax,Type,Client) VALUES (NULL,'Name','Test1','Test1','Test1','Test1','Test1','Test1','Test1')";
     
    SimpleDataSet1->Close();
    SimpleDataSet1->DataSet->Close();
    SimpleDataSet1->DataSet->CommandText = myQuery;
    SimpleDataSet1->DataSet->Open();
    SimpleDataSet1->Open();
     
    }
    L'erreur est :

    'Cursor not returned from Query'
    Que puis-je faire ?

    [PS] : Les donn�es s'ajoutent bien � la Table_2...

  4. #4
    Membre exp�riment�
    Avatar de Djob
    Inscrit en
    Ao�t 2002
    Messages
    215
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 215
    Par d�faut
    je ne sais pas si tu as le droit de faire des open() avec de requetes du style insert... regarde si tu as plutot quelque chose du style ExecSQL() au moins sur le DataSet...

    NB : fait aussi attention � ce que SimpleDataSet1 ne soit reli� � aucune datasource ou autre...
    ( n'oublie pas que tu travailles avec des composant unidirectionnels )

  5. #5
    Membre confirm� Avatar de Nadd
    Profil pro
    �tudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Par d�faut
    Aucun ExecSQL

    J'obtient cette erreur : "Unable to determine field names for %s" et "Unable to execute this Query" lorsque j'utilise ce code :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    SQLQuery1->Close();
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Text = myQuery; 
    SQLQuery1->PrepareStatement(); 
    SQLQuery1->ExecSQL(false);
    SQLQuery1->Open();
    Cordialement,

    Nadd.

  6. #6
    Membre confirm� Avatar de Nadd
    Profil pro
    �tudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Par d�faut
    Muarf ^^
    Probl�me r�solu !

    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
     
    void __fastcall TMDIChild3::SaveClick(TObject *Sender)
    {
    String name = Edit1->Text;
    String prenom = Edit2->Text;
    String adresse = Edit3->Text;
    String email = Edit4->Text;
    String tel = Edit5->Text;
    String fax = Edit6->Text;
    String type = ComboBox1->Text;
     
    String myQuery = "INSERT INTO Table_2(ID,Nom,Prenom,Adresse,Email,Tel,Fax,Type,Client) VALUES (NULL,'Name','Test1','Test1','Test1','Test1','Test1','Test1','Test1')";
     
    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Text = myQuery;
    SQLQuery1->ExecSQL(false);
     
    }
    Le "SQLQuery1->PrepareStatement()" semblait poser probl�me, et l'Open et le Close inutile.

    Encore une fois, un grand merci !


    Amicalement,

    Nadd.

  7. #7
    Membre confirm� Avatar de Nadd
    Profil pro
    �tudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Par d�faut
    Par contre, je n'ai pas bien compris pour l'insertion des "nom", "pr�nom", ... dans la requ�te SQL.

    Pouvez vous m'�clairez ?

    En vous remerciant, une fois de plus, d'avance,

    Nadd.

  8. #8
    Membre exp�riment�
    Avatar de Djob
    Inscrit en
    Ao�t 2002
    Messages
    215
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 215
    Par d�faut
    en fait c'est juste la pr�paration d'une chaine de caractere qui va constituer la requete....

    quand tu fais :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String name = Edit1->Text;
    String prenom = Edit2->Text;
    String adresse = Edit3->Text;
    String email = Edit4->Text;
    String tel = Edit5->Text;
    String fax = Edit6->Text;
    String type = ComboBox1->Text;
     
    String myQuery = "INSERT INTO Table_2(ID,Nom,Prenom,Adresse,Email,Tel,Fax,Type,Client) VALUES (NULL,'Name','Test1','Test1','Test1','Test1','Test1','Test1','Test1')";
    l� il faut bien remplacer 'Name' 'Test1' par les valeurs des variables prenom, adresse, etc....

    donc on fait une concatenation de chaine de caracteres :
    requete = "du texte"+prenom+"du texte" +nom

    soit :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    AnsiString MyQueryStr = "INSERT INTO Table_2(ID,Nom,Prenom,Adresse,Email,Tel,Fax,Type,Client) VALUES(" 
                                         +Id+"','" 
                                         +prenom+"','"
                                         +adresse+"','"
                                          ..........
                                          +")";
    voil� la requete est prete sous forme d'une chaine de caract�re..

  9. #9
    Membre confirm� Avatar de Nadd
    Profil pro
    �tudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Par d�faut
    Merci beaucoup Ca marche nickel
    J'ai repris ce que vous aviez fait pour le Int plus haut.

    Encore une fois merci beaucoup !

    Cordialement,

    Nadd.

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Par d�faut
    slt,

    AnsiString MyQueryStr = "INSERT INTO Table_2(ID,Nom,Prenom,Adresse,Email,Tel,Fax,Type,Client) VALUES("
    +Id+"','"
    +prenom+"','"
    +adresse+"','"
    ..........
    +")";
    Erreur de syntaxe chez moi... Pouvez-vous m'aider?

  11. #11
    Membre r�gulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    9
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Par d�faut storedproc
    Une requ�te comme celle l� g�nere plus de traffic sur le r�seau et plus de travail qu'une proc�dure stock�e.
    Avec une stored proc, seules les donn�es � ins�rer transitent sur le r�seau (ou presque), la requ�te, elle, est sur le serveur.

  12. #12
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Par d�faut
    Quelqu'un peux m'aider pour la syntaxe svp?

  13. #13
    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
    moi je fais comme cela et ca marche tres bien.

    Code C++ : 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
    TLocateOptions Opts;
         if(Table->Locate("Ncd",Form1->tab[Form1->cptuser]->Ncd,Opts))
          { 
           Table->Edit();
           Table->FieldByName("Ncd")->Value   = user->Text.c_str();
           Table->FieldByName("Cod")->Value   = "????";
           Table->FieldByName("Nom")->Value   = nom->Text.c_str();
           Table->FieldByName("Pren")->Value  = prenom->Text.c_str();
           Table->FieldByName("Adre")->Value  = adresse->Text.c_str();
           Table->FieldByName("Loca")->Value  = localite->Text.c_str();
           Table->FieldByName("Vill")->Value  = ville->Text.c_str();
           Table->FieldByName("Gsm")->Value   = gsm->Text.c_str();
           Table->FieldByName("Tel")->Value   = telephone->Text.c_str();
           Table->FieldByName("Mail")->Value  = email->Text.c_str();
           Table->FieldByName("Date")->Value  = datins->Text;
           Table->Post(); 
           Table->Refresh();
          }


    et..........

    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if(strcmp(Form1->tab[Form1->cptnuser]->nom,user->Text.c_str())!=0)
           {
             AnsiString a;
             a = " UPDATE GestEmp SET Pseudo = '" + user->Text + "'";
             a = a +  " where Pseudo = '" + Form1->tab[Form1->cptnbuser]->nom  
             + "'";
     
             Form27->update->SQL->Clear();
             Form27->update->SQL->Add(a);
             Form27->update->ExecSQL();
             Form27->Table1->Refresh();
     
             ShowMessage(" Les nouvelles données sont sauvegardées ");
           }

  14. #14
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Par d�faut
    Merci pour ta r�ponse, elle m'aide beaucoup. Cependant j'aimerais utiliser la requ�te "INSERT" et je n'arrive pas a adapter ton code. (erreur de syntaxe)

    AnsiString a = "INSERT INTO serveurs(nom,max,map) VALUES("+nom1+"','"+max1+"','"+map1+"','"+")";
    Images attach�es Images attach�es  

  15. #15
    Futur Membre du Club
    Inscrit en
    Ao�t 2004
    Messages
    4
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4
    Par d�faut
    Le "SQLQuery1->PrepareStatement()" semblait poser probl�me
    J'ai eu le m�me probleme il suffit de remplacer le preparestatement par
    Prepared = true ...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Formulaire et insertion base de donn�es
    Par extensite dans le forum Django
    R�ponses: 1
    Dernier message: 26/08/2019, 18h02
  2. probleme insertion multiple d'une formulaire dans la base de donn�
    Par geni1985 dans le forum D�veloppement Web en Java
    R�ponses: 1
    Dernier message: 03/04/2011, 21h48
  3. ajout dans un formulaire et une base de donn�e
    Par mademoizel dans le forum G�n�ral JavaScript
    R�ponses: 5
    Dernier message: 13/06/2006, 14h42
  4. [Conception] Consulter les donn�es d'un formulaire via la base de donn�es
    Par snakejl dans le forum PHP & Base de donn�es
    R�ponses: 6
    Dernier message: 16/05/2006, 19h51
  5. [MySQL] G�n�ration automatique de formulaire sur une base de donn�es
    Par Tr@nkill dans le forum PHP & Base de donn�es
    R�ponses: 22
    Dernier message: 04/04/2006, 14h28

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