Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1312 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Requete SQL avec Builder C++ 6

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete SQL avec Builder C++ 6

n°815188
lolo81
Posté le 04-08-2004 à 18:41:28  profilanswer
 

Voila mon probléme:
 
J'ai une base de donnée sous Access et un programme réalisé avec C++Builder6 et donc pour mettre des données dans ma table de ma base de données j'utilise une requete SQL.
Mais comme les données que je donne a ma table sont variables il me faut insérer du code dans ma requete, car je récupére des valeurs saisies au clavier par l'utilisateur.Et donc ca ne marche pas!
Pouvez vous m'aider?

mood
Publicité
Posté le 04-08-2004 à 18:41:28  profilanswer
 

n°815199
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-08-2004 à 18:58:07  profilanswer
 

lolo81 a écrit :

Et donc ca ne marche pas!
Pouvez vous m'aider?


 
Pas avec une description aussi précise de ce qui ne marche pas... quel est le problème ? Tu ne sais pas comment assembler les données dans la requête, ou bien tu as une erreur avec le code que t'as mis ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°815939
lolo81
Posté le 05-08-2004 à 14:39:56  profilanswer
 

Quand les données sont fixes ca marche nikel,dés que j'insére du code ou un nom de variable dans ma requete ca plante.
Du style:
 
INSERT INTO Donnees
VALUES (12,10,13,temperature,"ca marche pas" );

n°816030
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-08-2004 à 15:24:37  profilanswer
 

...SQL.Text = Format("INSERT INTO Donnees VALUES (12,10,13,%d,%s)", ARRAYOFCONST((temperature, "ca marche pas" )));


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°816144
lolo81
Posté le 05-08-2004 à 16:43:02  profilanswer
 

Tu peux m'expliquer plus précissemment stp, je comprend pas tout?

n°816151
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-08-2004 à 16:48:10  profilanswer
 

benh je construits une chaîne à partir de variable, un peu comme printf/sprintf
 
T'assignes pas tes requêtes SQL à un la propriété "SQL" d'un TQuery ou TADOQuery ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°816349
lolo81
Posté le 05-08-2004 à 22:48:45  profilanswer
 

ok et c'est koi les ...   avant SQL.Text
si j'assignes la requeter a la propriété SQL du TQuery, faut pas?

n°816353
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-08-2004 à 22:52:48  profilanswer
 

benh c'était parce que je connaissais pas le nom de ton query :p
 
