Atteindre un champ particulier avec VBA

Atteindre un champ particulier avec VBA - VB/VBA/VBS - Programmation

Marsh Posté le 25-04-2005 à 11:48:08    

Bonjour,
 
Je souhaiterais savoir s'il est possible d'accéder à une "case" d'une table grâce à un code VBA.
 
Mon problème en gros :
J'ai un formulaire lié à une table1 qui effectue des opérations sur les enregistrmeents de cette table, entre autres.
Mais j'aimerais, à partir des informations entrées dans le formulaire, accéder à un champ d'une table2, et y écrire quelque chose.
 
Est-ce réalisable dans le seul code du formulaire ? Ou dois-je comme j'en ai bien peur fair eune sorte de formulaire caché intermédiaire pour faire le lien entre les deux tables ? J'aimerais éviter les trucs moches ;)
 
Merci

Reply

Marsh Posté le 25-04-2005 à 11:48:08   

Reply

Marsh Posté le 25-04-2005 à 13:43:33    

Salut,
 
Ta Table2 a certainement une primary key ou tout du moins une foreign key qui point sur la primary key de Table1 (Ca paraît logique vu que t'as apparement un lien entre les deux). Donc à partir de la, il te suffit de créer une requêtre UPDATE qui va modifier l'enregistrement voulu de la Table2:
UPDATE Table2 SET Champ_a_changer = Valeur WHERE FK_Table1 = Valeur_PK_Table1
 
Dans cette reqête:
 

  • Champ_a_changer c'est le nom du champ que tu veux modifier

  • Valeur c'est la valeur que tu veux affecter à ce champ

  • FK_Table1 c'est la Foreign Key de Table1 (correspond donc à la PK de Table1)

  • Valeur_PK_Table1 c'est la valeur de la Primary Key de la table 1 qui indique quel enregistrement tu veux modifié.


Voilà, j'espère que ça t'a aidé

Reply

Marsh Posté le 25-04-2005 à 14:35:53    

Merci beaucoup, j'essaie ça.
Crois-tu que cela change quelque chose si la valeur à updater est une chaîne variable ?
 
Et sinon, comment récupérer à l'inverse en variable le contenu d'un champ en particulier ?

Reply

Marsh Posté le 25-04-2005 à 15:23:47    

Mariooo a écrit :

Merci beaucoup, j'essaie ça.
Crois-tu que cela change quelque chose si la valeur à updater est une chaîne variable ?


Je suis pas sûr d'avoir bien compris... La valeur à updater??? Quoi t'es-ce?
 
Si tu parles du champs que tu dois updater, c'est pas un problème si son nom change. Mais tu devras modifier ta requête en fonction du champ que tu veux modifier.  
Si tu parles de la valeur que dois prendre le champ, alors j'espère bien que c'est une chaîne variable, autrement ça n'aurait pas de sens de faire un update  :D  
 

Mariooo a écrit :


Et sinon, comment récupérer à l'inverse en variable le contenu d'un champ en particulier ?


Alors là tu ne fais pas une requête UPDATE mais une requête SELECT:
SELECT Nom_Du_Champ FROM Table1 WHERE PK_Table1 = Valeur_PK
 
Bien entendu, tu peux construire ta requête WHERE sur autre chose que la primary key... Au risque par contre de te retrouver avec une requête qui renvoie plusieurs records

Reply

Marsh Posté le 25-04-2005 à 15:44:03    

Oui je parlais d'un contenu variable pour l'update du champ.  
 
Et si je suis sûre que le résultat de ma requete ne se compose que d'un élément, y a-t-il une manière de l'affecter directement à une chaine de caractères ?
VBA peut-il le comprendre ainsi ?
 
Merci beaucoup pour ton aide

Reply

Marsh Posté le 25-04-2005 à 16:22:03    

Si t'es sûre à 200% que ta requête ne retourne qu'un élément alors y a pas de soucis... Autrement, prévoit de la gestion d'erreur :)

Reply

Marsh Posté le 25-04-2005 à 16:25:51    

vi vi vi j'en suis certaine :p
 
mais quelle est la syntaxe exacte ?
je ne peux pas faire ce_que_je_veux = "requete", si?

Reply

Marsh Posté le 25-04-2005 à 16:43:26    

J'ai pas compris ta question... :)

Reply

Marsh Posté le 25-04-2005 à 16:52:07    

hum désolée...
 
Quelle est la syntaxe exacte pour effectuer l'affectation du résultat (unique donc) de ma requete à, par exemple, une chaine de caractères ?

Reply

Marsh Posté le 25-04-2005 à 17:16:05    

Attention, ce que tu veux faire c'est bien d'affecter le résultat de ta requête à une variable (de type chaîne de caractères)?
 
Si c'est ça, tu crées un recordset avec comme SQL ta requête... Ensuite tu attribues à ta variable la valeur du champs de ton recordset.

Reply

Marsh Posté le 25-04-2005 à 17:16:05   

Reply

Marsh Posté le 25-04-2005 à 17:28:07    

Oui c'est bien ça.
 
Une petite dernière...
Quelle est le nom de la méthode pour attribuer la valeur du champ à ma variable ?
 
Merci

Reply

Marsh Posté le 26-04-2005 à 08:49:09    

Mariooo a écrit :

Oui c'est bien ça.
 
Une petite dernière...
Quelle est le nom de la méthode pour attribuer la valeur du champ à ma variable ?
 
Merci


Ce qui serait bien, c'est que tu cherches un peu dans l'aide d'Access... Tu devrais y trouver toutes (ou presque) les réponses à tes questions :)
 
Néanmoins pour te donner un petit coup de main, je te suggère de regarder la méthode te permettant d'accèder à la valeur (ou au texte) d'un champ de saisie (ou un label) et la méthode permettant d'accéder à la valeur d'un champ d'un recordset.
 
Si tu ne trouves toujours rien, fais le nous savoir :)
 
A+

Reply

Marsh Posté le 26-04-2005 à 09:13:08    

J'ai trouvé hier soir
Même pas dans l'aide d'Access, mais sur ce bon vieux net !
 
Merci pour ta (votre?) disponibilité   :)  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed