|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Francois Responsable de service informatique Inscription : novembre 2010 Messages : 33 ![]() |
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 ! |
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 458 ![]() |
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
10
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Francois Responsable de service informatique Inscription : novembre 2010 Messages : 33 ![]() |
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. |
|
|
00
|
|
|
#4 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 458 ![]() |
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 :
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
10
|
|
|
#5 | |
|
Nouveau Membre du Club
![]() Francois Responsable de service informatique Inscription : novembre 2010 Messages : 33 ![]() |
Citation:
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... |
|
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Francois Responsable de service informatique Inscription : novembre 2010 Messages : 33 ![]() |
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 ? |
|
|
00
|
|
|
#7 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Cabos et Marot_r,
Bonne année 2011 à tous. Je me permets de m'immiscer dans ce fil... Citation:
- Outils/Option ; - onglet Table/requête ; - "Index automatique à l'importation/création" ; ==> donne la liste des champs indexés automatiquement.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#8 | |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 458 ![]() |
Citation:
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bon, eh bien, je vais me dés-immiscer... vous allez bien nous faire un bébé... hors mariage(s), donc...
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Francois Responsable de service informatique Inscription : novembre 2010 Messages : 33 ![]() |
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. |
|
|
00
|
|
|
#11 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 458 ![]() |
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 : ou 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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com