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

Accès aux données Discussion :

Table de données Access sous forme de "buffer tournant"


Sujet :

Accès aux données

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut Table de données Access sous forme de "buffer tournant"
    Bonjour,


    je souhaiterai implémenter un module de log basé sur Log4Net, les logs seraient dirigés vers une base de données Access.

    Le développement autour des bases de données est encore bien flou pour moi...

    J'aurai voulu savoir s'il était possible d'avoir une table de données, avec un nb max d'entrées, afin de ne conserver que les NbMax derniers logs
    comment implémenter ça?

    Merci pour vos éclairages

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    En mono-utilisateur, une solution parmi d'autres:

    • définir une table avec une clé primaire de type entier et un champ entier pour stocker le N° d'enregistrement permettant de définir un ordre chronologique,
    • après avoir créé la table, initialiser la table Nb_max enregistrements avec une clé de 1 à nb_max et un n° d'enregistrement égal à la clé,
    • lors de chaque lancement de l'appli, récupérer le dernier N° de séquence utilisé(LastSeq)et la clé correspondante (LastKey),
    • lors de l'enregistrement d'un log, on fait LastSeq=LastSeq+1 et LastKey=(LastKey+1) modulo nb_max, puis on met à jour l'enregistrement de la table correspondant à LastKey.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Merci Graffito pour ton aide


    Une précision cependant : N° de séquence et N° d'enregistrement, c'est la même chose dans ton explication??

    Par contre, ce qui m'ennuie, c'est qu'avec un n° d'enregistrement, au bout d'un moment, je vais arriver "au bout"
    faudra que je remette à zéro le n° d'enregistrement à un moment donné...
    enfin, ça doit pouvoir se gérer, tout en gardant la chronologie...

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    N° de séquence et N° d'enregistrement, c'est la même chose dans ton explication??
    Oui.
    Par contre, ce qui m'ennuie, c'est qu'avec un n° d'enregistrement, au bout d'un moment, je vais arriver "au bout"
    faudra que je remette à zéro le n° d'enregistrement à un moment donné...
    C'est exact.
    Si LastSeq dépasse une valeur N, il faut une procédure qui remet les N° de séquences de 1 à nb_max en soustrayant à chaque N° de sequence N-Nb_Max.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Si LastSeq dépasse une valeur N, il faut une procédure qui remet les N° de séquences de 1 à nb_max en soustrayant à chaque N° de sequence N-Nb_Max.
    comme je le disais, j'y connais rien en manipulations sur les bases de données...
    Est-ce qu'il est possible de faire ce genre de procédure pour l'ensemble des éléments d'une table ou faut-il le faire élément par élément...

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Est-ce qu'il est possible de faire ce genre de procédure pour l'ensemble des éléments d'une table ou faut-il le faire élément par élément...
    Une commande SQL devrait suffire.

    En supposant que N-Nb_Max = 5678, cette commande serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE Table1 SET NumeroSeq = NumeroSeq - 5678
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Ok, merci pour tout!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/09/2015, 21h23
  2. Réponses: 3
    Dernier message: 07/10/2013, 15h02
  3. Access sous forme de page
    Par guimauve dans le forum Access
    Réponses: 4
    Dernier message: 30/06/2006, 17h00
  4. access sous forme d'interface
    Par guimauve dans le forum Access
    Réponses: 4
    Dernier message: 30/06/2006, 11h32

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