[]
Nombre de membres 1 membre
Connectés : ( personne )
 

La Charte du Forum - La Charte du Forum

Forum - Forum
Problèmes Access des débutants - Problèmes Access des débutants


clos par 3Stone le 10/02/2011 : 17:54  Sujet n° 453  Créer des enregistrements dans une table, avec des conditions

le 04/01/2011 : 00:09
par kolele

Anonyme

visiteur

Salut Dr.3stones et bonne année 2011.  

Je cherche à apprendre les boucles dans VBA, pour créer des enregistrements automatiquement dans une table. J'ai lu tes mémos et j'ai aussi essayé de m'inspirer de la procédure que tu m'avais écrite (pour créer d'un coup 150 lignes dans une table inventoriant des manuels scolaires).

Mais là, mon projet est différent :
Je gère des voyages scolaires, avec trois tables : Elèves (CléElève, NomPrénom, Classe), Voyages (CléVoyage, Destination), Tbl_Participation_Elève qui reprend en clé externe les clés primaires des 2 tables précédentes (un voyage peut comporter plusieurs élèves ; un élève peut participer à plusieurs voyages).

Mon besoin consiste à affecter tous les élèves d'une classe dans un voyage, donc créer dans la Tbl ParticipationElève un enregistrement nouveau avec la CléVoyage de mon choix.

1) création d'un formulaire avec deux listes : l'une pour sélectionner le voyage, l'autre pour sélectionner la classe
2) le code : je sais que je devrai déclarer les variables, prévoir des vérif, après je sens qu'il y aura du IF et de la boucle au menu. Je ne vois pas trop la gueule de la procédure pour ajouter un enregistrement pour tous les élèves de la classe x, avec la valeur y en CléVoyage.

Merci de ton aide (passée et présente – d'ailleurs faudra que tu nous dises un jour ce qu'on peut faire en remerciement).

Pierre.
Ecrire à kolele  sujet clos  Haut
Réponse n° 1
--------
le 04/01/2011 : 17:43
par 3Stone

Anonyme

Administrateur

Bonjour,

Inutile de faire des boucles en VBA, une requête de mise à jour suffit wink

Il te manque aussi la table T_Classes avec CleClasse et NomClasse...
Ensuite, sur un petit formulaire, tu crées une liste déroulante basée sur T_Voyages et une seconde basée sur T_Classes.

Ensuite un bouton "Attribution" qui aura le code suivant :


Code :
    Dim sSQL As String

sSQL = "INSERT INTO T_Participations ( CleEleve, CleVoyage ) " _
& "SELECT T_Eleves.CleEleves, T_Voyages.CleVoyage " _
& "FROM T_Eleves, T_Voyages " _
& "WHERE (((T_Voyages.CleVoyage)=" & Me.lstDestination & ") " _
& "AND ((T_Eleves.Classe)=" & Me.lstClasse & ")); "

CurrentDb.Execute sSQL
 
Tu adaptes les noms et cela devrait le faire...

Bien sur, il faudra tester si un choix à été fait dans chaque liste, sinon un petit message averti de la chose.

Dans la table T_Participations, il sera interréssant d'ajouter un champ date et de baser l'index sur (ou la clé primaire) sur les trois champs (CleEleve, CleVoyage, DateVoyage). Cela permet à la même classe d'aller deux fois à Paris à des dates différentes wink

Cordialement,
Pierre(3stone)

 
Citation :

d'ailleurs faudra que tu nous dises un jour ce qu'on peut faire en remerciement.

 
Il y a un livre d'or sur ce site l
  clos par 3Stone le 10/02/2011 : 17:54  Haut
Réponse n° 2
--------
le 12/01/2011 : 17:34
par kolele

Anonyme

visiteur
ça y est : ça maaaarche 3Stones ! merci beaucoup.
J'ai complété la procédure selon tes conseils et en m'inspirant du code que tu avais écrit pour mon appli de gestion des manuels scolaires, au printemps dernier.

 Code : xhtml  Dim sSQL As String   '// Vérifications If Not IsNull(Me!lstClasse) Then     If IsNull(Me.lstDestination) Then         MsgBox "Saisir une destination"         Exit Sub     End If Else     MsgBox "Sélectionner une classe"     Exit Sub End If   '// Requête Ajout   sSQL = " INSERT INTO [1_Tbl_Participation_Elève] ( CléElève, CléVoyage ) " _ & "SELECT [0_Tbl_Elèves].CléElève, [0_Tbl_Voyages].CléVoyage " _ & "FROM [0_Tbl_Elèves], [0_Tbl_Voyages] " _ & "WHERE ((([0_Tbl_Voyages].CléVoyage)=" & Me.lstDestination & ") " _ & "AND (([0_Tbl_Elèves].[CléClasse])=" & Me.lstClasse & ")); "   CurrentDb.Execute sSQL   '// Message OK MsgBox "Les élèves de la classe" & " " & Me.lstClasse.Column(1) & " " & "ont été ajoutés."   '// Ràz des contrôles Me!lstClasse = Null Me.lstDestination = Null   End Sub
Ecrire à kolele   clos par 3Stone le 10/02/2011 : 17:54  Haut
actif sujet actif   clos sujet clos   Important! Important!   Nouveau Nouveau message   -   Rectifier Rectifier message   Clôturer Clôturer sujet   Remonter Remonter
[]
Catégories de discussion  Forum 



Haut