[VBA]
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Salut tout le monde,
J'ai créé sous Access un formulaire en mode Création dont les champs n'appartiennent à aucune table.
Lorsque quelqu'un active une case à cocher, une zone texte apparaît et il peut remplir la zone.
Ce que je voudrais faire, c'est récupérer ces valeurs dans une table qui existe déjà.
Cette table comprend 3 colonnes (Nom, Type et Valeur). Et bien entendu, je souhaite remplir la table dans la zone valeur.
Si quelqu'un a un truc à proposer....
Merci
J'ai créé sous Access un formulaire en mode Création dont les champs n'appartiennent à aucune table.
Lorsque quelqu'un active une case à cocher, une zone texte apparaît et il peut remplir la zone.
Ce que je voudrais faire, c'est récupérer ces valeurs dans une table qui existe déjà.
Cette table comprend 3 colonnes (Nom, Type et Valeur). Et bien entendu, je souhaite remplir la table dans la zone valeur.
Si quelqu'un a un truc à proposer....
Merci
2 réponses
Salut,
moi aussi je bosse sur du VBA en ce moment, et j'ai une solution à te proposer ;
Tu peux utiliser un recordSet, c'est un outil qui te permet de manipuler des données dans les tables exisantes.
Ex :
Dim bds As Database, rst As Recordset
' Retourne une référence à la base de données en cours.
Set bds = CurrentDb
Set rst = bds.OpenRecordset("nom_de_ma_table")
' Remplit l'objet Recordset.
rst.MoveLast
' Revient au premier enregistrement.
rst.MoveFirst
'permet de modifier le record set
rst.Edit
'Affectation de la nouvelle valeur
rst!<nomDeMonChamp> = <valeur>
'Confirmation du changement
rst.Update
'FINI
rst.Close
En espérant que ça puisse t'aider ...
et si tu a d'autres soucis en VBA, n'hesite pas, je commence a toucher ma bille a force d'y passer mes journées ( ^_^')
moi aussi je bosse sur du VBA en ce moment, et j'ai une solution à te proposer ;
Tu peux utiliser un recordSet, c'est un outil qui te permet de manipuler des données dans les tables exisantes.
Ex :
Dim bds As Database, rst As Recordset
' Retourne une référence à la base de données en cours.
Set bds = CurrentDb
Set rst = bds.OpenRecordset("nom_de_ma_table")
' Remplit l'objet Recordset.
rst.MoveLast
' Revient au premier enregistrement.
rst.MoveFirst
'permet de modifier le record set
rst.Edit
'Affectation de la nouvelle valeur
rst!<nomDeMonChamp> = <valeur>
'Confirmation du changement
rst.Update
'FINI
rst.Close
En espérant que ça puisse t'aider ...
et si tu a d'autres soucis en VBA, n'hesite pas, je commence a toucher ma bille a force d'y passer mes journées ( ^_^')
Ok bien reçu,
en fait je travaille sur un programme qui fait ce genre de choses, simplement je ne fait pas directement le lien entre mon formilaire et ma table.
Mais il n'ya pas de raison pour que ça na marche pas.
Assez de bavardage;
avec la ligne qui suit, tu récupère les contenu de ton champ dans une variable de type string :
Pour le reste, c'est à dire de remplir la base avec la valeur que l'on vient de récupérer ; la réponse est déja présente dans la discussion un peu plus haut.
Autre possibilité, tu peux inserer des valeurs dans des tables (existantes ou à créer) avec une requête SQL.
je te conseille d'utiliser la fonction :
voila voila.
si tu a toujours des soucis, ask me...
en fait je travaille sur un programme qui fait ce genre de choses, simplement je ne fait pas directement le lien entre mon formilaire et ma table.
Mais il n'ya pas de raison pour que ça na marche pas.
Assez de bavardage;
avec la ligne qui suit, tu récupère les contenu de ton champ dans une variable de type string :
MaVariableString = Form_Mon_formulaire.Mon_champ
Pour le reste, c'est à dire de remplir la base avec la valeur que l'on vient de récupérer ; la réponse est déja présente dans la discussion un peu plus haut.
Autre possibilité, tu peux inserer des valeurs dans des tables (existantes ou à créer) avec une requête SQL.
je te conseille d'utiliser la fonction :
DoCmd.RunSql " ma requete ; "
voila voila.
si tu a toujours des soucis, ask me...
No souci pour les questions, c'est qu'il y'a besoin de précisions.
C'est vrai que je n'ai pas parlé de l'endroit ou l'on insert ce code, alors voila ; je met la ligne pour récupérer les données dans une fonction evénementielle qui se lance en cliquent sur un bouton du type Valider, tu fais un petit IF pour vérifier que le champ est bien rempli etc... enfin ça c'est des détail.
Pour ce qui est des lignes qui servent à inserer les infos dans la base, tu peux les coller juste à la suite dans la fonction événementielle, ou bien dans une fonction spécifique que tu crée à coté.
Un petit topo sur : Commentçamarcheunrecordset
(même si je ne suis pas un spésialiste )
D'aprés ce que j'ai pu comprendre, le record set est un genre de super enregistrement, qui lorsqu'il va étre appelé (code déja donné) va contenir toutes les données d'une table, celle dont le nom aura été utilisé pour ouvrir le record set.
On peut par la suite récupérer ces données dans des variable, mais également (et c'est la que ça devient ineressant(quoi ce n'était pas déja passionnant )) modifier les information contenus dans la table
tout cela avec :
Voila. j'epére que cela t'éclaire un peu.
Pour plus d'infos, je suis toujours en ligne, mais tu peux aussi consulter l'aide d'Access même si c'est pas trés bien fichu..
C'est vrai que je n'ai pas parlé de l'endroit ou l'on insert ce code, alors voila ; je met la ligne pour récupérer les données dans une fonction evénementielle qui se lance en cliquent sur un bouton du type Valider, tu fais un petit IF pour vérifier que le champ est bien rempli etc... enfin ça c'est des détail.
Pour ce qui est des lignes qui servent à inserer les infos dans la base, tu peux les coller juste à la suite dans la fonction événementielle, ou bien dans une fonction spécifique que tu crée à coté.
Un petit topo sur : Commentçamarcheunrecordset
(même si je ne suis pas un spésialiste )
D'aprés ce que j'ai pu comprendre, le record set est un genre de super enregistrement, qui lorsqu'il va étre appelé (code déja donné) va contenir toutes les données d'une table, celle dont le nom aura été utilisé pour ouvrir le record set.
On peut par la suite récupérer ces données dans des variable, mais également (et c'est la que ça devient ineressant(quoi ce n'était pas déja passionnant )) modifier les information contenus dans la table
tout cela avec :
'Pour dire que l'on veut modifier le recordset rst.Edit 'pour modifier rst!ID = IDREG <--(variable du programme) ^ || (nom de mon champ dans la base) 'ne pas oublier de validerles changement et de fermer le record set rst.Update rst.Close
Voila. j'epére que cela t'éclaire un peu.
Pour plus d'infos, je suis toujours en ligne, mais tu peux aussi consulter l'aide d'Access même si c'est pas trés bien fichu..
Salut TuXor,
Je suis désolé de t'embêter encore ce matin, mais j'ai toujours une erreur avec l'utilisation de RecordSet.
L'erreur "Type défini non défini par l'utilisateur" se situe à la ligne :
Dim bds As Database, rst As Recordset.
Access ne connait pas le terme Database.
Qu'est ce qu'il faut que je fasse alors?
Merci
Je suis désolé de t'embêter encore ce matin, mais j'ai toujours une erreur avec l'utilisation de RecordSet.
L'erreur "Type défini non défini par l'utilisateur" se situe à la ligne :
Dim bds As Database, rst As Recordset.
Access ne connait pas le terme Database.
Qu'est ce qu'il faut que je fasse alors?
Merci
Tu comprends ce que ça veut dire?
Merci
sinon, est-ce que tu as un numéro d'erreur ?
et sur quelle istruction le compilo bloque ?
et si tu as d'autres détail n'hésite pas a les donner aussi.
Je t'explique:
J'ai créé un formulaire en mode création dont les zones textes ne sont liées à aucune table.
Ce que je voudrais, c'est recopier les valeurs contenues dans ces zones texte dans une table. en je n'arrive pas à faire la liaison entre le formulaire et la table.
Voilà mon problème