Classe Vb6

cs_Hilm Messages postés 6 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 5 mars 2006 - 26 juil. 2004 à 22:40
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 - 27 juil. 2004 à 08:57
bonjour à tous !

voilà je débute en Vb6, j'ai un problème avec les classes.
quelqu'un pourrait il corriger ceci :

'**** CLASSE OPERATIONS ******
Option Explicit

Private mcolOperations As New Collection

Public Sub Delete(intNumero As Integer)
mcolOperations.Remove intNumero
End Sub

Public Function Count() As Long
Count = mcolOperations.Count
End Function

Public Function Add(ByVal strName As String, ByVal intNumero As Integer) As Operation
Dim newOperation As New Operation
mcolOperations.Add strName, intNumero 'ERREUR ICI "Type incompatible"
Set Add = newOperation
End Function

Public Function NewEnum() As IUnknown
Set NewEnum = mcolOperations.[_NewEnum]
End Function

'*****CLASSE OPERATION *********
Option Explicit

Public Categorie As String

Public numero As Integer

Public Jour As Date

Public Cout As Currency
********************************

j'ai repérer la ligne où VB me signale une erreur.

merci pour vos réponses !

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 juil. 2004 à 23:42
Salut Hilm
Je pense que tu as mal lu l'aide à propos des Collections :
La méthode Add a besoin de deux paramètres (plus deux autres optionnels) :
Add Item, Key
- Item est de n'importe quel type
- Key est une chaine --> Transforme ton "intNumero As Integer" en "intNumero As String" dans la méthode Add.
Par contre, méfie toi, ne confonds pas le "Key" avec l'index :
- Tu insères la données "a" avec la clé "1"
- Tu insères la données "b" avec la clé "2"
- Tu supprime la donnée "a" avec .Remove 1
--> La donnée "b" a maintenant l'index 1 alors que sa clé est toujours "2"
Tu pourras la retrouver en faisant un .Item("2") mais pas avec un .Item(2) !
Les entiers désignent l'ordre dans lequel se retrouvent les données, alors que "2" est une clé de recherche.

Vala
Jack
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
27 juil. 2004 à 04:10
Salut,
Moi aussi je debute la dedans mais ... essais ca:

Public Function Add(ByVal strName As String, ByVal intNumero As Integer) As Operation
Dim newOperation As New Operation
Set newOperation = New Operation
'Sous entendu que tu as une 2eme classe ou tu integres tes variables
With newOperation
.strName
.intNumero
end with

If Len(Key) = 0 Then
mcolOperations.Add newOperation
Else
mcolOperations.Add newOperation , Key 'L item correspond a ta class newOperation que tu pourras récupérer
End If

Set Add = newOperation
Set newOperation = Nothing

End Function

puis tu peux mettre aussi le récup d'un item:
Public Property Get Item(IndexKey As Variant) As Operation
Set Item = mCol(IndexKey )
End Property

bonne prog
liquide
0
cs_Hilm Messages postés 6 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 5 mars 2006
27 juil. 2004 à 07:56
un grand merci pour ton aide jack, là il est bonne heure et je vais bosser.
en rentrant chez moi je m'y remets !

encore une fois merci, je commençais à devenir fou avec ces classes !

Hilm
0
cs_Hilm Messages postés 6 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 5 mars 2006
27 juil. 2004 à 07:57
Merci à toi aussi liquide!
j'ssaierais ta solution et si ça marche je te le ferais savoir.

Hilm
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
27 juil. 2004 à 08:57
Comme précisé plus haut, il ne faut pas confondre la Key et l'Index d'un objet de la collection.

Exemples d'appel :
- MaCollection.Item(intNumero) te renvoit l'objet à l'index intNumero
- MaCollection.Item(CStr(intNumero)) te renvoit l'objet qui à la clef intNumero
0
Rejoignez-nous