Adoquery requête INSERT

Résolu
pierrecoulon Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 11 septembre 2008 - 26 août 2008 à 14:02
 xodo - 12 nov. 2019 à 15:29
bonjour

est-ce quelqu'un pourrais me dire si la requête suivante est correcte parce qu'elle ne passe pas?

 Dlg.ADOQuery1.SQL.clear;
      Dlg.Adoquery1.sql.Add('INSERT INTO fournisseurs (nom_societe,');
      Dlg.Adoquery1.sql.Add('personne_contact, rue, numero_rue,');
      Dlg.Adoquery1.sql.Add('numero_telephone, numero_gsm');
      Dlg.Adoquery1.sql.Add(', numero_tva, remarque,  ');
      Dlg.Adoquery1.sql.Add(' numéro_fax) VALUES ');
      Dlg.Adoquery1.sql.Add('(Edit2.Text, Edit1.Text, Edit3.Text, Edit4.Text,');
      Dlg.Adoquery1.sql.Add('Edit6.Text, Edit7.Text, Edit8.Text, Edit12.Text)');



      Dlg.ADOQuery1.Open;


Merci beaucoup.

Pierre

13 réponses

sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
27 août 2008 à 08:00
Bon, essaie ça :

(au passage, tu peux renommer ton ADOQuery1)
With Dlg.ADOQuery1 do begin
    With SQL do begin
         Clear;
         Add('INSERT INTO fournisseurs (nom_societe, personne_contact, rue, numero_rue,');
         Add('                                               numero_telephone, numero_gsm, numero_tva, remarque)');
         Add('VALUES (''' + Dlg.Edit2.Text +''', '''+ Dlg.Edit1.Text +''', '''+ Dlg.Edit3.Text + ''', '''+ Dlg.Edit4.Text +''', '''+
Dlg.Edit6.Text +''', '''+ Dlg.Edit7.Text +''','''+ Dlg.Edit8.Text +''', '''+ Dlg.Edit12.Text +''')');
    end;
    ExecSQL;
end;

NB : Il ne faut pas qu'il y ait d'apostrophe dans les valeurs de tes edit sinon, tu dois trouver une procedure pour doubler les apostrophes pour ces valeurs.

Quel est le type de fichiers de ta base de données ?

Simon
3
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 août 2008 à 16:29
Bonjour,

En partant du principe qu'il s'agit de champs texte, peut-être qu'il faut à ce moment là placer tes edit entre des quotes doublées.
i.e. : 'Values('''+ Edit1.Text +''', '''+ Edit2.Text +''', '''+ ... +''')'

Simon
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 août 2008 à 16:30
euh ... triplés les quotes... pardon...

Simon
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 août 2008 à 16:43
Et euuuuh, si je sais bien compter, il me semble que tu as neuf champs pour huit valeurs...

Simon
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 août 2008 à 16:47
Oups, décidemment, J'aurais dû tout lire d'un coup...
Je ne sais pas comment marche les adoquery, mais si c'est comme les query, pour un insert, update ou delete, il vaut mieux faire un ExecSQL (sinon, ça marche pas). Le Open est pour les requêtes de type Select... 

Simon
0
pierrecoulon Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 11 septembre 2008
26 août 2008 à 16:52
j'ai fait les modifications et ça ne fonctionne pas

"ExecSQL" c'est quoi?
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 août 2008 à 17:46
Quelles modifications as-tu fait ?

ExecSQL c'est une procedure(?) de quelques composants de requetes que je connais . Je ne sais pas si ça fonctionne pour le adoquery mais à priori... Il faut donc que tu essaies :
Dlg.ADOQuery1.ExecSQL;

Sinon, comme je l'ai dit plus haut, le ExecSQL est pour les SQL de type Insert, Update ou Delete et le Open est pour les Select... (Cherche sinon si tu n'as pas un ADOQuery1.ExecQuery ou un truc comme ça)

Simon
0
pierrecoulon Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 11 septembre 2008
26 août 2008 à 18:13
Dlg.ADOQuery1.SQL.clear;
      Dlg.Adoquery1.sql.Add('INSERT INTO fournisseurs (nom_societe,');
      Dlg.Adoquery1.sql.Add('personne_contact, rue, numero_rue,');
      Dlg.Adoquery1.sql.Add('numero_telephone, numero_gsm,');
      Dlg.Adoquery1.sql.Add(' numero_tva, remarque ');
      Dlg.Adoquery1.sql.Add(') VALUES ');
      Dlg.Adoquery1.sql.Add('(' + Dlg.Edit2.Text + ', ' + Dlg.Edit1.Text + ', ' + Dlg.Edit3.Text + ', ' + Dlg.Edit4.Text + '');
      Dlg.Adoquery1.sql.Add(', ' + Dlg.Edit6.Text + ', ' + Dlg.Edit7.Text + ', ' + Dlg.Edit8.Text + ', ' + Dlg.Edit12.Text + ');');
      Dlg.ADOQuery1.ExecSQL;

voici ma requête actuelle et elle ne fonctionne pas!
0
error ExecSQL!?
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 août 2008 à 18:16
Tu vois pas une différence entre :
Values('''+ Edit1.Text +''', '''+ Edit2.Text +''', '''+ ... +''')'
et
Values(' + Dlg.Edit2.Text + ', ' + Dlg.Edit1.Text + ', ' + Dlg.Edit3.Text + ', '
???
Si tu ne la vois pas, je ne peux plus rien pour toi...

Simon
0
error !?
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
26 août 2008 à 18:18
De plus, peux tu spécifier le message d'erreur... Parce que "Ma requête ne fonctionne pas"... c'est un peu vague.

Simon
0
pierrecoulon Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 11 septembre 2008
26 août 2008 à 18:24
erreur de syntaxe dans la requête INSERT TO
0
pierrecoulon Messages postés 32 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 11 septembre 2008
27 août 2008 à 18:45
merci beaucoup pour ton aide et ta patience, ça fonctionne.

Pierre
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
28 août 2008 à 09:21
Avec plaisir.

Simon
0
Rejoignez-nous