Requete SQL INSERT

Signaler
Messages postés
15
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
23 janvier 2013
-
Messages postés
4
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
22 avril 2010
-
Bonsoir



J'utilise une base access avec des composants ADO. J'ai un problème pour les requetes INSERT.

la table est composé de divers champs, integer, texte, date, etc......



Lorsque que j'exécute la commande suivante :



Ado1.sql.Clear;

Ado1.sql.text:='INSERT INTO Fournisseurs

(index_f,nfourn,afourn,vfourn,tfourn,ffourn,efourn,lbfourn,dcfourn,dmfourn)';

Ado1.SQL.Add('VALUES(24,"c2","c3","c4","c5","c6","c7","c8","21/04/05",null)');

Ado1.ExecSQL; - cela fonctionne.très bien.



Mais dès que je remplace les valeurs 24 ou cxx par des valeurs
provenants de tedit ou combbox ou de function de génération de clef, il
me sort le message :



l'application à provoqué........................ le champ 24 en
fixe ou indef_f (en variable) n'à pas de valeur par
défaut........................



Ma question : d'où vient l'erreur, ?



Dans l'attente d'une réponse, merci.

3 réponses

Messages postés
165
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
10 novembre 2008

Salut,



Alors deja je te conseil de mettre ta requete dans une seule chaine.
Ensuite tu verifie bien que tout tes type de donné sont correct sinon
tu cast certaines valeur.s

Mais sinon tu a un moyen de déboguer une requete sql.

Alors tu ecrit ta requete avec les les Edit.text ...... etc

Ensuite tu met un point d'arret sur le Ado1.ExecSQL; Tu execute ton
prog jusqu'au point d'arret, une fois au point d'arret tu met un point
suivi sur Ado1.SQL.Text, dans le fenetre des points suivi tu fais
bouton droit sur cette valeur et "copier la valeur".

Ensuite tu ouvre ta base avec access et tu fais nouvelle requete et en
mode sql tu colle la valeur, tu retire le ' de debut et de fin et tu
execute et tu vois pourquoi il execute pas ta requete.



Sinon envoi moi ton code pour que je regarde



Bonne Prog
Messages postés
129
Date d'inscription
mercredi 4 février 2004
Statut
Membre
Dernière intervention
25 juillet 2012
1
Je fais aussi avec des composants adoQuery et voici comment je procède
avec des paramètres et ils convertissent tout automatiquement et je
n'ai pas de problèmes.



Voici un extrait de mon ajout article :



ModuleDeDonnees.Requete.Close;

ModuleDeDonnees.Requete.SQL.Clear;

ModuleDeDonnees.Requete.SQL.Add('INSERT INTO
Article(cod_art,cod_art_fou,cod_art_fab,fam,cat,typ,des,pri_uni_net_ht,coe_rem,coe_ven,pri_uni_pub_ht,id_mag,sto_ale,uni)
');
ModuleDeDonnees.Requete.SQL.Add('VALUES(:cod_art,:cod_art_fou,:cod_art_fab,:fam,:cat,:typ,:des,:pri_uni_net_ht,:coe_rem,:coe_ven,:pri_uni_pub_ht,:id_mag,:sto_ale,:uni);');
ModuleDeDonnees.Requete.Parameters.ParamByName('cod_art').Value:=txtCodeArticle.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('cod_art_fou').Value:=txtCodeArticleFournisseur.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('cod_art_fab').Value:=txtCodeArticleFabricant.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('fam').Value:=cmbFamille.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('cat').Value:=cmbCategorie.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('typ').Value:=cmbType.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('des').Value:=cmbDesignation.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('pri_uni_net_ht').Value:=txtPrixUnitaireNetHt.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('coe_rem').Value:=txtCoefficientDeRemise.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('coe_ven').Value:=txtCoefficientDeVente.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('pri_uni_pub_ht').Value:=txtPrixUnitairePublicHt.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('id_mag').Value:=intIdentificateurMagasin;
ModuleDeDonnees.Requete.Parameters.ParamByName('sto_ale').Value:=txtStockAlerte.Text;
ModuleDeDonnees.Requete.Parameters.ParamByName('uni').Value:=cmbUnite.Text;

ModuleDeDonnees.Requete.ExecSQL;
Messages postés
4
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
22 avril 2010

saluu jai le probleme suivant mon code ressemble a ton code mais apres que j insere ca duplique 2 fois ca me retournee un message ca mùe dis votre module ne gere pas l'insertion multiple merci a vous