IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Gestion des index For Each / For i=0 To Max


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 467
    Points : 647
    Points
    647
    Par défaut Gestion des index For Each / For i=0 To Max
    Bonjour,

    Après longues réflexions, je me sert dans un programme tantôt d'un "for each" tantôt d'un "for" classique.

    La raison principale est que je dois mémoriser des positions de lignes.

    Cas concret :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Un dictionnaire :
    Dim dicMonDictionnaire as new Dictionnary (of String, Integer)
    Une datatable (issue d'un "select ... from")
    Dim uneDataTable as DataTable
    'un compteur
    Dim intCounter as Integer=0
    En fait je vais parcourir avec un for each les lignes de ma DataTable et stocker dans mon dictionnaire :
    Key : valeur de champs
    Value : Index de ligne de la DataTable

    Un truc dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For each dtLine as DataRow In uneDataTable.Rows
    dicMonDictionnaire.Add(dtLine.Item("MonChamps").ToString, intCounter)
    intCounter += 1
    Next

    Est ce que je peux être certain que le parcours en "for each" traite les lignes dans l'ordre ?

    Pour résumer mon prog', je souhaite faire un outils de synchronisation de base de donnée. Et je commence par "indexer" la/les clés primaires d'une table à l'aide d'un dictionnaire et je stocke les valeurs de clés primaires comme "String" dans mon dictionnaire, et la position de la ligne (dans la datable) où se situe cette clé primaire.

    Est ce erroné ?

    En théorie, je dirai oui, ça fonctionne en procédurale. Mais je ne voudrais pas avoir de mauvaise surprise par la suite.

    Merci de votre aide.

  2. #2
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 777
    Points
    1 777
    Par défaut
    Bonjour.

    Citation Envoyé par Luc1an0 Voir le message
    Est ce que je peux être certain que le parcours en "for each" traite les lignes dans l'ordre ?
    Je pense que tu as un order by dans ton select, si c'est le cas, le for each te rendra bien le même ordre. Sinon, tu peux toujours utiliser un dataview.sort sur la datatable et faire le for each sur le dataview.

    Par contre, je ne vois pas l'intérêt pour ce que tu veux faire de charger les données dans un dictionnaire.
    En jouant avec des filtres via dataview sur la datatable, tu peux surement t'en passer.

    Cdt.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 467
    Points : 647
    Points
    647
    Par défaut
    J'ai surement mal du m'exprimer, mais l'avantage c'est que je ne connaissais pas l'existence de filtre sur une DataTable Merci !

    En fait le dictionnaire est pas si idiot que ça :
    J'ai un dictionnaire qui stocke en clé : la clé primaire et comme valeur "la position de la ligne de cette clé primaire dans la datatable".

    Et apres je récupère dans une autre datatable la sélection de ma table "mirroir" et j'initialise un dictionnaire de la même façon.

    Pour finir, pour chaque clé contenu dans la table "source", je regarde si elle est présente dans le dictionnaire de la table "destination". Comme ça j'enleve les clés présentes dans le dictionnaire "source", il ne me reste que les clés manquantes dans ma table de destination.

    Donc pour chaque élément du dictionnaire source, j'ai :
    les clés des données à insérer
    la position de la ligne (dans la datatable source) où trouver les données.

    Mais finalement je vais passer par un "for i as Int"... Au moins je serai certain de la position de ma ligne.

    Certains pourront penser que je devrais passer par un ETL pour faire cela, mais bon... Je peux aussi concevoir le programme selon nos spécificités, et pouvoir faire de l'optimisation.

    Merci de ta réponse en tout cas

Discussions similaires

  1. Gestion des Index
    Par fdesalle dans le forum Oracle
    Réponses: 3
    Dernier message: 03/02/2010, 16h49
  2. Gestion des index sous access
    Par new_wave dans le forum Sécurité
    Réponses: 1
    Dernier message: 12/06/2008, 18h04
  3. [Oracle 9i] gestion des indexs
    Par Herveg dans le forum Oracle
    Réponses: 14
    Dernier message: 18/05/2006, 12h00
  4. Gestion des indexes
    Par tomca dans le forum Oracle
    Réponses: 6
    Dernier message: 17/02/2006, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo