Besoin d'aide pour réaliser plusieurs tableaux

[Résolu]
Signaler
-
 DarkKirikou -
Bonjour,

Je réalise un logiciel qui se connecte à des automates pour lire la valeurs de leur mot, tout marche jusque là!
Une fois analysé puis traité (de la valeur du mot, je déduis les bits à 1 et à 0), je compare mon échantillon à un précédent.
Je souhaite réalisé des tableaux automatiquement afin de pouvoir stocker mes informations (1 tableau par IP)
Je suis donc bloqué à ceci:

Private Sub creation_tableau()

For nombre_ip As Integer = 0 To List_IP.Items.Count - 1
dim nombre_ip(20) as string
Next

dim nombre_ip(20) est la mauvaise syntaxe que je cherche à remplacé

Est-ce que quelqu'un pourait me dire quoi faire ?

20 réponses

Bonjour DarkKirikou.

Je vois que vous ne répondez pas. Or, le code que je vous ai construit encombre mon bac à sable. Je vous envoie donc la totalité du code, et me retire de cette discussion. Bon courage pour la suite.
Public Class Form1
    Private Tbls() As Table

    Private Structure Table
        Dim Tbl() As String
    End Structure

    Private Sub CréerTableaux()
        Dim n As Integer, i As Integer, Tble As Table
        n 3 : ReDim Tbls(n) 'à la place de n List_IP.Items.Count - 1
        For i = 0 To n
            ReDim Tble.Tbl(20) : Tbls(i) = Tble
        Next i
    End Sub

    ''' <summary>
    ''' Obtient ou définit l'élément n°j du tableau n°i
    ''' </summary>
    Private Property Valeur(ByVal i As Integer, ByVal j As Integer) As String
        Get
            Return Tbls(i).Tbl(j)
        End Get
        Set(ByVal Vlr As String)
            Tbls(i).Tbl(j) = Vlr
        End Set
    End Property

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        CréerTableaux()
        Valeur(2, 7) = "az" : MessageBox.Show(Valeur(2, 7))
        Valeur(1, 8) = "xb" : MessageBox.Show(Valeur(1, 8))
    End Sub

End Class




Étant illettré, je signe d'une croix : ×
Bonjour SombreKirikou.

Si vous imposez de ne toucher qu'à la syntaxe
dim nombre_ip(20)

je ne sais pas vous dire quoi faire, sinon pleurer.

Étant illettré, je signe d'une croix : ×
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour (et un salut à Zermelo),
Je suppose qu'il devrait s'intéresser à un tableau de structures.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Bonjour ucfoutu.

C'est évidemment la meilleure solution. Mais il va falloir lui faire accepter l'idée que nous sommes là pour l'aider et non pour lui complaire (çà te rappelle quelque chose?), et çà me paraît déjà mal parti.

Bien amicalement.


Étant illettré, je signe d'une croix : ×
Ah non, aucune obligation.
Quelque soit la solution, ça m'intéresse
Par contre je n'ai pas encore eut le temps de découvrir ce qu'est une structure
Vu ce qui précède, voulez-vous mon aide. Prière de répondre par oui ou par non


Étant illettré, je signe d'une croix : ×
Je voulais juste exposé mon idée de départ pour entendre les critiques.

Désolé Zermelo, je me suis mal exprimé.
Oui, je le veux
Hum!
Mes excuses!
Nos messages se sont croisés.
Questions préalables:
Dans quelle version de vb.net travaillez-vous?
Quel est le nom du formulaire dans lequel vous programmez?



Étant illettré, je signe d'une croix : ×
visual studio 2010
form1
Langage VB.net
Bien.

Je vais vous préparer une réponse, en forme de code commenté. Cela vous apprendra ce qu'est une structure, et surtout comment stocker un nombre indéterminé (mais fini), de tableaux. Rendez-vous vers 14h.

Cordialement.


Étant illettré, je signe d'une croix : ×
Très bien, merci à vous
Me revoici.

Il s'agit donc de stocker temporairement un nombre, a priori indéterminé, de tableaux. Or, lorsque l'on veut stocker plusieurs objets de même type, on les stocke dans un
tableau (ou dans une collection, mais ceci est une autre histoire). Nous avons donc à stocker un tableau de tableaux. Pour avoir un code bien lisible, nous allons nous aider d'une structure. Il s'agit d'un objet de la forme
    Private Structure Machin
        Dim x As String
        Dim y As Integer
        Dim z As DateTime
    End Structure

le nombre de champs étant théoriquement illimité. Dans notre cas, nous abritons nos tableaux dans une structure nommée Table, et nous stockerons les tableaux souhaités dans le tableau Tbls() As Table.

Public Class Form1

    Private Tbls() As Table

    Private Structure Table
        Dim Tbl() As String
    End Structure

    Private Sub CréerTableaux()
        Dim n As Integer, i As Integer, j As Integer
        Dim Tble As Table
        n 3 'à la place de n List_IP.Items.Count - 1
        ReDim Tbls(n)
        For i = 0 To n
            ReDim Tble.Tbl(20)
        Next i
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        CréerTableaux()
    End Sub

End Class



Étant illettré, je signe d'une croix : ×
D'accord, je vais essayé ça de suite
À ce stade, vous auriez dû vous apercevoir qu'il manque
Tbls(i) = Tble

après
Redim Tble.Tbl(20)

Pourquoi, d'après vous?

Étant illettré, je signe d'une croix : ×
Faites-moi signe lorsque vous serez prêt. En effet, le code que je vous ai fourni (avec l'ajout après coup) ne fait de créer le tableau de tableaux. Mais il faut de plus y accéder commodément en lecture/écriture, et je vous donnerai le code correspondant. Cela vous permettra de vous familiariser (si ce n'est pas déjà fait) avec les propriétés en vb 2010.


Étant illettré, je signe d'une croix : ×

Bonjour,

J'arrive en retard à cause du décalage horaire et je ne veux pas lancer de polémique; mais ma préférence irait vers un dataset et une datatable par machine, au lieu d'une série de tableaux. Ne serait-ce que pour disposer des fonctions de calcul et de recherche immédiatement disponibles et de la sauvegarde possible de l'ensemble des données au format xml avec seulement 2 lignes de code.
Bonjour cmarcotte.

Pour moi il ne peut être question de polémique. Il appartiendra à DarkKirikou de choisir.

Avec mes amitiés.

Étant illettré, je signe d'une croix : ×
Bonjour, désolé pour mon abscence mais ma carte réseau m'a lâché quelques heures après que je vous réponde Zermelo.
Entre temps, je me suis énervé de ne pas trouvé la réponse et du coups j'ai modifié mon code en créant automatiquement des datatables, c'est la seul chose que je savais faire en dehors des tableaux.
Le résultat n'en est que plus simple, je m'explique.je me connectais à excel pour récupéré la liste des défauts (non à jour) et l'envoyé au serveur SQL.

Bête comme je suis, je n'avais pas pensé que le plus simple était de réalisé une feuille par automate.
Ainsi lorsque j'ai reçu une mise à jour de la liste d'erreur(200 par automate) l'idée à germé.

Voici le code utilisé:

cnx.Open()

For Me.i = 0 To ListIP.Items.Count - 1

cmd.Connection = cnx

'Déclaré la commande de type texte afin d'utilisé les structures SQL
cmd.CommandType = CommandType.Text
Dim requete As String = "select * from " & "[" & ListIP.Items(i) & "]"

'paramétre de la requête
cmd.CommandText = requete

'Assigne la commande au dataAdapter
da.SelectCommand = cmd

'remplissage du dataset par le biais du dataAdaptateur
da.Fill(ds, "test" & i)

'ajout du contenue de la cellule où se trouve les adresses IP dans une listbox
List_IP.Items.Add(ds.Tables("test" & i).Rows(1).Item(0).ToString)

Next

'Fermeture de la connection
cnx.Close()

'Vidage de cnx
cnx = Nothing


Pour les structures, je vais ajouté une petite fonctionnalité afin de les utilisé: elles me plaisent.

Merci encore Zermelo

En revanche, je ne connais rien encore au XML donc je suis preneur.



---Plus j'en apprend, moins bête je me sens---