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 :

Récupération de texte dans TMemo, Tedit, Tcombobox et envoi vers une base de données SQL


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Points : 19
    Points
    19
    Par défaut Récupération de texte dans TMemo, Tedit, Tcombobox et envoi vers une base de données SQL
    Bonjour a tous

    J'ai programmer quelques :

    *Tmémo capable de recuperer le chemin d'un fichier que je vais chercher via un opendialog

    *TEdit dans lesquels il faudra completer par Nom Prenom Commentaire etc

    *Tcombobox permettant de choisir differente possibilité de date ou mots

    J'ai une base de donnée SQL avec une table dans laquelle se trouve les colonnes : nom /prenom/ date /fichier /commentaire

    Et donc j'aimerai que les infos que je rentre soit envoyer vers cette base de données via le bouton "Envoyer" par exemple.

    Info :Voila ma ligne qui va chercher le nom de mon dossier pour mon mémo au cas ou ca joue par la suite

    Pour le moment mon bouton envoyer verifie si qq chose est ecrit dans mes Memo/ Edit/ Combobox et si rien n'est ecrit il me fait des showmessage "Veuillez remplir ca et ca et ca ....."

    Memo3->Lines->Add(OpenDialog1->FileName);

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Suis-je dans le mauvais forum ? Les indices ne coulent pas a flot

    Bref j'ai reussi a envoyer mes informations dans ma base de données SQL.

    Le soucis c'est que par exemple ma BDD se compose de 4 colonnes : Nom / Prenom / Date / Commentaire.

    Donc les informations sont bien recupérées mais le probleme c'est que le Nom va aller dans la ligne 1 , colonne "Nom"

    Et apres Prenom dans la colonne "Prénom" mais de la ligne 2
    Date ligne 3
    Commentaire ligne 4...

    J'arrive donc tout mettre dans les bonnes colonnes mais comment faire pour que tout aille sur la meme ligne ?
    Disons que lire en diagonal ne fait pas tres pro

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut, et bienvenue sur le forum.

    Il faut comprendre que, si les différentes informations que tu introduit doivent faire partie d'un seul et meme enregistrement, tu dois veiller à créer une requête correcte, qui passera effectivement les différentes valeurs d'un seul coup.

    La requête serait sans doute proche (cela fait longtemps que je n'ai plus fait de SQL, et elle n'est donc pas garantie ) de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    insert into TATABLE 
           set("nom", "prenom", "date", "fichier", "commentaire") 
           values( valeur_champs_nom, 
                   valeur_champs_prenom, 
                   valeur_champs_date, 
                   valeur_champs_commentaire )
    PS Tu t'es, effectivement, trompé de forum, car il semblerait que tu travailles avec Qt (esprit de déduction quand tu nous tiens )... je déplace la discussion
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Merci de ta réponse et du déplacement du post.

    Voici la manière dont j'ai procédé


    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
    AnsiString Nom; 
    AnsiString Commentaire; 
    AnsiString Piece; 
    AnsiString Outils; //Je declare mes variables
    AnsiString Machine; 
    AnsiString Date; 
    AnsiString Code;
    Query1->Close();
    Query1->SQL->Clear();
     
     
    Nom = "INSERT INTO Table_3(Nom) VALUES('"; 
    Nom = Nom + Memo2->Text; 
    Nom = Nom+"')"; 
    //En partant de cette methode , je la répete pour tout les autres champs que j'aurai a afficher dans ma BDD 
     
    // En rouge le nom de ma table sur SQL
    // En violet le nom de la colonne dans la table
     
    Piece = "INSERT INTO Table_3(Piece) VALUES('"; 
    Piece = Piece + Memo3->Text; // Le nom de la piece étant écrit dans le mémo3
    Piece = Piece+"')"; 
     
    Commentaire = "INSERT INTO Table_3(Commentaire) VALUES('"; 
    Commentaire = Commentaire + Edit4->Text; // Le commentaire étant écrit dans le tedit 4
    Commentaire = Commentaire+"')"; 
     
    Outils = "INSERT INTO Table_3(Outils) VALUES('"; 
    Outils = Outils + ComboBox5->Text; // Le nom de l'outil étant écrit dans le ComboBox5 etc
    Outils = Outils+"')"; 
     
    Machine = "INSERT INTO Table_3(Machine) VALUES('"; 
    Machine = Machine + ComboBox1->Text; 
    Machine = Machine+"')"; 
     
    Date = "INSERT INTO Table_3(Date) VALUES('"; 
    Date = Date + ComboBox2->Text; 
    Date = Date+"')"; 
    Code = "INSERT INTO Table_3(Code) VALUES('";
    Code = Code + Memo1->Text;
    Code = Code+"')";
     
    Query1->SQL->Add(Nom); 
    Query1->SQL->Add(Date); 
    Query1->SQL->Add(Piece); 
    Query1->SQL->Add(Outils); 
    Query1->SQL->Add(Machine); 
    Query1->SQL->Add(Commentaire); 
    Query1->SQL->Add(Code);
    Query1->ExecSQL();

    Du bien gros et bien long , alors que je suis sur qu'il peut y avoir bien plus court.
    A noter que j'ai donner le même nom à mes variables qu'a mes colonnes de la table.

    Je vais essayer de suite d'adapter ton aide à mon code . La synthaxe n'est pas reconnu mais je dois bien avoir des equivalents. Apparament pratique pour tout caser ensemble et eviter de recommencer a la ligne pour un autre a chaque fois. Merci

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    Voila au bout du compte je suis arrivé a mes fin !

    J'ai remplacé mes variables par des lettres pour aller plus vite ce qui me donne

    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
     a = "INSERT INTO Table_1(Nom,Piece,Commentaire,Outils,Machine,Date,Code) VALUES('";
     a = a + Memo2->Text;
     a = a+ "','";                           // NOM
     b = a + Memo3->Text;
     b = b+ "','";                           // COMMENTAIRE
     c = b + Edit4->Text;
     c = c+ "','";                           // PIECE
     d = c + ComboBox5->Text;
     d = d+ "','";                           // OUTILS
     e = d + ComboBox1->Text;
     e = e+ "','";                           // MACHINE
     f = e + ComboBox2->Text;
     f = f+ "','";                           // DATE
     g = f + Memo1->Text;
     g = g+ "')";                            // CODE
    Merci d'avoir pris le temps de m'aider ;D

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Les Requêtes paramètrées ça parle à quelqu'un ?
    Regarde ParamByName !
    sinon ça c'est à quoi toute ces variables ?
    pour ne pas utiliser sprintf ou Format qui gère la mémoire bien plus efficacement qu'une série de concat provocant des réallocations mémoires successives !

    On dirait un vilain devoir scolaire !

    Et les composants DBMemo, DBEdit, DBComboBox, ça fonctionne aussi, soit directement connecté sur le TTable ou TQuery soit via l'intermédiaire d'un TClientDataSet si tu souhaites générer ton propre SQL !
    Ou utiliser un TUpdateSQL (propriété UpdateObject d'un TQuery)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Points : 19
    Points
    19
    Par défaut
    C'est dans le but de recuperer un code , de remplir une fiche de renseignements , et d'envoyer le tout en base de donnée, une seconde partie servira a valider ou supprimer ce qui est dans la base de donnée et envoyer le code vers une machine outils pour usiner une piece.

    C'est vrai que c'est moche , pas bien organisé etc mais ça marche et entant que tres jeune débutant en programmation objet j'en suis plutôt content et je ne connais pas les requetes.

    Sinon pour les variables j'ai le a pour nom, b pour piece, c pour commentaire etc etc.

    Je te remercie d'avoir répondu, je vais jetter un oeil a ParamByName

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/03/2008, 10h21
  2. Réponses: 7
    Dernier message: 26/05/2007, 15h14
  3. Réponses: 2
    Dernier message: 04/05/2007, 15h13
  4. Charger une base de données Sql dans un datagrid!
    Par misscricri dans le forum Windows Forms
    Réponses: 7
    Dernier message: 18/01/2007, 11h42
  5. rajouter des data dans une Base de donnée SQL
    Par el_pilacho dans le forum Accès aux données
    Réponses: 1
    Dernier message: 12/01/2007, 12h42

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