Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Membre actif
    Inscrit en
    juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : juin 2005
    Messages : 499
    Points : 169
    Points
    169

    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 Confirmé Sénior Avatar de Graffito
    Inscrit en
    janvier 2006
    Messages
    5 806
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 5 806
    Points : 6 696
    Points
    6 696

    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
    Inscrit en
    juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : juin 2005
    Messages : 499
    Points : 169
    Points
    169

    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 Confirmé Sénior Avatar de Graffito
    Inscrit en
    janvier 2006
    Messages
    5 806
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 5 806
    Points : 6 696
    Points
    6 696

    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
    Inscrit en
    juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : juin 2005
    Messages : 499
    Points : 169
    Points
    169

    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 Confirmé Sénior Avatar de Graffito
    Inscrit en
    janvier 2006
    Messages
    5 806
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 5 806
    Points : 6 696
    Points
    6 696

    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 :
    1
    2
     
    UPDATE Table1 SET NumeroSeq = NumeroSeq - 5678
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Membre actif
    Inscrit en
    juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : juin 2005
    Messages : 499
    Points : 169
    Points
    169

    Par défaut

    Ok, merci pour tout!

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •