(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 ?
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 +''', '''+ ... +''')'
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...
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)
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...