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
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Par défaut Import et mise à jour dans table
    Bjr
    J'importe quotidiennement des fichiers texte que je mets à jour dans Access. J'ai crée des tables :
    • table des nouveaux clients
    • table des clients sortants

    j'ai crée 1 requête de non-correspondance (avec id_vente) que j'ajoute ds la table des nouv clients, 1 requête de non correspondance (avec id_vente) que j'ajoute ds la table des clients sortants. Mais les problème provient qd j'ajoute les fichiers importés, il y'a risque de doublons. il peut y'avoir le cas où un client est sortis et ensuite il est re-rentré.
    Dans la requête de non correspondance, j'ai fais la jointure entre 2 fichiers Txt importés. Faut il ajouter la table des nouveaux clients pour à chaque mise à jour, ne pas ajouter des clients déjà entrés ou sortis ???
    Merci pour votre collaboration .

  2. #2
    Membre confirmé Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Par défaut
    Si j'ai bien saisi...

    Ne serait il pas plus simple de tout centraliser par Access ?

    Tu importes ton fichier client avec 1 champ date_entree (= date de ton import) et 1 champ date_sortie (=date de ton import la aussi )

    Si date_sortie existe alors ton client est sortant mais tu gardes l'historique de tes clients.

    Pour cela tu dois également tester l'existence de ton client dans la base lors de ta procédure d'import (pour éviter d'écraser l'historique).

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Par défaut
    il faut conserver l'histo. les tables imports seront volatiles (table import J, table import J-1). Les tables de destination table des nouv clients et tables des client sortants seront mises à jour avec les requêtes de non correspondances, etc... mais le pb vient au niveau de l'ajout d'un id_vente déjà présent dans les tables de destinat°. J'ai crée une table que j'ai nommé anomalies où j'ajoute les enreg en doubl ensuite je les supprime avec la requête de suppression mais ça m'a l'air un peu fastidieux

  4. #4
    Membre confirmé Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Par défaut
    Tu peux faire ca mais oui c'est fastidieux
    Est il vraiment necessaire que tes tables soient volatiles ? (par définition une table n'est pas volatile, une requète l'est)
    De toute facon si tu veut conserver l'historique tu es obligé de figer les données (donc tables non volatiles).

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Par défaut
    oui les tables imports sont volatiles, par suppr, import nouv données. Les requêtes pour ajout ds table. Sachant que chaque fichier Txt représente envir 2800 ko (40000 lignes). Je précise aussi que dans chaque fichier Txt importé, on peut retrouvé le même clt, donc le même id_vente tant qu'il est n'est pas sorti.

  6. #6
    Membre confirmé Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Par défaut
    Alors le mieux est de faire une procédure d'import qui va filtrer tes doublons (au lieu de ta requète ajout)

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Par défaut
    j'ai ce code à dispo pour l'import d'un seul fichier Txt

    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
    Sub import()
        ' import de ton fichier texte
    DoCmd.TransferText acImportDelim, "nom_spécification_d'import", "importation", _
            "chemin\fichier *.txt", True
     
    ' 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
     
    End Sub

  8. #8
    Membre confirmé Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Par défaut
    Avec ton code tu importes l'ensemble du fichier dans tes tables.
    Il faudrait que tu passes par 2 recordsets et tester l'existence de doublons avec ca.

    Ca sera du style

    Pour chaque rst.value (rst2 positioné ligne suivante rst1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    existe = false
    ma_valeur_1 = rst1.Fields("id_vente")
    ma_valeur_2 = rst2.Fields("id_vente")
     
    while rst2.EOF
      if (ma_valeur_1 = ma_valeur_2) then
        existe = true
      end if
      rst2.Movenext
    wend

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Par défaut
    Citation Envoyé par Jordmund
    Avec ton code tu importes l'ensemble du fichier dans tes tables.
    Il faudrait que tu passes par 2 recordsets et tester l'existence de doublons avec ca.

    Ca sera du style

    Pour chaque rst.value (rst2 positioné ligne suivante rst1)

    existe = false
    ma_valeur_1 = rst1.Fields("id_vente)
    ma_valeur_2 = rst2.Fields("id_vente")

    while rst2.EOF
    if (ma_valeur_1 = ma_valeur_2) then
    existe = true
    end if
    rst2.Movenext
    wend
    Il n'y a pas de doublon dans le fichier importé, l'id_vente est unique dans le fichier.

  10. #10
    Membre confirmé Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Par défaut
    Alors tu remplaces id_vente par id_client

  11. #11
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 88
    Par défaut
    l'id_vente est unique dans le fichier Txt importé donc j'ai défini comme clé primaire l'id_vente. Avec les données de la table import J et les données de la table import J-1, j'ai fais des requêtes de non-correspondance pour ressortir les nouv clients (id_vente est null dans la table import J) et inversement pour les clients sortants. Donc le pb se situe au moment où l'on ajoute des nouveaux enreg il y'a risque de doublons car un client est déjà entré ou déjà sorti

  12. #12
    Membre confirmé Avatar de Jordmund
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 181
    Par défaut
    Donc tu peux t'inspirer de l'exemple de code que j'ai donné.

    Tu dois exécuter ce code lors de l'import comme ca tu vas supprimer les doublons éventuels à l'import, pas de pb de doublons avec tes clés primaires dans les tables...

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: 19
    Dernier message: 28/12/2006, 10h01
  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