Ajout enregistrement par code

Résolu
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007 - 23 mai 2007 à 09:48
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 - 23 mai 2007 à 12:25
bonjour,
voila j'aimerais faire un truc tout con mais je trouve pas comment faire, j'ai fouillé maais ne trouve pas mon bonheur.
je souhaiterais en fait ajouter un enregistrement dans un champ d'une table par le code.
C'est à dire que j'ai une variable contenant du texte et je souhaite ajouter cet enregistrement dans ma table, a un champ precis.
tout ceci par le code.
merci; je sais que sa a l'air con mais je pense que je pige pas tout en fait...

24 réponses

cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
23 mai 2007 à 11:08
Essaies ceci

SQL = "INSERT INTO tbltemporaire (Nomdoc, descriptiondoc, frequence) values ('ouai', 'DUJARDIN', 12);"
DoCmd.RunSQL SQL

et ensuite cesi

SQL = "INSERT INTO tbltemporaire (Nomdoc, descriptiondoc, frequence) values ('" & ta_variable1 & "', '" & ta_variable2 & "', '" & ta_variable3  & "');"
DoCmd.RunSQL SQL
3
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mai 2007 à 10:02
il faut que je fasse un recordset et ensuite que je fasse addnew?
en fait c ca que je pige pas trop
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mai 2007 à 10:14
le truc c que j'ai vu un truc pour ca...
je fais
Dim MonSql As String
Dim Db as dao.database
MonSql = "SELECT * FROM Client WHERE [N° Client]=" & texte1

'Ouverture du Recordset
Set MaTable = DB.OpenRecordset(MonSql)
'Ajouter un enregistrement
Matable.AddNew
Matable![N° Client] = 12
Matable![Nom] = "DUJARDIN"
Matable.Update
MaTable.close
ce que je pige pas c  dans mon sql en fait la table ou je veux ajouter mes enregistrements est vide donc je ne peux pas dire "Where...."
Donc je comprend pas trop la. Je ne peux pas faire de requete sur une table vide!
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mai 2007 à 10:21
j'ai trouvé , ca a l'air de marcher.
en fait j'ai fait
Dim MonSql As String
Dim Db as dao.database
MonSql = "SELECT * FROM Client
'Ouverture du Recordset
Set MaTable = DB.OpenRecordset(MonSql)
'Ajouter un enregistrement
Matable.AddNew
Matable![N° Client] = 12
Matable![Nom] = "DUJARDIN"
Matable.Update
MaTable.close

ca m'ajoute bien un enregistrement...
donc voila mais si quelqu'un lis ce message, s'il peut AIDER CLAIREMENT POUR COMPRENDRE CE QU4EST UN RECORDSET  .Car malgré tout ce que j'ai put lire, j'ai du mal un peu quand meme...
0

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

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 mai 2007 à 10:33
Salut,

Ben, là c'est moi qui pige plus rien...Tu fais un requête de selection et pas une requête action...Comment tu peux mettre un record dans ta base ave une requête de selection ?

Ici ce n'est pas ta requête qui a mit ton enregistrement, mais plutôt cela :
Matable.AddNew
Matable![N° Client] = 12
Matable![Nom] = "DUJARDIN"
Matable.Update
MaTable.close

Peux-tu me monter comment tu fais ta connection à la Bdd ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
23 mai 2007 à 10:38
T'es marrant a parler tout seul. Fais attention quand meme, c'est mauvais signe des fois.

En effet, il est a mon sens inutile de faire une clause where si tu veux seulement rajouter une ligne dans ta table. La clause where te permet de selectionner les enregistrements pour lesquels la condition est respecter.

D'ailleurs si tu voulais apprendre les recordset, c'est bien mais pour faire ca, ce n'est pas tres utile. Tu peux faire une requete Ajout  (requete SQL).
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mai 2007 à 10:41
bein la en fait je suis perdu moi...tout ce que je sais c que ca marche!pour une fois que j'ai de la chance. Voila exactement mon code qui se fait sur levenement click d'un bouton. Ma table s'appelle tbltemporaire
Private Sub Commande41_Click()


Dim MonSql As String
Dim Db As DAO.Database
Dim MaTable As DAO.Recordset
'Ouverture de la base de données
Set Db = CurrentDb


MonSql = "SELECT * FROM tbltemporaire "


'Ouverture du Recordset
Set MaTable = Db.OpenRecordset(MonSql)




'Ajouter un enregistrement
MaTable.AddNew
MaTable![Nomdoc] = "ouai"
MaTable![descriptiondoc] = "DUJARDIN"
MaTable![frequence] = 12
MaTable.Update
MaTable.Close
    End Sub

ca marche...mais si il y a mieux ou plus logique dites moi...merci
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
23 mai 2007 à 10:43
Salut, Exploreur, je pense que dans son cas, une connexion est inutilie puisqu'il est en VBA Access et que je pense que sa table est deja dans la base ou le code est présent.

Tu peux faire une requete Selection pour rajouter des enregistrements (je le fais car je savais pas comment faire des requetes pour des bases à distances).

Le truc, c'est qu'il faisait une clause Where et c'est ca qui est totalement inutile.

A+
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
23 mai 2007 à 10:46
Oui, pense a aller dans l'onglet des requetes de access et d'aller dans Afficher puis Mode SQL. De la tu pourras t'entrainer à faire des requetes ajout et les recopier dans ton code.

Si tu ne sais pas la synthaxe, F1 + requete INSERT devrait t'aider.
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mai 2007 à 10:48
Donc Nicko11 cela signifie que je n'ai pas besoin de faire un recordset. "une connexion est inutilie" donc comment faire ?
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 mai 2007 à 10:48
Salut Nicko,

Ben vi, cela fait deux que je me fait avoir avec ce VBA et la connection !!

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mai 2007 à 10:48
pardon j'avais pas vu ton dernier post
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
23 mai 2007 à 10:48
Ce n'est pas que c'est plus logique, c'est que c'est plus adapter et rapide. Toi tu as plein de ligne alors que 2 suffirait.

SQL = ta_requete
DoCmd.RunSQL SQL

FIN
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mai 2007 à 10:52
oui d'accord mais ma finalité c'est que ma requete ajoute dans ma table une variable, la variable ayant différentes valeurs (car je vais parcourir un treeview et je vais faire for each node.check...)
c bien possible ca de faire une requete ajout d' une variable en sql ?
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mai 2007 à 11:16
nickel, j'etais pas loin. J'avais cree la requete ajout mais je bloquais pour les variables.
J'etais en train de faire ce que tu mas filé mais ca moré mis un peu plus de temps. Merci!
Juste je veux pas abuser mais j'ai un message a chaque fois qui me dit que j'ajoute une ligne..... c possible de ne pas avoir ce message?


merci en tout cas c cool.! tu taquines dis donc....
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mai 2007 à 11:18
ah et en fait....pas parfait non plus... si je clique 2 fi=ois d'affilee, le premier nickel mais le second erreur...enfin j travaille....merki
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 mai 2007 à 11:21
Salut,

Cela me rassure que j'avais raison au moins sur un point, qu'il fallait faire un requête Action(Insert Into)....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
23 mai 2007 à 11:21
oubli le dernier post, erreur con...
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
23 mai 2007 à 11:23
1) est ce que la premiere solution fonctionne toujours (meme plein de fois de suite)?

2) Si tu as des boites de dialogues c'est qu'il y a un pb avec les types de données, les '  ' (regarde le premiere exemple que j'ai donné, les '  ' ne sont pas présent pour le 12), ou tes variables.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
23 mai 2007 à 11:27
OK

A+ tout le monde

PS: Bien sur Exploreur, t'as raison mais tu n'es pas OBLIGER de faire une requete action mais aussi passer par un recordset et une requete select (je vais d'ailleurs remplacer ca dans mon propre code quand j'aurais le temps, car ca me bouffe une bonne parti de mon code)
0
Rejoignez-nous