Ajout enregistrement par code [Résolu]

Signaler
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007
-
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
-
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

Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
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
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

il faut que je fasse un recordset et ensuite que je fasse addnew?
en fait c ca que je pige pas trop
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

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!
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

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...
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
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

 
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
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).
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

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
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
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+
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
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.
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

Donc Nicko11 cela signifie que je n'ai pas besoin de faire un recordset. "une connexion est inutilie" donc comment faire ?
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
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

 
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

pardon j'avais pas vu ton dernier post
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
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
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

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 ?
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

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....
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

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
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
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

 
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

oubli le dernier post, erreur con...
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
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.
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
1
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)