Guillaume
-
26 mai 2001 à 17:00
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 2019
-
10 août 2007 à 09:38
Je me permets de m'adresser à vous pour le problème suivant ; si quelqu'un avait le temps de jeter un petit coup d'oeil sur ce problème, ce serait vraiment sympa !!!
Ma feuille GestElev est composée de cinq TextBox (Numero, Nom, Prenom, Classe, LibelleClasse) et de 8 boutons (Effacer, Ajouter, Modifier, Supprimer, Liste, Suivant, Precedent, Quitter)
Problème :
Afficher automatiquement le libellé de la classe chaque fois que le numéro de la classe est modifié. Ma modification se limite à afficher le libellé de la classe qui correspond au numéro de classe ou un message lorsque ce numéro de classe n'est pas présent dans la table 'classe'.
Je rappelle le schéma relationnel de la base de données :
Eleve (Numéro, Nom, Prenom, #Classe)
Classe (Classe, LibelleClasse)
J'ai recopié le code que j'ai déjà tapé pour gérer les boutons de ma feuille GestElev :
Au niveau de la feuille GestElev :
Private Sub BT_Liste_Click()
ClefRelative = 0
If EleveCherche(ClefRelative, 1) Then
Call AfficheChamps
BT_Liste.Enabled = False
BT_Suivant.Enabled = True
BT_Precedent.Enabled = True
Else
MsgBox ("Aucun élève dans le fichier")
End If
End Sub
Private Sub BT_Ajouter_Click()
Call ValidationTransaction ("Ajouter")
En Sub
Private Sub BT_Effacer_Click()
Call EffaceChamps
Call AccesChamps (False)
End Sub
Private Sub BT_Modifier_Click()
Call ValidationTransaction ("Modifier")
End Sub
Private Sub BT_Quitter_Click()
End
End Sub
Private Sub BT_Supprimer_Click()
Call ValidationTransaction ("Supprimer")
End Sub
Private Sub Form_Load()
Set DB = OpenDatabase("c:\baseelev.mdb")
Set Tb = Db.Openrecordset("eleves", dbOpenSynaset)
Call AccesChamps (False)
Call InitialisePointeurSurBoutons
Call AfficheBoutons(False, BoutonEffacer, BoutonAjouter, BoutonModifier, BoutonSupprimer, BoutonSuivant, BoutonPrecedent)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Tb.Close
Db.Close
End Sub
Private Sub TB_Numero_LostFocus()
If TB_Numero <> "" ThenCritereRecherche "Numero" & "'" &T B_Numero & "'"
Tb.FindFirst CritereRecherche
If Tb.NoMatch Then
Call AjoutEleve
Else
Call AfficheChamps
End If
End If
End Sub
Au niveau du module :
Déclarations
Public Db As Database, Tb As Recordset
Sub AccesChamps(Autorise As Boolean)
GestElev!TB_Nom.Enabled = Autorise
GestElev!TB_Prenom.Enabled = Autorise
GestElevTB_Classe.Enabled = Autorise
End Sub
Sub EffaceChamps()
GestElev!TB_Numero = ""
GestElev!TB_Nom = ""
GestElev!TB_Prenom = ""
Gestelev!TB_Classe = ""
Call AfficheBoutons(False, BoutonEffacer, BoutonAjouter, BoutonModifier, BoutonSupprimer)
GestElev!TB_Numero.SetFocus
End Sub
Sub AfficheChamps()
GestElev!TB_Numero = Tb.[Numero]
GestElev!TB_Nom = Tb.[Nom]
GestElev!TB_Prenom = Tb.[Prenom]
GestElev!TB_Classe = Tb.[Classe]
AccesChamps (True)
Call AfficheBoutons(True, BoutonEffacer, BoutonModifier, BoutonSupprimer)
End Sub
Sub AjoutEleve()
Reponse = MsgBox("Aucun élève ne correspond à ce numéro, voulez-vous le créer ?", 4)
If Reponse = vbYes Then
AccesChamps (True)
GestElev!TB_Nom.SetFocus
Call AfficheBoutons(True, BoutonEfface, BoutonAjouter)
Else
EffaceChamps
End If
End Sub
Sub AjoutArticle()
Tb.AddNew
EcritArticle
End Sub
Sub EcritArticle()
Tb.[Numero] = GestElev!TB_Numero
Tb.[Nom] = GestElev!TB_Nom
Tb.[Prenom] = GestElev!TB_Prenom
Tb.[Classe] = GestElev!TB_Classe
Tb.Update
End Sub
Sub ModificationArticle()
Tb.Edit
EcritArticle
End sub
Sub ValidationTransaction(TypeTransaction As String)
Reponse = MsgBox("Validez-vous la saisie ?", 4)
If Reponse = vbYes Then
Select Case TypeTransaction
Case "Ajouter"
Call AjoutArticle
Case "Modifier"
Call ModificationArticle
Case "Supprimer"
Call SupprimeArticle
End Select
End If
Call EffaceChamps
Call AccesChamps (False)
End Sub
Sub SupprimeArticle()
Tb.Delete
End Sub
Pourriez-vous m'aider à écrire le code permettant d'afficher automatiquement le libellé de la classe chaque fois que le numéro de la classe est modifié ?