NomDeTonQuery->SQL->Text = ...
(ici les ... représentent ce que j'avais mis plus haut)
 
Et j'ai toujours cette manie de mettre des "." au lieu des "->" vu qu'en Delphi il fait le lien tout seul avec des "."


Message édité par antp le 05-08-2004 à 22:53:23

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°816360
lolo81
Posté le 05-08-2004 à 23:01:38  profilanswer
 

ok merci je vais essayer cela

n°816367
lolo81
Posté le 05-08-2004 à 23:28:35  profilanswer
 

encore un pb, %d c'est bien pour une variable
est on obligé de mettre %d et %s a la fin?

mood
Publicité
Posté le 05-08-2004 à 23:28:35  profilanswer
 

n°816369
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-08-2004 à 23:35:01  profilanswer
 

%d = entier décimal
%s = chaine
ce sont les types des paramètres passés dans ARRAYOFCONST((...)) ensuite.
lire l'aide fournie avec Builder ça peut servir :o
T'as jamais utilisé les fonctions genre printf et compagnie ? :heink:


Message édité par antp le 05-08-2004 à 23:35:40

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°816418
TouperTino​is
Posté le 06-08-2004 à 09:03:16  profilanswer
 

Tu peux faire un sprintf pour creer ta requete come une grande chaine de caractères.
 
sprintf(requete,"insert into  table values(12,15,....,%d",Temperature);
 
Ensuite tu poeux utiliser reuquete qui correspondra a ce que tu ve comme requete sql
++

n°816430
antp
Super Administrateur
Champion des excuses bidons
Posté le 06-08-2004 à 09:20:14  profilanswer
 

Ouais enfin le sprintf n'a aucun intérêt ici, autant utiliser Format (qui fonctionne de la même façon mais qui renvoie une AnsiString au lieu de remplir un char *) vu qu'il utilise quand même la VCL pour la connexion.  
 
sprintf l'oblige à avoir une variable temporaire, et il y a le risque de dépasser la taille du buffer (ou alors il faut utiliser snprintf).


Message édité par antp le 06-08-2004 à 09:20:24

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°817180
lolo81
Posté le 07-08-2004 à 17:33:55  profilanswer
 

Encore un petit probleme un message d'erreur disant "trop peu de parametres 1 manquant'.' " quand je fait cela:
 
RequeteValid->SQL->Text =
        Format("INSERT INTO Donnees VALUES (12,'01/22/04',%d,34,10,10,34,%s)"
        , ARRAYOFCONST((temp_mini,"toto" )));
        RequeteValid->ExecSQL();
 
et je passe le nombre de parametres pour la table qu'il faut alors?

n°817182
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-08-2004 à 17:36:09  profilanswer
 

Le %s doit être entre apostrophes aussi (comme la date) si c'est un champ de type chaîne/texte
Il faut voir si tes paramètres correspondent exactement aux colonnes de "Donnees" (order & nombre).


Message édité par antp le 07-08-2004 à 17:36:42

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°817185
lolo81
Posté le 07-08-2004 à 17:45:16  profilanswer
 

yes cetait ca merci bocou

n°817202
lolo81
Posté le 07-08-2004 à 18:28:52  profilanswer
 

encore un truc
quand je fait:
 RequeteValid->SQL->Text =
Format("INSERT INTO Donnees VALUES (13'01/22/04',%d,%d,%e,%e,%d'%s')"
        , ARRAYOFCONST((temp_mini, temp_maxi, pluvio, hygro, pression, "test" )));
        RequeteValid->ExecSQL();
 
une erreur me dit que le nombre de valeurs de la requete doit correspondre avec le nombre de champs....
pourtant cela correspond

n°817217
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-08-2004 à 19:20:07  profilanswer
 

%d'%s'
 
il manquerait pas une virgule là ?
 
idem entre le 13 et la date


Message édité par antp le 07-08-2004 à 19:20:18

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°817449
lolo81
Posté le 08-08-2004 à 12:20:08  profilanswer
 

non non la jai mal recopié mais sur mon prog il ya les virgules

n°817452
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-08-2004 à 12:21:56  profilanswer
 

Faut vérifier que tes valeurs correspondent bien aux colonnes de ta table...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°829781
lolo81
Posté le 23-08-2004 à 15:36:46  profilanswer
 

non c toujours pas ca (avec un peu de retard), cela correspond bien

n°832264
lolo81
Posté le 25-08-2004 à 21:22:46  profilanswer
 

il y a qqun pour me repondre?

n°832273
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-08-2004 à 21:29:51  profilanswer
 

benh sans plus de détails personne pourra te répondre


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°837167
lolo81
Posté le 30-08-2004 à 22:34:04  profilanswer
 

quel details supplémentaires vous faut il , ca me met juste que le nombre de valeurs ne correspond pas avec ma table!

n°837488
antp
Super Administrateur
Champion des excuses bidons
Posté le 31-08-2004 à 10:32:12  profilanswer
 

Structure de la table et requête complète, par exemple...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°897533
lolo81
Posté le 13-11-2004 à 15:04:42  profilanswer
 

Bon je sais cela fait longtemps, mais j'avais abandonné mon programme quelques temps et maintenant je m'y remet et je n'ai toujours pas trouvé la solution à mon probléme donc je récapitule. :pt1cable:  
   J'ai donc une table "Donnees" avec 8 champs:
 
"N°" qui est un numéro auto
"Date" qui est une date,général
"Temp_mini"  entier long
"Temp_maxi"  entier long
"Pluviometrie"  réel double
"Hygrometrie"   réel double
"Pressions"   entier long
"Observations"  Texte
 
Puis je réalise la requete SQL suivante:
 
RequeteValid->SQL->Text =
Format("INSERT INTO Donnees VALUES (13,'01/22/04',%d,%d,%e,%e,%d,'%s')"
,ARRAYOFCONST((temp_mini, temp_maxi, pluvio, hygro, pression, "test" )));
        RequeteValid->ExecSQL();  
 
Et j'obtient l'erreur suivante:
 
"Le nombre de valeurs de la requete doit coincider avec le nombre de champs"
 
Merci de votre aide.

n°897859
antp
Super Administrateur
Champion des excuses bidons
Posté le 13-11-2004 à 23:43:04  profilanswer
 

Access est assez chiant avec le format de la date.
Il faut l'entourer de # au lieu de ' il me semble.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°897863
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-11-2004 à 23:49:31  profilanswer
 

antp a écrit :

Access est assez chiant avec le format de la date.
Il faut l'entourer de # au lieu de ' il me semble.

+1


---------------
J'ai un string dans l'array (Paris Hilton)
n°898132
lolo81
Posté le 14-11-2004 à 14:48:54  profilanswer
 

Ben je comprend et je m'apercois qu'ACCESS est trés chiant et donc j'ai essayé de mettre des # pour la date mais cela ne change rien et j'ai toujours la meme erreur!!
Alors d'où cela peut il venir?

n°898167
antp
Super Administrateur
Champion des excuses bidons
Posté le 14-11-2004 à 15:10:42  profilanswer
 

Tu mets vraiment "test" ou bien tu passes une variable ? parce que si la variable contient des ' ça foire (il faut utiliser QuotedStr pour ça)
Sinon je ne vois pas ce qui foire :/
Essaie de spécifier les champs dans la requête :
... INTO Donnees ('N°', 'Date', .....) VALUES ( ....
par contre le ° dans le nom du champ c'est un coup à avoir des problèmes :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°900665
lolo81
Posté le 17-11-2004 à 14:35:29  profilanswer
 

Bon je ne sais vraiment pas d'où cela vient, je mets bien "test" (ce n'est pas une variable), j'ai également essayer de spécifier le nom des champs dans la requete et ça ne change rien!!!
Et quand au ° je l'ai enlevé et ça ne change rien!
 
Aidez moi :(

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Requete SQL avec Builder C++ 6

 

Sujets relatifs
Récupérer les valeurs du résultat d'une requêteNe pas tenir compte des majuscules lors de requete sql sur oracle
Récupérer un code SQLSoucis avec une requete SQL
récupération des données d'un combobox C++ BuilderRequête d'analyse croisée en Access: "générer" des dates
[PHP] Cherche forum simple compatible MS SQL Serverborland c++ Builder et Excel ?
Plus de sujets relatifs à : Requete SQL avec Builder C++ 6


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR