A la creation de la variable Dim ColonValeur() As List(Of String) VB ne pose pas de probleme, ca me laisse supposer qu'il est possible de l'utiliser, mais au premier ajout il me met une erreur : Object reference not set to an instance of an object
il me propose de la declarer de cette facon : Dim ColonValeur() As New List(Of String) mais comme il sagit d'un tableau le New ne peut pas etre utiliser, la boucle sans fin..., je seche, si quelqu'un a une idee ou une autre solution pour faire le meme type d'action...
jothecracker
Messages postés26Date d'inscriptionjeudi 26 décembre 2002StatutMembreDernière intervention 9 mars 20111 10 févr. 2008 à 15:12
Merci Casy, ta solution est parfaite, c'est exactement ce que je rechercher, mais je ne connaissais pas encore les Structures, je n'avais jamais utiliser cela avant, merci encore pour ton devouement et bonne continuation, mon programme pour la gestion des heures suplementaires avance grace a toi !!
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 9 févr. 2008 à 09:36
Il ne s'agit pas d'un tableau mais d'une liste.
Ta ligne "Dim" ne fait que déclarer une variable de type liste, en aucun cas la liste est créée. Si par la suite tu veux utiliser cette liste (ce qui semble logique) il faut tout d'abord la créer en utilisant New.
Alors effectivement le mieux étant de la créer au moment de la déclaration comme tu le propose le deboggeur.
Ensuite tu ne peux pas utiliser d'index pour pointer tes éléments dans la liste tant que tu n'as pas ajouter l'élément en question.
Tu ne peux pas faire ColonValeur(0).Add("Titredelacolon1"), il faut d'abord que tu fasse ColonValeur.Add("Titredelacolon1"), ensuite tu accèdera à cet élément par ColonValeur(0)
C'est une liste que tu crée, en gros un tableau à une seule dimension. Tous les éléments que tu ajoutera seront ajouter les uns à la suite des autres.
jothecracker
Messages postés26Date d'inscriptionjeudi 26 décembre 2002StatutMembreDernière intervention 9 mars 20111 9 févr. 2008 à 21:52
Merci Casy pour ta reponse
Mais avec les explications que tu me donne mon probleme reste entier, alors je vais detailler un peu plus le probleme,
enfait dans les grandes ligne il me faudrai un tableau a 2 dimentions sur lequel il serait possible de faire un count pour savoir le nom de valeur d'une dimention, la 2eme etant symetrique,
dans la base de donnee, il y aurait une table dans laquel je voudrais ajouter une ligne, cette ligne a plusieur colonnes sous lesquelles j'ajoute plusieurs valeur:
x | 1 | 2
1 | Nom | Brutus
2 | Prenom | Alphonse
3 | Age | 23
Sub Ajout(ByVal Table As String, ByVal ColonValeur() As List(Of String))
'Declare la nouvelle ligne
Dim Row As DataRow
'Creation de la nouvelle Ligne dans la Table ...
Row = BaseVirtuel.Tables(Table).NewRow()
'Remplit la ligne par Colones
Dim a As Integer
For a = 0 To ColonValeur.Count - 1
Row(ColonValeur(0).Item(a).ToString) = ColonValeur(1).Item(a).ToString
Next
Donc ma variable ColonValeur serait un tableau a 2 dimentions, dans la 1ereColonValeur(1) serait contenue les valeurs des colonnes de la table, et dans la 2emeColonValeur(1) les valeurs des champs a ajouter.
et par le biais de la boucle For To je voudrai que cette variable soit "sous forme de liste" enfin qu'il soit possible d'en tirer un count pour faire la boucle, et pouvoir lire les 2 colonnes du tableau ligne par ligne, je ne sais pas je suis tres clair, et si cela est possible, c'est pour cela que cette methode "As List(Of String)" me disais bien
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 9 févr. 2008 à 22:39
Tu peux effectivement utiliser un tableau à 2 dimensions. Il te suffit de faire appel à la methode GetLenght pour connaitre la longueur de la dimension souhaite. Ca remplace le Count.
Bien que le tableau sera certainement meilleurs en terme de performances, voici un petit exemple, encore avec les listes, pour faire une liste à 2 dimensions (ou plus)
Juste pour montrer qu'en .Net, il existe plusieur façon pour arriver au même résultat :
' Dans les déclaration de variable publiques
Private Structure ligne
Dim nom As String
Dim valeur As String
' Constructeur
Public Sub New(ByVal nom As String, ByVal valeur As String)
Me.nom = nom
Me.valeur = valeur
End Sub
End Structure
' Dans une
procédure ou fonction qui initialise la liste
........
Dim ColonValeur As New List(Of ligne)