Bonjour,
Je suis en train de faire un test en VB6 qui va débouché à une intégration dans un programme que je suis en train d'effectuer.
Afin de comprendre la programmation objet et ses débouchés sur VB6, J'ai mis en œuvre un petit programme qui me permet simplement d'afficher des données résultant d'un tableau.
Je m'explique, j'ai un objet que j'ai appelé tabHoraire qui possède trois propriétés ainsi que trois événements. Ses propriétés sont JJMMAAAA qui représente la date, NumManager qui représente un numéro unique de manager et NomTranche qui représente le nom dune tranche horaire unique aussi.
Cependant, j'aurais besoin d'un objet pour chaque manager qui se situe dans une base de données. Etant donné que chaque Manager est identifié par un numéro unique, j'ai donc décidé de faire un tableau(numManager). Ceci dit, VB6 n'accepte pas les tableaux en tant qu'objet qui prend en compte des évènements. J'ai donc créé un tableau parallèle issus de la même classe qui serait instancié par l'objet évènementié.
Jusque là tout va bien, cependant, lorque j'effectue un set tabHoraireAff(0), le tableau est instancié même hors fonction. C'est assez difficile à expliquer et je pense que mon code vous en dira plus.
Mon formulaire
Ma classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 Option Explicit Dim WithEvents tabHoraire As clsHoraire Dim tabHoraireAff(10) As clsHoraire Private Sub InitVariables() Set tabHoraire = Nothing End Sub Private Sub Form_Load() InitVariables Set tabHoraire = New clsHoraire tabHoraire.JJMMAAAA = "08/08/2008" tabHoraire.nom_tranche = "O" tabHoraire.num_manager = 2 Call Affiche(tabHoraire, 0, "O", 2, "08/08/2008") Call Affiche(tabHoraire, 1, "C", 5, "09/08/2008") lbJJMMAAAA2.Caption = lbJJMMAAAA2.Caption & tabHoraireAff(1).JJMMAAAA lbNumManager2.Caption = lbNumManager2.Caption & tabHoraireAff(1).num_manager lbNomTranche2.Caption = lbNomTranche2.Caption & tabHoraireAff(1).nom_tranche lbJJMMAAAA.Caption = lbJJMMAAAA.Caption & tabHoraireAff(0).JJMMAAAA lbNumManager.Caption = lbNumManager.Caption & tabHoraireAff(0).num_manager lbNomTranche.Caption = lbNomTranche.Caption & tabHoraireAff(0).nom_tranche End Sub Private Sub Affiche(ByVal tab_ho As clsHoraire, i As Integer, tranche As String, manager As Integer, JJMMAAAA As String) tab_ho.nom_tranche = tranche tab_ho.num_manager = manager tab_ho.JJMMAAAA = JJMMAAAA Set tabHoraireAff(i) = tab_ho End Sub Private Sub Form_Unload(Cancel As Integer) Set tabHoraire = Nothing End End Sub
Et voici ce que ça me donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Option Explicit Private lJJMMAAAA As String Private lnum_manager As Integer Private lnom_tranche As String Public Event JJMMAAAAAjout() Public Event NumManagerAjout() Public Event NomTrancheAjout() Public Property Let JJMMAAAA(ByVal vdata As String) lJJMMAAAA = vdata RaiseEvent JJMMAAAAAjout End Property Public Property Get JJMMAAAA() As String JJMMAAAA = lJJMMAAAA End Property Public Property Let num_manager(ByVal vdata As Integer) lnum_manager = vdata RaiseEvent NumManagerAjout End Property Public Property Get num_manager() As Integer num_manager = lnum_manager End Property Public Property Let nom_tranche(ByVal vdata As String) lnom_tranche = vdata RaiseEvent NomTrancheAjout End Property Public Property Get nom_tranche() As String nom_tranche = lnom_tranche End Property
Voila, le problème, c'est que même si la valeur est rentré dans affiche comme ByVal, la valeur 0 du tableau continue a changer en fonction de tab_ho.
Si vous avez une solution, cela pourrais m'aider grandement. Je vous remerci d'avance pour vos réponses
Albat90![]()
Partager