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

Access Discussion :

Ordre des enregistrements en import CSV


Sujet :

Access

  1. #1
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut Ordre des enregistrements en import CSV
    Bonjour, et bonne année 2011 à toutes et tous.

    Je suis confronté à un problème pour lequel je ne trouve pas de solution.

    J'importe un fichier CSV sous Access, et pour cela, j'utilise une trame d'importation (Spécifications d'import / export).

    Dans cette trame, je n'indique aucune indexation.

    Pour diverses raisons, j'ai besoin que l'importation des enregistrements se fasse dans le même ordre que le fichier CSV (absence de clé de tri, essentiellement).

    Or, systématiquement, celle-ci trie les enregistrements selon l'un des champs (pour lequel je n'ai strictement rien demandé), ce qui fait qu'à la lecture, l'ordre de mes enregistrements n'est plus du tout le même.

    De plus, quand je regarde les propriétés des champs ainsi importés, j'en trouve plusieurs (au hasard ?) indiquant qu'ils sont indexés avec doublons. Encore une fois, j'ai répondu "Non" à tous les champs pour l'indexation.

    Quelqu'un a-t-il déjà été confronté à ce problème ? S'agit-il d'une manipulation erronée de ma part ?

    Si vous avez des idées ou des pistes quelconques, je suis preneur !

    D'avance merci !

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Des fois Access veut aider ... et on s'en passerai bien.

    Quel est le nom de ton champ indéxé, un truc du genre 'Code' ?

    Quand tu fais l'importation en manuel as-tu le problème. Il y une étape où l'assistant te demande si tu veux défnir ou ajouter une clef.

    Un truc que je fais généralement avec mes fichiers textes, c'est d'ajouter un NumAuto comme clef principale, cela garanti que quelques soient les manips que je vais faire après je suis capable de retrouver l'ordre de chargement initial.

    A+

  3. #3
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Bonjour marot_r, et très bonne année à toi.

    Bingo ! Effectivement, il indexe automatique tous les champs commençant par "Code" ou "N°". Il y a fort à parier que des "Num" ou "Numéro" doivent subir le même sort...

    Bon, comme tu le dis, le pré-pensé Windosien est parfois assez contrariant....

    Je ne peux pas passer par du manuel : il s'agit de l'importation d'une facture en CSV qui est choisie par l'utilisateur via l'explorateur de fichiers.

    Je retiens 2 pistes :

    1 - modifier l'entête du CSV pour faire disparaitre ces "mots clés" avant l'importation. En plus, ce sera beaucoup plus facile pour manipuler mes champs, vu que, bien entendu, il s'agit de noms constitués de plusieurs mots séparés par des espaces ! Le truc qui te complique toujours un peu la vie, même si n'est pas insoluble !

    2 - enregistrer ma table telle qu'elle s'importe, et ensuite parvenir à trier le recordset. Au final, je peux quand même retrouver un ordre approchant de l'ordre d'origine en jonglant sur plusieurs champs. C'est un peu tordu, ça ne reprend pas exactement le même format qu'au départ, mais ça pourrait être suffisant pour la suite du traitement.

    Pour ce qui est du numéro auto, est-ce possible de l'ajouter durant l'importation auto ? Si c'est le cas, ce serait effectivement une piste intéressante, mais ça n'empêche qu'il faudrait tout de même trier ensuite mon recordset sur ce critère.

    A ce stade, j'ignore ce qu'il y a de possible et de pertinent entre ces différentes pistes. Alors n'hésites surtout pas à me donner tes conseils !

    Encore merci de ton intervention, et au plaisir de te lire.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Une solution radicale si la structure de ton fichier est constante consiste à conserver ta table qui reçoit tes données d'importation au lieu d'importer dans une nouvelle table à chaque fois.

    Tu procède ainsi :

    1. Tu vides la table (Delete * from TaTableReceptrice).
    2. Tu importes les données dans la table vidée.


    L'avantage est que la structure de ta table va rester. Donc si il y a un index il va rester et si il n'y en a pas Access n'en créera pas.

    Tu peux aussi aller dans les options de Access (menu outils/option/table et requete) et enlever le contenu de 'index automatique à l'importation').

    Pour l'importation manuelle, je te suggérai de faire un test et voir si en manuel tu as le problème. Je ne suis pas un fan des importations automatique de Access donc je n'en connais pas tous les paramêtres. Quand j'ai affaire à un fichier texte, généralement je programme ma propre importaion ça m'évite des "surprises".

    A+

  5. #5
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par marot_r Voir le message

    Tu peux aussi aller dans les options de Access (menu outils/option/table et requete) et enlever le contenu de 'index automatique à l'importation').
    marot_r, tu es génial !

    J'ai pas pris la résolution de me marier en 2011 (en plus je le suis déjà, c'est con !), mais franchement, sur le coup, je crois que je t'aurais fait ma demande !

    Ben voilà, CQFD, ite missa est, et tutti quanti !

    Forcément, ça encourage ma fainéantise naturelle, et je vais vers le plus simple, mais bon, il faut bien le dire, voilà qui résout totalement mon problème !

    Je te remercie encore une fois de ton aide précieuse !

    Très bonne continuation à toi, et à très bientôt.

    Le temps de lire ta réponse et je passe le topic en résolu...

  6. #6
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Si quand même, un truc.

    J'ai quand même un peu exploré la solution du tri du recordset. J'ai vu qu'on ne pouvait le faire qu'avec la propriété Nomdurecordset.CursorLocation = adUseClient

    Seulement voilà, pas plus de .CursorLocation que de beurre en branche.

    Il me le donne bien dans l'explorateur d'objet, mais impossible d'y faire appel dans le code.

    Tu aurais une piste ?

  7. #7
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Cabos et Marot_r,

    Bonne année 2011 à tous.

    Je me permets de m'immiscer dans ce fil...

    Bingo ! Effectivement, il indexe automatique tous les champs commençant par "Code" ou "N°". Il y a fort à parier que des "Num" ou "Numéro" doivent subir le même sort...
    C'est une option paramétrable dans Access :
    - Outils/Option ;
    - onglet Table/requête ;
    - "Index automatique à l'importation/création" ;
    ==> donne la liste des champs indexés automatiquement.

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Le temps de lire ta réponse et je passe le topic en résolu...
    Pour le mariage ? Désolé, mais je le suis déjà moi aussi.

    Pour les tri de recordset la méthode que j'utilise personnellement c'est de faire une requête où je décide de l'orde de tri souhaité. Je n'ai aucune idée de ce dont tu parles.

    A+

  9. #9
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bon, eh bien, je vais me dés-immiscer... vous allez bien nous faire un bébé... hors mariage(s), donc...

  10. #10
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Bonjour Richard_35,

    Effectivement, toute la liste des "mots clés" provoquant l'index s'y trouve. Mais faute de le savoir, j'y ai passé beaucoup de temps quand même.

    Pour le bébé, j'en ai déjà un en ce moment, alors bon, mes capacités de sommeil ne vont pas y survivre si j'enchaine avec un deuxième ! Déjà que c'est pas la gloire en progra...

    marot_r, en fait, je parle d'une propriété qui permet d'utiliser ensuite la propriété "sort", tri direct dans un recordset, ce qui, tu le concevras, peut être bien pratique.

    Mais bon, impossible de trouver cette propriété pourtant décrite dans toutes les aides...

    Pas grave, je verrais cela une autre fois.

    Merci de ton aide une fois de plus, et sujet résolu.

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Attention il y a 2 types d'objet recordset. Les DAO.Recordset et les ADO.Recordset. Vu la syntaxe je pense qu'il s'agit d'un recordset de type ADO.

    Lors de la déclaration pour éviter les confusions tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim rADO as ADO.Recordset
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim rDAO as DAO.Recordset
    DAO et ADO sont deux librairies qui fournissent des objets d'accès aux données et qui ont des objets qui portent le même nom mais pas les mêmes propriétés.

    Et les deux librairies peuvet être référencées en même temps ajoutant à la confusion.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ordre des enregistrements dans un DataGridView
    Par tssi555 dans le forum VB.NET
    Réponses: 6
    Dernier message: 25/08/2008, 13h15
  2. Réponses: 3
    Dernier message: 13/06/2006, 14h16
  3. ordre des enregistrements
    Par LadyArwen dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/03/2006, 14h38

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