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 :

[DDE]Liaison avec des fichiers Textes ! Comment Optimiser Access ?


Sujet :

Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut [DDE]Liaison avec des fichiers Textes ! Comment Optimiser Access ?
    Plus je surfe sur ce forum Access et plus, je m'aperçois que le niveau des membres est extrêment élevé. Moi qui pensais en savoir un minimum, je comprends vite qu'en fait, je suis pas mal à la rue. Donc, j'en profite pour glaner quelques conseils d'utilisation à vous les experts !

    Au taf, nous avons une grosse base Access de près de 2Go. les 3/4 des tables présentes sont en faites des liaisons vers des fichiers textes. Car en fait, notre ERP développé sous Hyperfile (cette grosse mer*** de Windev) n'est pas connectable avec Access. Donc tous les soirs, un export des différentes tables de notre ERP sont faîtes et sont ensuite liés à des tables sous une base Access.

    Le problème de la liaison avec des fichiers textes comme beaucoup doivent le savoir, est qu'il est impossible pour plusieurs personnes d'utiliser la même table. Ce qui s'avère être très contraignant, quand on est 4 ou 5 à vouloir travailler en même temps sous Access.

    Avez vous une solution pour supprimer cette contrainte ?

    Pour la petite info, j'ai déjà essayé de faire des tables fixes, à l'aide de requête de création de tables, mais le problème, c'est que :
    1- le traitement est beaucoup trop long car nous avons des fichiers textes de taille très importante.
    2- cela plante trop souvent, en générant bien souvent des champs sans aucune information.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Comment crée tu tes tables, est-ce que tu prends les données directement dans ton fichier texte qui est attaché ?

    Attention à ta base, 2 Go c'est la limite.

    Starec

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Starec
    Bonjour

    Comment crée tu tes tables, est-ce que tu prends les données directement dans ton fichier texte qui est attaché ?

    Attention à ta base, 2 Go c'est la limite.

    Starec
    Bonjour,

    Merci pour ta réponse. Oui, c'est ça ! Mes tables sont en fait attachées avec ces fichiers textes...

    Pour la taille de la base, je sais, je me suis déjà fais avoir. Donc régulièrement, je compacte et je fais le ménage mais bon, c'est pas très souple tout ça ! Je pense qu'un jour il va falloir qu'on investisse dans un vrai SGBD...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    C'est bien ce que je pensais, interresse toi à DoCmd.TransferText, ceci te trasferera directement ton fichier texte dans ta table. Regarde dans l'aide, et fais aussi des recherches sur le forum.

    Ce qui fait que tu n'auras plus de soucis en multi-utilisateur.
    A mon avis c'est la meilleure solution pour toi.

    Starec

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Modifier le batch du soir ainsi
    Phase 1 export des fichiers textes
    Phase 2 suppression des enregistrements dans les tables access
    Phase3 compactage des bases annexes
    Phase 4 import des nouvelles données dans les tables access
    Phase 5 défragmentation

    Les tables access seront réparties en plusieurs bases annexes(en fonction des volumes), et seront dûment indexées.
    La (ou les bases) principale ne contiendra que des tables liées situées dans les bases annexes.
    Une attention particulière sera accordée aux tables contenant les codifications permettant la lecture des tables qui seront logées dans la table principale
    Compte tenu des volumes si des requêtes habituelles font souvent appel à plusieurs tables volumineuses liées par jointure on constituera en fin d’étape 4 des tables à plat dans une base annexe
    Ces tables seront effacées en 2 et recrées en 4

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Vous êtes géniaux tous les 2 ! Merci Infiniment

    Je teste tout cela et je passe le topic en résolu dès que mes tests sont OK !

    Merci encore

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Bon, cela m'a l'air d'être plutôt pas mal même si désormais cela entraîne d'autres petites questions :

    1- L'import me génére des tables d'erreur. Comment faire pour les supprimer automatiquement ?
    2- Certains de mes fichiers sont bien trop gros, j'ai donc fais des requêtes pour sélectionner qu'une partie du fichier texte à importer. ces requêtes m'affichent 2 messages d'avertissements. Comme je souhaiterais automatiser ce traitement la nuit, comment puis je inhiber ces messages ?

    Merci encore et désolé pour l'avalanche de questions ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    Content que cela te plaise

    1 - Fait d'abord des imports manuels, pour détecter où cela ne va pas, puis dans le bouton avancé sauvegarde ton filtre d'import que tu mets en paramètre du transfert (voir )

    2 - Pour enlever les messages

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.SetWarnings False
    ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.SetWarnings False
    Starec

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    deux causes aux données en anomalie
    1 non respect de l'intégrité référentielle
    2 non respect des contraintes
    pour optimiser renoncer à tout modèle relationnel dans acces, et à toutes contraintes (nul date maxi etc)
    déportez dans un traitement de fin d'import la détection des anomalies
    (clef externe absente par exemple) et les logger
    d'une façon générale on ne rejettera que les données inexploitables ou ayant un format incorrect pour une base recrée chaque jour
    l'abandon du modèle relationnel permet si on est pointu sur les logs de détection une détection normalisée des erreurs contrairement aux tables d'erreur
    les requêtes d'import permettent souvent avec un iff bien senti de corriger les erreurs dès l'import

    pour les messages voir docmd.setwarnings

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut
    Pour lire tes données texte tu peux aussi utiliser les instructions

    open #
    line input #
    close #

    ce sont de 'vielles' commandes basic qui permettent de lire des fichiers ligne par ligne.

    Pour ce qui est du 'vrai' SGBD, je suis tombé par hazard sur la série Express Edition de M$ qui offre une version réduite MAIS gratuite de MS-SQL. Je suis en train d'approfondir le sujet mais les spec semble le placer une coche au dessus de Access. Et toujours d'aprés les spec il serait possible d'upgrader vers MS-SQL sans trop de modif.

    A+

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    pour la taille des fichiers
    être vigilant aux champs textes
    par exemple importer le seul code produit et pas son libellè
    dans les tables limiter la taille des champs
    rechercher les données les plus coûteuses et essayer de les remplacer par un code
    ceci nécessite parfois des tables de codif à maintenir dans access

    on peut fractionner les données en deux ou trois tables

    attention la vraie limite n'est pas les 2 Mo d'access mais le 1 Mo des sets de données

    autre technique ne pas importer certaines données détail mais leur agrégations (somme, moyenne,moyenne pondérée etc)

  12. #12
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Perso, je passerais d'abord par des tables de travail qui te permettront de traiter tout ce qui est formattage de champs, anomalies, mise à jour du référentiel.
    Ces tables sont indépendantes.
    Sur ces tables, des select te permettent de vérifier si tu respecte bien toutes tes contraintes et éventuellement de rejeter les lignes KO et lever (ou non) des alertes.
    Ensuite, avec des Insert et Update de masse, tu mets à jour des tables finales qui possèdent des index unique, clés primaires, clés étrangères.

Discussions similaires

  1. [AC-2010] liaison avec des fichiers paradox
    Par veckerle dans le forum Access
    Réponses: 1
    Dernier message: 25/05/2014, 10h08
  2. fusion et liaison dynamique des fichiers texte
    Par LOBO1986 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 23/02/2011, 14h06
  3. Réponses: 2
    Dernier message: 20/04/2010, 21h33
  4. liaison avec des fichiers
    Par nana 69 dans le forum VBA Access
    Réponses: 5
    Dernier message: 31/07/2008, 15h15
  5. Prbleme de liaison avec des doublons dans le fichier lié.
    Par krak70 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/10/2005, 11h03

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