Ajout d'enregistrement (probleme)

waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013 - 22 mars 2007 à 23:14
dpeali Messages postés 67 Date d'inscription vendredi 10 août 2012 Statut Membre Dernière intervention 12 avril 2013 - 4 sept. 2012 à 16:04
bonjour,

Certain vont trouver que je pose souvent des question ces temps ci mais j'ai une bonne excuse je debute avec les BD et SQL.
voila mon probleme, j'ai une table "CT" comportant les champs:
num (clef primaire a numero auto)
-lot
-perempt (date)
-recept (date)
-fin (date)

J'arrive s'en soucis a modifier ou supprimer un enregistrement mais mon probleme survient a la creation de l'enregistrement....
j'utilise la fonction SQL "insert into" mais j'ai un soucis pour car je dois injecter le meme nombre de champ que ceux present sur la table... la se presente deux problemes:
- comment faire pour que le champ num (clef primaire) s'incremente de facon auto
- comment fait pour injecter un champ vide

j'espere avoir été assez clair, merci de votre aide a un piti mais alors tout piti "programmeur" vb6 debutant

10 réponses

waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013
22 mars 2007 à 23:39
juste une precision, pour les champ pouvant ne pas etre rempli j'ai selectionner "Null" autoriser dans Access et j'utilise la fonction suivante:

"insert into ref values('" + num.Text + "','" + prod.Text + "','" + lot.Text + "','" + perempt.Text + "','" + recept.Text + "','" + fin.Text + "')"

mais il me met l'erreur: "le nombre de valeur de la requete doit coincider avec le nombre de champs de destination"
 le probleme c'est que j'ai 5 champ dans la table "CT" est que je veux injecter 5 valeurs...

rq: dans le precedent message j'ai oublié d'ecrire le champ "prod"
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mars 2007 à 00:39
Bonsoir Happy Waspy,
Si tu as 5 champ à insérer
*ta requête doit se résenter ainsi:
INSERT INTO TATABLE ( CHP1, CHP2, CHP3, CHP4, CHP5 )
SELECT '" & Valeur1 & "' AS Expr1,'" &  Valeur2 & "' AS Expr2,'" & _
Valeur3 & "' AS Expr3,'" &  Valeur4 & "' AS Expr4,'" &  Valeur5 & "' AS Expr5;"

N' oublie pas que :
1° ton champ n° auto ne doit pas figurer dans la liste des champ .
S il fait parie des cinq, n' énumère ue 4 et fais de même
dans la partie Value.

2° pour les champs numériques,
   tu connais la chanson...n' es-ce pas ?
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mars 2007 à 00:51
Autrement dit :


INSERT INTO CT ( prod, perempt, recept , fin )
SELECT '" + prod.Text  + "' AS Expr1,#" + perempt.Text + "# AS Expr2,#" & _
+ recept.Text + "'# AS Expr3,#" + fin.Text +"#"




tu as donc quatre valeurs pour quatre chmp.
tu vois que j' ai exclu le n° auto. puisqu' il s' ajoute automatiquement,
et les # c' est pour les champs date
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mars 2007 à 00:57
rectifies:
INSERT INTO CT ( prod, perempt, recept , fin )
SELECT '" + prod.Text  + "' AS Expr1,#" + perempt.Text + "# AS Expr2,#" & _
+ recept.Text + "# AS Expr3,#" + fin.Text +"# AS Expr4;"

dors cher ami, dors

à demain...

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

Posez votre question
waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013
23 mars 2007 à 11:40
merci de ton aide ChaibatO5,

bon j'ai utilisé ta requete SQL sous cette forme:

cn.Execute "INSERT INTO CT ( prod, perempt, recept , fin ) SELECT '" + prod.Text + "' AS Expr1,#" + perempt.Text + "# AS Expr2,#" & _recept.Text + "# AS Expr3,#" + fin.Text + "# AS Expr4"""

et j'ai l'erreur "la requete doit etre construire à parit d'au moins une table ou une requete source"

sinon je ne savais pas qu'on pouvait melanger une requete INSERT avec une requete SELECT.... a moins que le probleme vienne de là et que je n'ai pas bien compris (c'est fort probable)
waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013
23 mars 2007 à 12:22
ca y est j'ai reussi, un grand merci a toi Chaibat05
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mars 2007 à 14:01
dis - nous au moins ou était l' erreur ,
comme ça on dormira tranquille ...
waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013
23 mars 2007 à 17:06
juste un champ de trop dans la requete... boulette de debutant
j utilise access et vb 6 et voila le message qui m affiche quand je vx ajouter dans la table clients le nombre de valeurs de la requête doit coïncider avec le nombre de champs destination sous vb6
voila le code:

Private Sub cmdEnregistrer_Click()
Dim maConnexion As ADODB.Connection
Dim rsclients As ADODB.Recordset

Set maConnexion = New ADODB.Connection
Set rsclients = New ADODB.Recordset

maConnexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\cc.mdb;Persist Security Info=False"

rsclients.Open "insert into client ([Nom du contact],[Prenom du contact],Adresse,Pays,Ville,Tel,[Gsm du Contact],Fax,[E-mail],[Raison Social],Rc,Autres,[Qualite du contact]) values ( '" & txtNom.Text & "' , '" & txtPrenom.Text & "','" & Txtadresse.Text & "','" & txtPays.Text & "','" & TxtVille.Text & "','" & txtPays.Text & "','" & TxtTel.Text & "','" & TxtGsm.Text & "','" & TxtFax.Text & "' ,'" & TxtEmail.Text & "' ,'" & TxtRaisonSocial.Text & "','" & TxtRc.Text & "','" & TxtAutres.Text & "','" & TxtQualite.Text & "')", maConnexion, adOpenKeyset, adLockOptimistic


MsgBox "Création client éfféctué avec succes", vbInformation + vbOKOnly
aidez moi svp
dpeali Messages postés 67 Date d'inscription vendredi 10 août 2012 Statut Membre Dernière intervention 12 avril 2013 2
4 sept. 2012 à 16:04
le nombre des champs ne correspond pas au nombre des valeur a ajouter c a dire si j'ai une table de 10 colonne je doit insérer 10 éléments (valeurs)
Rejoignez-nous