Mettre un champ automatiquement à jours avec une variable

1 post / 0 new
vince.68
Mettre un champ automatiquement à jours avec une variable

Bonjour à tous :)

Je m'adresse à vous car je suis bloqué au niveau de mon code VBA. J'espère que vous pourrez m'aider, cela m'aiderais beaucoup et je vous en serrez très reconnaissant ;)

Donc voici mon problème :
Je dispose d'une base de données qui concerne une association d'un club de musique.
Et voici les 2 tables dont j'ai besoin pour faire mon code :

dons : Numdon, DateDon, MontantDon, #NumPartDon

partenaires : NumPart, NomPart, PrenomPart, Membrebienfaiteur(O/N)

Chaque membre de l'association faisant un don devient membre bienfaiteur. Donc il faut que je fasse une requête de mise à jours pour rentrer le numéro du membre qui fait un don, mais ensuite il faut que la table soit automatiquement mise à jours aussi. Pour cela j'ai donc créé une interface graphique avec un bouton faisant appel a un programme VB qui permet de faire la mise à jours.

Voici les explications :

- Pouvoir réaliser la requête des partenaires qui ont fait un don.

- A partir du résultat de cette requête, que vous affecterez à une variable (exemple : reqdon) le champ « Membrebienfaiteur » doit être automatiquement (grâce à un programme VBA ) mis à jour et afficher « oui ».

Pour faire cela on récupère le résultat de la requête sous forme d’un jeu d’enregistrements exemple : Set tabdon = bd.OpenRecordset (reqdon) <-- variable.
- tabdon doit être analysé ligne par ligne ; si la requête n’affiche pas de ligne, vous pouvez afficher un message, sinon, tant que le jeu d’enregistrement n’est pas vide, il faut exécuter la requête de mise à jour du champ « Membrebienfaiteur » de la table partenaire, pour les partenaires qui ont fait un don.

- Il faut aussi demander l’exécution de la requête de mise à jour avant d’accéder à la ligne suivante du jeu d’enregistrements avec l’instruction suivante : bd.Execute(reqmajdon).

Voici la requête permettant de savoir quel membre à fait un don (reqdon) :
SELECT partenaires.NumPart, partenaires.NomPart, partenaires.PrenomPart
FROM partenaires, dons
WHERE (((dons.NumPartDon)=partenaires.NumPart));

La reqête de mise à jours :
UPDATE partenaires SET Membrebienfaiteur = "O"
WHERE [dons].[NumPartDon]=[partenaires].[NumPart];

Et maintenant voici mon programme qui ne tourne pas malheureusement :

Private Sub bienfaiteur()
Dim Bd As Database
Dim Reqdon As String
Dim tabdon As String
Dim Membrebienfaiteur_maj As String

'Instruction permettant de déclarer la table
Set Bd = CurrentDb()
Reqdon = "SELECT NumPartDon FROM dons"
Set Bds = Bd.OpenRecordset("Reqdon")
Bds.Index = "primarykey"
'Traitement des données
Membrebienfaiteur_maj = InputBox("Membre Bienfaiteur ? O=Oui N=Non :")
reponse = InputBox("Voulez vous confirmer la modification?(oui ou non)")

If reponse = "Oui" Then
Bds.Edit
Bds!Membrebienfaiteur = Membrebienfaiteur_maj
Bds.Update
Else

MsgBox ("La modification n'a pas eu lieu")

End If

Bds.Close
Bd.Close

End Sub

Il me manque donc des lignes de code que je n'arrive pas à créer, et certaines choses doivent surement être incohérent, je n'ai pas beaucoup de connaissances en VB. Il me semble qu'il faut faire une lecture séquentielle pour lire la table "dons", mais je ne sais pas comment faire. Donc si quelqu'un peut m'aider ça serait super sympa 8-)

Merci pour tout ;)