Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/08/2011, 11h39   #1
Invité de passage
 
Inscription : juin 2010
Messages : 2
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 2
Points : 0
Points : 0
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.
dbpirate est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 13h53   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 474
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 474
Points : 7 560
Points : 7 560
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 :
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
__________________
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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 14h07   #3
Invité de passage
 
Inscription : juin 2010
Messages : 2
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 2
Points : 0
Points : 0
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...
dbpirate est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 19h41   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 474
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 474
Points : 7 560
Points : 7 560
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+
__________________
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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h55.


 
 
 
 
Partenaires

Hébergement Web