[VB.NET] Probleme Tableau structure
zlatan
-
zlatan -
zlatan -
Bonjour
Voila j'ai un probleme avec un tableau a une dimension structuré
1. Public Structure mouvement
2. <VBFixedString(10)> Dim datemv As String
3. <VBFixedString(10)> Dim libellé As String
4. <VBFixedString(50)> Dim débit As String
5. <VBFixedString(10)> Dim crédit As String
6. End Structure
7. Dim n As Integer = 0
8. Dim tabmouv() As mouvement
9. tabmouv(n).datemv = "0"
10. tabmouv(n).libellé = "0"
11. tabmouv(n).débit = "0"
12. tabmouv(n).crédit = "0"
J'ai un avertissement sur la ligne souligné
"Avertissement 2 La variable 'tabmouv' est utilisée avant qu'une valeur ne lui ait été assignée. Une exception de référence null peut se produire au moment de l'exécution."
J'ai l'erreur suivante sur la ligne soulignée lorsque j'execute
"System.NullReferenceException : La référence d'objet n'est pas définie à une instance d'un objet."
merci de votre aide
Voila j'ai un probleme avec un tableau a une dimension structuré
1. Public Structure mouvement
2. <VBFixedString(10)> Dim datemv As String
3. <VBFixedString(10)> Dim libellé As String
4. <VBFixedString(50)> Dim débit As String
5. <VBFixedString(10)> Dim crédit As String
6. End Structure
7. Dim n As Integer = 0
8. Dim tabmouv() As mouvement
9. tabmouv(n).datemv = "0"
10. tabmouv(n).libellé = "0"
11. tabmouv(n).débit = "0"
12. tabmouv(n).crédit = "0"
J'ai un avertissement sur la ligne souligné
"Avertissement 2 La variable 'tabmouv' est utilisée avant qu'une valeur ne lui ait été assignée. Une exception de référence null peut se produire au moment de l'exécution."
J'ai l'erreur suivante sur la ligne soulignée lorsque j'execute
"System.NullReferenceException : La référence d'objet n'est pas définie à une instance d'un objet."
merci de votre aide
A voir également:
- [VB.NET] Probleme Tableau structure
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
4 réponses
ok merci mais finallement je fait avec une collection : generic.list
ça fonctionne maintenant je tri cette liste par date croissante
listmouv est la liste deja rempli :
Dim permut As Boolean = True
Dim tabdate1() As String
Dim tabdate2() As String
Dim stock As mouvement
Dim j As Integer
Do While permut = True
permut = False
For j = 1 To listmouv.Count - 1
tabdate1 = Split(listmouv.Item(j - 1).datemv, "/", 3)
tabdate2 = Split(listmouv.Item(j).datemv, "/", 3)
If Val(tabdate1(2)) > Val(tabdate2(2)) Then
permut = True
Else
If Val(tabdate1(2)) = Val(tabdate2(2)) And Val(tabdate1(1)) > Val(tabdate2(1)) Then
permut = True
Else
If Val(tabdate1(2)) = Val(tabdate2(2)) And Val(tabdate1(1)) = Val(tabdate2(1)) And Val(tabdate1(0)) >= Val(tabdate2(0)) Then
permut = True
End If
End If
End If
If permut = True Then
stock = listmouv.Item(j - 1)
listmouv.Item(j - 1) = listmouv.Item(j)
listmouv.Item(j) = stock
End If
Next
Loop
ça fonctionne maintenant je tri cette liste par date croissante
listmouv est la liste deja rempli :
Dim permut As Boolean = True
Dim tabdate1() As String
Dim tabdate2() As String
Dim stock As mouvement
Dim j As Integer
Do While permut = True
permut = False
For j = 1 To listmouv.Count - 1
tabdate1 = Split(listmouv.Item(j - 1).datemv, "/", 3)
tabdate2 = Split(listmouv.Item(j).datemv, "/", 3)
If Val(tabdate1(2)) > Val(tabdate2(2)) Then
permut = True
Else
If Val(tabdate1(2)) = Val(tabdate2(2)) And Val(tabdate1(1)) > Val(tabdate2(1)) Then
permut = True
Else
If Val(tabdate1(2)) = Val(tabdate2(2)) And Val(tabdate1(1)) = Val(tabdate2(1)) And Val(tabdate1(0)) >= Val(tabdate2(0)) Then
permut = True
End If
End If
End If
If permut = True Then
stock = listmouv.Item(j - 1)
listmouv.Item(j - 1) = listmouv.Item(j)
listmouv.Item(j) = stock
End If
Next
Loop
en faisant cela : Dim tabmouv() As mouvement
tu as declaré un pointeur (c'est a dire sans dimension)
tu dois declarer ton tableau avec une dimension finie : Dim tabmouv(2) As mouvement
du coup tabmouv(0) sera connu
tu as declaré un pointeur (c'est a dire sans dimension)
tu dois declarer ton tableau avec une dimension finie : Dim tabmouv(2) As mouvement
du coup tabmouv(0) sera connu
merci de ta réponse
Le probleme c'est que je ne sais pas combien d'élément je vais mettre dans mon tableau
Je vais parcourrir une base de donnée et ajouter dans le tableau tout les mouvements
Il faudrait que je compte le nombre de mouvement dans ma base de donnée puis ensuite je fait
dim tabmouv(nbmouv) as mouvement ?
Le probleme c'est que je ne sais pas combien d'élément je vais mettre dans mon tableau
Je vais parcourrir une base de donnée et ajouter dans le tableau tout les mouvements
Il faudrait que je compte le nombre de mouvement dans ma base de donnée puis ensuite je fait
dim tabmouv(nbmouv) as mouvement ?
merci
oui j'ai vu dans l'aide il parle de new mais j'ai pas tout compris
Là avec la premiere solution ça irai mais pour la requete j'ai un petit souci
select count(numéro) from mouvements
mouvements est une table, numéro est un champ de mouvements
Normalement j'ai un entier en sortie de cette requete ?
J'ai fait :
Dim monAccesBD = New gestionBD("127.0.0.1", "baseig", "root", "root")
Dim nbmv As Integer = monAccesBD.MySQL_Select("select count(numéro) from mouvements")
Dim tabmouv(nbmv) As mouvement
mais il me dit que nbmv doit être de type odbc.odbcdataReader
oui j'ai vu dans l'aide il parle de new mais j'ai pas tout compris
Là avec la premiere solution ça irai mais pour la requete j'ai un petit souci
select count(numéro) from mouvements
mouvements est une table, numéro est un champ de mouvements
Normalement j'ai un entier en sortie de cette requete ?
J'ai fait :
Dim monAccesBD = New gestionBD("127.0.0.1", "baseig", "root", "root")
Dim nbmv As Integer = monAccesBD.MySQL_Select("select count(numéro) from mouvements")
Dim tabmouv(nbmv) As mouvement
mais il me dit que nbmv doit être de type odbc.odbcdataReader
dans ce cas la, tu pourrais utilliser les fonction Redim
Public Structure mouvement
<VBFixedString(10)> Dim datemv As String
<VBFixedString(10)> Dim libellé As String
<VBFixedString(50)> Dim débit As String
<VBFixedString(10)> Dim crédit As String
End Structure
Dim tabmouv() As mouvement
Sub Main()
ReDim tabmouv(2)
tabmouv(0).datemv = "0"
tabmouv(0).libellé = "0"
tabmouv(0).débit = "0"
tabmouv(0).crédit = "0"
...
et tu fais ton redim dans ta boucle de lecture
Public Structure mouvement
<VBFixedString(10)> Dim datemv As String
<VBFixedString(10)> Dim libellé As String
<VBFixedString(50)> Dim débit As String
<VBFixedString(10)> Dim crédit As String
End Structure
Dim tabmouv() As mouvement
Sub Main()
ReDim tabmouv(2)
tabmouv(0).datemv = "0"
tabmouv(0).libellé = "0"
tabmouv(0).débit = "0"
tabmouv(0).crédit = "0"
...
et tu fais ton redim dans ta boucle de lecture