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

Modélisation Discussion :

Access et CSV : perte de champs des liaisons


Sujet :

Modélisation

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Access et CSV : perte de champs des liaisons
    Bonjour,
    J'ai développé une application en ASP qui se connecte à une base Access.
    Celle-ci est liée à un fichier CSV qui est écrasé chaque jour par une nouvelle version car une tâche programmée le génère et le copie.
    Ce CSV est un export Exchange/Active Directory dont je ne conserve que certains champs (displayName, physicalDeliveryOfficeName, company, mail, title).
    Or, certaines fois, je perds le champ "title", pourtant bien rempli dans Access, ou certains champs sont inversés.
    En refaisant la liaison tout rentre dans l'ordre mais c'est quand même embêtant...
    Le souci, c'est que l'export de l'AD n'est pas paramétrable et je ne peux pas mettre comme séparateur le point-virgule à la place de la virgule. Du coup, dans Access, lors de ma liaison, je choisis "Avancé" pour indiquer que le signe décimal est le point et non la virgule, que le séparateur de chaine est le guillemet, que je ne prends pas le champ DN, que la première ligne contient le nom des champs, etc.
    Je me demande comment faire pour ne pas être obligé de refaire la liaison chaque fois que je perds un champ ou que certains champs sont inversés (leur contenu) mais surtout, pourquoi j'ai ces soucis.

    Quelqu'un a-t-il une solution à me proposer ?

    Merci d'avance.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Je n'ai pas de réponse à tes deux questions mais je te propose de contourner le problème. Au lieu d'utiliser un fichier lié je te suggère de charger à la main tes données dans une table avec un peu de VBA.

    Exemple de code faisant cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    dim numFic as integer:numFic=freefile()
    dim nomFic as string:nomFic="x:\TonChemin\tonFichier.csv"
    dim cFic as variant
    dim i as long
    dim lf as string
    dim db as dao.database:set db=currentdb
    dim r as dao.database:set r=db.openRecordset("NomTaTableDestinatrice")
    dim f as dao.field
     
    open nomFic for input as #numfic
     
    do while not eof(numFic) 'Lit le fichier jsuqu'à sa fin
       line input #numfic, lf 'Lit une ligne du fichier
       cFic=split(lf,"Ici ton séparateutr") 'Découpe ta ligne en champs
     
       r.addnew
     
       for i=lbound(cFic) to ubound(cFic)
           set f=r.fields(i)
     
           'Converti la donnée lue selon le type du champ
           select case f.fieldType
              case dbText
                  f=mid(cFic(i),2,len(cfic)-2) 'Supprime le guillet au début et à la fin
     
              case dbLong, dbInteger, dbSingle, dbDouble
                 f=val(cFic(i))
     
              case dbDate
                 f=cdate(cFic(i))
     
              case else
                 error 5
     
           end select                    
     
       next i
     
       r.update
    loop
     
    r.close:set r=nothing
    set db=nothing
    close #numfic

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Merci de ta réponse, mais cela n'est pas possible.
    Il faut bien comprendre que la base Access n'est jamais ouverte.
    Seul le fichier CSV est copié chaque jour.
    De plus, la .BAT qui automatise exécute une commande DOS d'export des données de l'Active Directory/Exchange dans ce fichier CSV puis copie ce fichier du serveur Exchange sur le serveur IIS.
    Lors de cet export en CSV, les guillemets sont "échappés", c'est-à-dire que je vais avoir par exemple : "DN=Liste \\""commune\\"" des services",....
    Le serveur IIS, au travers d'une page en ASP, attaque la table liée et il arrive parfois que le champ "title" soit vide. Il est même arrivé que deux champs soient inversés. Pourtant, en ouvrant Access, toutes les données sont là. Je me demande si je ne vais pas aller chercher les infos avec RS(0) plutôt qu'avec RS("DisplayName") pour voir...

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Donc ta BD Access ne sert que de point d'accès au fichier pour ton programme ASP. C'est bien cela ?

    Ne peux-tu accéder directement au fichier CSV via ton programme ASP en le postant sur ton serveur IIS ? Ce serait peut être plus performant mais surtout tu enlèverai une pièce du puzzle.

    Au fait c'est de l'ASP 3.0 ou ASP.Net ?

    Ici tu trouvera un exemple de lecture de fichier avec ASP 3.0.

    http://www.codeproject.com/KB/asp/readfile.aspx

    A+

Discussions similaires

  1. Lecture CSV et verification ordre des champs
    Par vincent62149 dans le forum VB.NET
    Réponses: 9
    Dernier message: 11/12/2009, 11h34
  2. [AC-2003] Perte des liaisons de table au démarrage
    Par stigma dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/06/2009, 11h49
  3. [XL-2007] Perte des liaisons
    Par Traissac dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/06/2009, 07h53
  4. Réponses: 4
    Dernier message: 09/07/2008, 15h07
  5. Réponses: 11
    Dernier message: 12/05/2006, 17h18

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