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 :

import et mise à jour dans table


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut import et mise à jour dans table
    ,
    Quotidiennement, je dois importer un fichier texte délimité. Ce fichier est généré par horodatage, de type Nom_fichier_AAAAMMJJHH24MISS.txt. Ce fichier contient des enregistrements des clients avec un identifiant vente. Tous les jours, il y'a des nouveaux clients et des clients sortants. Je dois dans Access, créer une importation automatique avec une spécification d'import qui doit mettre à jour une table avec des nouveaux entrants et une table avec des nouveaux sortants ; sachant qu'on peut retrouver les mêmes clients dans chaque fichier importé (doublon avec le champ identifiant vente). Donc, il faut prévoir également, une table des clients persistants.
    Tout cela doit être bien sûr automatisable.

    Donc à vos claviers

    P.S. : chaque fichier texte représente environ 2 800 ko

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Belle définition de besoin, on dirait presque un cahier des charges.

    Y a plus qu'a mettre en pratique.

    Cordialement et Bonnes Fêtes
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut import fichier délimité
    Chaque jour, un fichier Txt délimité est généré par horodatage :
    Sub import()
    DoCmd.TransferText acImportDelim, "Spécification d'importation", "Table_nv_Clt", "(chemin) <nom_fichier_AAAAMMJJHH24MISS>.txt", True
    End Sub.
    Je dois automatiser cette procédure sachant que le fichier Txt est généré avec une date d'extraction.

    Pour ressortir les nouveaux clients, je me suis appuyé sur 2 tables (table du 04/12/2006 et celui du 05/12/2006) ; avec un critère "identifiant vente du 04/12/2006 est null" pour les nouveaux clients et "identifiant vente du 05/12/2006 est null" pour les nouveaux sortants. Ces résultats des requêtes me permettront de mettre à jour par le biais d'une requête d'ajout de table : table des nouveaux clients, table des sortant.
    L'idéal serait d'avoir :
    • table des entrants (nvx clients)
    • table des sortants
    • table des persistants


    Sachant qu'un client peut être présent pendant plusieurs jours, d'où les doublons sur l'identifiant vente si le fichier Txt serait importé dans la même table.

    Le problème, c'est qu'on aurait un nombre impressionnant de tables générées si j'importais chaque fichier Txt dans une nouvelle table.

    J'avais pensé à un champ NumAuto comme clé primaire, et établir un filtre par date d'extraction. Mais, il me faut distinguer des nouveaux entrants, des nouveaux clients sortants et des clients toujours présent ou persistant. Je rappelle que c'est l'identifiant vente qu'on retrouve en doublon dans chaque fichier Txt importé.

    Si vous avez une petite idée ou qq chose en sql ou vb pour remedier au pb.


  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut
    sinon il y'a aussi l'auto-jointure sur la table elle-même pour extraire des données similaire comme l'identifiant vente qu'on retrouve à chaque fois qu'on importe un fichier texte !!!
    Si vous avez des infos là-dessus, ça me permettrait d'avancer parceque là suis bloqué !!! je peux pas avancer

  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    Ce n'est pas clair, on n'arrive pas à savoir :
    • ce que tu sais déjà faire
    • ce que tu ne sais pas faire
    • ce que tu cherches à faire

    Décompose :
    • parcours d'un répertoire sur les fichiers non traités
    • import de fichier dans une table temporaire
    • retraitement anti doublons (si j'ai bien compris)
    • insertion des enregistrements retraités dans la table permanente
    • destructution / archivage du fichier source (pour éviter de le traiter deux fois)


    Pour chaque tâche (ou celles que tu auras identifiées), commence par rechercher sur le site, l'aide, la Faq etc.
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut
    Mes acquis :
    • création de table
    • définition clé primaire
    • définition d'index
    • création de requêtes selections
    • création de requêtes ajout, suppression
    • création de formulaire à partir d'une table, d'une requête
    • création des états à partir de requêtes
    • création d'une macro action sur les formulaires

    Mon objectif :
    • importer fichier Txt de même format => ok
    • paramétrer spécification d'import => ok
    • créer une table ajout de nouveaux clients avec requêtes => moyen
    • créer une table ajout de clients sortants avec requêtes => moyen
    • créer une table ajout de clients persistants avec requêtes => moyen
    • créer et stocker une table temporaire => difficulté
    • vider une table pour ajouter des nouveaux clients => difficulté


    Vue comme ça, c'est pas irréalisable mais je sais pas par où commencer.
    J'ai déjà importé des fichiers Txt mais vu que c'est des fichiers générés par horodatage. Jusqu'à maintenant, jai importé chaque fichier dans une nouvelle table alors que je le veux dans une seule table (table des nvx clt, table des clt sortants, table des clt persistants) ; mais vu qu'il y'a risque de doublons avec identifiant vente du client présent dans plusieurs fichiers Txt.

    J'espère que je me suis fais bien comprendre !

    Cdt.

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    créer une table ajout de nouveaux clients avec requêtes => moyen

    C'est simple : il s'agit d'une requete selection qui est transformé en requete Ajout. via le menu du qbe cela prend quelques secondes tout au plus.

    créer une table ajout de clients sortants avec requêtes => moyen

    idem

    créer une table ajout de clients persistants avec requêtes => moyen

    heu... idem

    créer et stocker une table temporaire => difficulté

    Qu'est-ce qu'une table temporaire ? une table où l'information et/ou la structure est volatile. Cette réponse devrait certainement t'éclairer. Juste un jeu de suppression à mettre en place.

    vider une table pour ajouter des nouveaux clients => difficulté

    Comme une volatile, suppression, ajout, suppression, ajout.... etc
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut
    Je dois m'appuyer sur deux tables pour mettre à jour :
    • Table nouveau clt
    • table client sortant
    • table client persistant

    Concrètement, une table volatile, ça correspond à quoi un mirroir de la table source ?

    Cdt.

  9. #9
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Pour gérer ta table temporaire : tblTemp en pseudo-code pour te donner la trame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ' import de ton fichier texte
    Docmd.TransferText ...... "tblTemp" ....
     
    ' insertion des enregistrements retraités des doublons
    ' - 1 requête (qryUniques) qui ne garde que les nouveaux clients (non correspondance)
    ' - 1 requête ajout (qryInsert) qui insère dans ta table clients les données de qryUniques
    DoCmd.RunSQL Currentdb.QueryDefs("qryInsert").SQL
     
    ' effacement de ta table temporaire
    Docmd.RunSQL "DELETE FROM tblTemp"
     
    ' flag sur le fichier 
    FileCopy StrPath & StrFile, StrPath & StrFile & ".fait"
    Kill StrPath & StrFile
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Je dois m'appuyer sur deux tables pour mettre à jour :
    1 Table nouveau clt
    2 table client sortant
    3 table client persistant
    2 tables mais 3 listées.
    Client persistant (on ne traite pas ?)
    Client sortant (on les supprime grace à une requete de correspondance)
    Client nouveau (on les ajoute)

    La requete de correspondance est disponible dans l'assitant de requete.

    Concrètement, une table volatile, ça correspond à quoi un mirroir de la table source ?

    Il n'y a pas d'objet volatile sous MSACCESS. C'est le concepteur qui doit gérer cette fonctionnalité. Dont voici le déroulement.

    • Créer une structure de table (copie de structure, requete CREATE TABLE...)
    • Remplir via une requete par exemple.
    • Supprimer les données via un requete suppression ou éventuellement en supprimer l'objet table.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Dans le fonctionnement avec un table temporaire qui suppose vidage/remplissage fréquents pense à compacter automatiquement ta base :

    http://access.developpez.com/faq/?page=General#Compact
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  12. #12
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut
    Le transferText dans le code concerne un seul fichier Txt à importer, alors que moi j'ai besoin d'importer chaque jour un fichier Txt. Dans ce fichier Txt, on retrouve des nvx clt, des clt tjrs là et des clt qui n'y sont plus.

  13. #13
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Ok, mais tu ne précises si tu lances le traitement une fois par jour ou par bloc => Doit-on deviner ?
    Pour ton nom de fichier essaie de voir ce que Format() peut faire pour toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Format(now, "yyyymmddhh") & "24.txt"
    Citation Envoyé par bouba_95
    Le transferText dans le code concerne un seul fichier Txt à importer, alors que moi j'ai besoin d'importer chaque jour un fichier Txt.
    On s'en fiche, puisqu'on importe dans une table temporaire vide ... à toi de faire les requêtes qui écartent les clients déjà existants (on ne va pas tout te macher non plus).
    Citation Envoyé par bouba_95
    Dans ce fichier Txt, on retrouve des nvx clt, des clt tjrs là et des clt qui n'y sont plus.
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  14. #14
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut
    Je pense que ce sera un import fichier par fichier ou un bloc de fichier

  15. #15
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut
    Le transferText dans le code concerne un seul fichier Txt à importer, alors que moi j'ai besoin d'importer chaque jour un fichier Txt. Dans ce fichier Txt, on retrouve des nvx clt, des clt tjrs là et des clt qui n'y sont plus.

    Je crée une requête de non correspondance, ensuite j'alimente le résult de la requête avec une requête ajout de table (table des clients sortant). Mais je rencontre le pb suivant au moment d'ajout d'enreg ds la table des clt sortant : Ms a rencontré le pb suivant lors de la conversiond de type, violation de clé. Il me faut crée une requête suppression, je pense à partir de la table des clients sortant (c'est bien ça !) où (comme critère le champ en doublon est = ?)

    Je m'embrouille !

  16. #16
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Citation Envoyé par bouba_95
    Je m'embrouille !
    Ben t'es pas le seul à m'embrouiller

    Bon je vais me faire embrouiller ailleurs...

    Tcho'
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  17. #17
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par loufab
    créer une table ajout de nouveaux clients avec requêtes => moyen

    C'est simple : il s'agit d'une requete selection qui est transformé en requete Ajout. via le menu du qbe cela prend quelques secondes tout au plus.

    créer une table ajout de clients sortants avec requêtes => moyen

    idem

    créer une table ajout de clients persistants avec requêtes => moyen

    heu... idem

    créer et stocker une table temporaire => difficulté

    Qu'est-ce qu'une table temporaire ? une table où l'information et/ou la structure est volatile. Cette réponse devrait certainement t'éclairer. Juste un jeu de suppression à mettre en place.

    vider une table pour ajouter des nouveaux clients => difficulté

    Comme une volatile, suppression, ajout, suppression, ajout.... etc
    le fait d'ajouter et supprimer à chaque nouveau fichier Txt importé, n'y a t'il pas moyen justement d'automatiser cela par du SQL ou du VB ???

  18. #18
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Si, est-ce que tu as résolu le reste ?

    Citation Envoyé par bouba_95
    le fait d'ajouter et supprimer à chaque nouveau fichier Txt importé, n'y a t'il pas moyen justement d'automatiser cela par du SQL ou du VB ???
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  19. #19
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut
    Bonjour,
    ok ça me va pour le code DoCmd.TransfertText, mais maintenant il me faut une boîte de dial pour spécifier le chemin du fichier Txt à importer vu que les fichiers Txt sont générés chaque jour.

    Je vous remercie vivement d'avance.

  20. #20
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par cafeine
    Si, est-ce que tu as résolu le reste ?
    Oui j'ai fais :
    • une requête de création de table
    • une requête d'ajout de table (nvx clients)
    • une requête de non correspondance + requête ajout de table (clients sortants)

    à faire :
    • une requête de suppression pour vider la table ajout nvx clients et importer le nv fichier txt

    ça semble fonctionner
    mais il me manque un form (msgbox) où je dois spécifier le chemin d'accès (pour récupérer le fichier Txt à importer).

Discussions similaires

  1. Mise à jour dans tables multiples
    Par yannick069 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 21/10/2013, 16h20
  2. Réponses: 2
    Dernier message: 14/05/2007, 10h45
  3. Mise à jour dans une table
    Par manucha dans le forum Oracle
    Réponses: 4
    Dernier message: 01/03/2007, 11h11
  4. Import et mise à jour dans table
    Par bouba_95 dans le forum Access
    Réponses: 11
    Dernier message: 08/01/2007, 16h34
  5. [Requête] mise a jour dans table
    Par Pingouin22 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/12/2006, 08h17

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