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 :

Afficher la date de MAJ des tables dans une autre table


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut Afficher la date de MAJ des tables dans une autre table
    Bonjour,

    Je bloque au niveau d'un gros problème. Je m'explique :

    J'ai créé une table (t1) dans laquelle j'ai 2 champs : le premier champ contient les noms de deux autres tables (TEMP2 et TEMP3 : ce sont des tables temporaires) et le deuxième champ contient la date de mise à jour des données dans ces tables.

    Les tables TEMP2 et TEMP3 servent à alimenter 2 autres tables (t2 et t3) dans lesquelles figurent que quelques champs des tables TEMP2 et TEMP3.
    En effet, les tables temporaires sont alimentées automatiquement par 2 fichiers Excels (un fichier pour chaque table). Dans les fichiers excels, il peut y avoir des modifications de données de temps en temps. Quand il y a des modifications dans les fichiers Excels, il y a aussi une mise à jour automatique dans les tables TEMP2 et TEMP3 (par conséquence, dans les tables t2 et t3 aussi) à chaque ouverture de la base de données access (via une macro autoexec). Pour les mises à jour dans les tables t2 et t3, j'ai utilisé des requêtes de mises à jour que je vais appeler req_maj_2 pour t2 et req_maj_3 pour la table t3.

    J'aimerai ajouter sur le deuxième champ de la table t1, la date de mise à jour pour chaque table. S'il y a déjà une date marqué pour une table, la remplacer par la date du jour.

    Si quelqu'un a une idée...

  2. #2
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    Je ne vois pas ou est le problème ??
    Au moment de ton traitement tu stocke la date dans ta table T1 avec une requête Update.
    Tu peux peut-être tester au préalable tes requêtes de mise à jour afin de savoir si tu vas faire des modifications ou pas
    Si ta requête de mise à jour, renvoie une ou plusieurs lignes (donc mise à jour) alors tu stocke la date, si non cela veux dire que tu n'as pas de changement et dans ce cas pas de modification de la date

    Si tu utilise une requête "Update", elle ne renverra pas de ligne, alors utilise une autre requête sélection similaire avec les mêmes critères et regarde combien de ligne elle te renvoie
    @+


    Pensez au tag

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    Bonjour Didier L,
    Merci de votre réponse.

    Dans ce cas, comment je fais pour comparer les données de la table d'un jour à autre (hier avec aujourd'hui par exemple), pour voir s'il y a eu un changement (ajout , suppression ou modification de lignes) ?

  4. #4
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    la c'est un autre problème plus complexe

    Ajout et suppression c'est facile si tu a un identifiant pour ta ligne.
    Un identifiant, c'est une information qui est unique et qui t'assure de parler de la bonne ligne.
    As tu ce genre d'information ?
    Dans le cas contraire, ce sera impossible.
    Apres pour la modification, il va falloir comparer tous les champs, un a un !
    Tu en as beaucoup ?
    @+


    Pensez au tag

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    Je n'ai pas mis de clé primaire car j'ai des doublons qui me servent à alimenter d'autres tables, donc je ne peux pas les supprimer.
    En ce qui concerne les champs, j'en ai 50 dans une table et une dizaine dans l'autre

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    Personne a une idée comment je peux comparer une table avec son état d'hier pour voir s'il y a eu une modification ? (Sachant que la table n'a pas de clé primaire)

  7. #7
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Sans parler d'Access ou de n'importe quel autre bases de données, tu es confronté à un problème de logique.
    C'est à toi de définir les règles.
    Comment savoir s'il y a eu un changement ? Toi seul peux et doit définir la règle.
    Ensuite, nous nous pouvons t'aider à la mettre en oeuvre.
    Mais même si tu as une sauvegarde de la table de la veille, comment faire la différence entre, la modification d'une ligne ou la suppression d'une ligne et l'ajout d'une nouvelle ?
    Est-ce une modification ?
    Est-ce une création ?
    Est-ce une suppression ?
    Si tu as une clé, tu peux voir si c'est toujours la même et dans ce cas comparer tous tes champs un a un pour voir s'il y a une modification (mise à jour), tu peux voir si une clé n'est plus présente (suppression) ou a l'inverse si une nouvelle clé est apparue (création).
    Mais sans clé, Mission impossible pour moi
    @+


    Pensez au tag

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    Oui, je sais bien. Mais ce sont les contraintes qui me sont imposées. Je ne peux pas ajouter de clé .
    En revanche, apparemment, il y a deux champs qui peuvent représenter une clé primaire, c'est à dire que si je prends les valeurs de ces deux champs, je ne tomberai pas sur des doublons.. Fin, je sais pas si je suis assez clair. Si on prend l'ensemble des valeurs de ces champs, on ne tombera jamais sur les mêmes choses.
    Ce sont un champ texte et un champ date. Est-ce que ça peut aider ?

  9. #9
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Oui, une clé peut aussi être une clé "composée"
    Si on est sur que nous n'aurons jamais deux lignes avec la m^me information dans ces deux champs, ce peut-être notre clé.
    Ensuite il faut être sur que ces informations ne peuvent pas être modifiées.
    Car d'un jour sur l'autre sur la même ligne, si l'une des deux information est modifiée, alors on ne pourra plus faire le lien avec la ligne de la veille et ce se sera considéré, comme la disparition d'une clé (suppression) et l'apparition d'une nouvelle (création).
    Dans notre cas, la clé ne doit pas être modifiable sinon ce ne peux pas être la clé qui nous garantisse que nous parlons bien de la même ligne d'un jour sur l'autre
    @+


    Pensez au tag

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    Oui, je confirme. Les informations de ces deux champs sont toujours différentes et ne peuvent pas être modifiées

  11. #11
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Dans ce cas,

    Les tables TEMP2 et TEMP3 servent à alimenter 2 autres tables (t2 et t3) dans lesquelles figurent que quelques champs des tables TEMP2 et TEMP3.
    En effet, les tables temporaires sont alimentées automatiquement par 2 fichiers Excels (un fichier pour chaque table). Dans les fichiers excels, il peut y avoir des modifications de données de temps en temps. Quand il y a des modifications dans les fichiers Excels, il y a aussi une mise à jour automatique dans les tables TEMP2 et TEMP3 (par conséquence, dans les tables t2 et t3 aussi) à chaque ouverture de la base de données access (via une macro autoexec). Pour les mises à jour dans les tables t2 et t3, j'ai utilisé des requêtes de mises à jour que je vais appeler req_maj_2 pour t2 et req_maj_3 pour la table t3.
    Avant de lancer tes requêtes de mise à jour depuis tes tables temporaires Temp2 et Temp3 vers t2 et t3 (si j'ai bien compris) tu peux tester s'il y a eu des modification ou pas.

    Prenons le cas de temp2 par exemple,
    tu crée 3 requêtes basé sur tes deux tables t2 et Temp2.
    La première sera du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Select count(*) from t2 where [MonChamp] & Format(MaDate,"dd/mm/yyyy hh:nn:ss") not in (select [MonChamp] & Format(MaDate,"dd/mm/yyyy hh:nn:ss") from temps2)
    Tu aura ainsi le nombre de clé dans T2 qui n'apparaissent plus dans temps2 et donc qui ont été supprimées.

    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Select count(*) from temp2 where [MonChamp] & Format(MaDate,"dd/mm/yyyy hh:nn:ss") not in (select [MonChamp] & Format(MaDate,"dd/mm/yyyy hh:nn:ss") from t2)
    C'est l'inverse et tu aura ainsi le nombre de clé dans Temps2 qui n'apparaissent pas dans t2 et donc qui sont a ajouter.

    Et enfin la dernière la plus complexe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select count(t2.*) from t2,temp2 Where (t2.[MonChamp] & Format(t2.MaDate,"dd/mm/yyyy hh:nn:ss") = temps2.[MonChamp] & Format(temps2.MaDate,"dd/mm/yyyy hh:nn:ss")) AND (t2.Champ1<>temps2.champ1 OR t2.Champ2<>temps2.champ2 OR t2.Champ3<>temps2.champ3)
    Ou tu dois faire l'égalité sur la clé et regarder si l'un des champs a été modifié.

    Ainsi si l'une des requêtes te renvoie un résultat différent de 0 alors cela implique qu'il y a eu une modification du fichier Excel
    Bon courage
    @+


    Pensez au tag

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    Bonjour Didier L,

    Merci pour ton aide.
    Les deux premières requêtes marchent à part la troisième où il y a une erreur au niveau de count(t2.*).

    J'ai remarqué aussi que les requêtes mettaient beaucoup de temps à s'exécuter, mais bon, si c'est la seule solution, on fera avec.

  13. #13
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    essaye alors uniquement count(*) ?
    @+


    Pensez au tag

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/04/2015, 10h03
  2. Réponses: 6
    Dernier message: 06/06/2014, 21h21
  3. transférer des données d'une table dans une autre table
    Par alexkickstand dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 12/09/2007, 18h01
  4. Inserer une date d'une table dans une autre table
    Par petitetre dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/04/2007, 20h16
  5. Réponses: 4
    Dernier message: 15/03/2007, 20h32

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