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 :

Création d'une table archive


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 69
    Points : 11
    Points
    11
    Par défaut Création d'une table archive
    Bonjour,

    Actuellement en train de créer une base de données access avec des formulaires j'aurai aimer de l'aide.
    Je travaille sur une base d'entreprise en création. Lorsuq'elle sont radiées, je souhaiterai les effacer mais lors de cet effacement je voudrais que les données soit stockée dans une table d'archive afin de pouvoir par la suite réaliser des statistiques sur ces mêmes entreprises...
    Quelqu'un pourrait il me donner un petit coup de main?

    Merci d'avance à tout ceux qui m'apporteront de l'aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    La méthode la plus simple est d'ajouter un champ boolean 'Radie' que tu met à Oui losrque tu radie tes entreprises.

    Pour tes saisies normales, tu crée des requètes qui n'affiche que les entreprises qui ne sont pas radiées.

    Sinon il faut faire pas mal de code pour faire cela :

    1) crée une table archive
    2) intersepter l'evénement sur suppressions
    3) enregistrer l'enr actuel dans la table d'archive
    4) Détruire l'enr.

    Comme tu débute je te conseil 1er solution mais si tu veux des détails pour la seconde, n'hésite pas.

    A+



    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 69
    Points : 11
    Points
    11
    Par défaut
    [QUOTE=marot_r]

    Sinon il faut faire pas mal de code pour faire cela :

    1) crée une table archive
    2) intersepter l'evénement sur suppressions
    3) enregistrer l'enr actuel dans la table d'archive
    4) Détruire l'enr.

    Comme tu débute je te conseil 1er solution mais si tu veux des détails pour la seconde, n'hésite pas.
    [QUOTE]

    Pourrais tu m'expliquer la deuxième méthode stp?

    Merci d'avance

  4. #4
    Membre habitué Avatar de kirgan
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Points : 136
    Points
    136
    Par défaut
    je ne voudrais pas avoir l'air de m'immiscer dans une conversation (quoique c'est le propre d'un forum), mais la première solution, qui a l'air toute simple, est à mon avis la plus claire, la plus gérable au niveau maintenance, etc, etc, etc. Et accessoirement, je pense la plus utilisée. Une solution simple n'est pas toujours mauvaise ^^ (souvent pas mauvaise d'ailleurs...)

    Pour la 2e méthode, voici en gros comment procéder:

    - tu crées une table +/- identique à ta table entreprise (avec les champs que tu veux conserver);
    - à chaque suppression de la table "entreprise", tu dois intercepter l'évènement (va jeter un coup d'oeil du côté de BeforeDelConfirm et AfterDelConfirm)
    - après les tests d'usage, les demandes de confirmation de suppression, etc etc etc, tu insères un nouvel enregistrement dans ta table "archive", qui contient les infos de l'entreprise que tu supprimes;
    - et finalement tu supprimes de ta table entreprise, l'entreprise dont tu ne veux plus.

    Mais entre ca, et "mettre à vrai le bool radié", pour moi, y'a pas photo...
    K.
    If you think things can't get worse it's probably only because you lack sufficient imagination.

    Pensez au tag si votre problème est réglé!
    Bas de la page > Résolu

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Citation Envoyé par Raphaëlle
    Pourrais tu m'expliquer la deuxième méthode stp?

    Merci d'avance
    De quel degré d'epxlictaion as-tu besoin ?

    Jusqu'au code détaillé ou les indications de kirgan te suffisent-elle ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 69
    Points : 11
    Points
    11
    Par défaut
    Les indications que vous m'avez donné me sont utiles mais ça fait 2 ans que je n'ai pas coder alors le code me serai utile si cela vous est possible.

    Merci d'avance

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Ok, aujourd'hui j'ai pas vraiment le temps mais j'y travaillerai demain soir (heure de Montreal, Canada).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Je comptais travailler au bureau mais ma connexion internet est encore coupée. Là je suis à la maison mais je n'ai pas Access.

    Je vais essayer de te guider au max mais il va falloir que tu vérifie le code que je te donne.

    Je suppose que tu as créé une table Archive identique à celle que tu utilise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private sub From_BeforeDelete(Cancel as integer)
      dim mess as string
      mess="Voulez-vous vraiment supprimer l'enregistrement courrant ?"
     
      if vbYes=msgbox(Mess,vbYesNo+vbDefaultButton2+vbQuestion) then
          call ArchiverRecord()
        else
          cancel=Cint(True)
      end if
     
    End sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private sub ArchiverRecord()
       dim db as database:set db=currentdb
       dim rArchive as recordset:set rArchive=db.OpenRecorset("Archive")
       dim f as field
       rArchive.AddNew
       for each f in me.recordset.fields()
          rArchive.fields(f.name)=f
       next f
       rArchive.update
       rArchive.close:set rArchive=Nothing
       db.close:set db=nothing
    end sub
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 74
    Points
    74
    Par défaut
    Bonjour,
    Je suis moi aussi chargé de faire une methode d'archivage
    Je me suis aidée du code ci-dessus, par contre j'ai un probleme de comprehension avec la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rArchive.Fields(f.Name) = f
    Je comprend pas se que je dois mettre a la place de name ???

    petite correction il y a quelques faute de frappe sur le code:
    là il manque le "s":
    et ici il manque un "d":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim rArchive As Recordset: Set rArchive = db.OpenRecordset("Archive")
    Voila et quand meme merci pour le code il m'a beaucoup aidé

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 69
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    J'ai le même probleme de comprehension que MCarole avec la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rArchive.Fields(f.Name) = f
    J'ai un autre problème avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each f In Me.Recordset.Fields()
    A quoi correspond le Me? Car j'ai beau lire et relire le code je ne vois pas ce que cela signifie.

    Merci pour le code marot_r

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Ok, alors il n'y a pas de faute de frappe dans

    Je défini f comme un objet de type Field (champ).

    Les tables, les requètes et les recordsets possèdent une collection d'objets field nommé .Fields qui donne la liste de leurs champs.

    L'usage de collection permet d'écrire du code générique qui marche quelque soit la structure de l'objet utilisé, ici un recordset.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rArchive.Fields(f.Name) = f
    l'objet field a deux propriétés, parmis d'autres, trés utiles : .value et .name.

    Le code ci dessus signifie

    dans la collection des champs de l'objet rArchive, cherche le champ dont le nom est le même que celui de f puis attribue la valeur de f à ce champ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For Each f In Me.Recordset.Fields()
    Me. réfère au formulaire courrant. Donc là je dis 'prend les champs du recordset utilisé par le formulaire courrant'. ArchiverRecord() est dans le code associé au formulaire courrant. Si on veut l'extraire il faut la définir comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public ArchiverRecord(prmForm as form)
    et remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for each f in me.recordset.fields()
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for each f in prmForm.recordset.fields()
    On peut aussi passer le nom de la table d'archive en paramètre pour faire une procédure qui archive n'importe quel enr courrant d'un formulaire.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 74
    Points
    74
    Par défaut
    désolé pour la fausse faute . lol

    J'ai maintenent une erreur " argument non facultatif " sur la ligne suivante :
    j'ai regardé l'aide dans access j'ai rien compris et je voulais aller voir la FAQ Access mais elle n'est pas disponible .

    Si quelqu'un aurait une idée de se que je dois mettre comme argument ??

    Merci d'avance

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 86
    Points : 85
    Points
    85
    Par défaut
    Si tu as utilisé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public ArchiverRecord(prmForm as form)
    Il faut que tu lui specifie "prmForm"
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call ArchiverRecord(FormulaireQueTuVeux)
    Guilty for being the best

    Il y a des choses qui semblent naturelles... Jusqu'au jour où on ne les a plus...

  14. #14
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 69
    Points : 11
    Points
    11
    Par défaut
    Merci marot_r pour les explications

    Je voudrais un petit complément, où dois intégrer le code .

    Vous trouverez en pièce jointe la base avec l'interface (en zip), le code est est sur la page de code de la zone Alata.

    Merci d'avance pour tout

    Zone d'activité CAC St Maximin Verneuil-en-Halatte.zip

  15. #15
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 74
    Points
    74
    Par défaut
    Merci Boolean69 une erreur en moins

    Par contre j'en ai une autre " élément non trouvé dans cette collection"
    sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rArchive.Fields(f.Name) = f
    Quesqu'il me veut ??? lol , de quoi il me parle ??

    Si quelqu'un à déjà eu se genre d'erreur ?

    ( Je sais que je suis pas trés douée lol)

  16. #16
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Citation Envoyé par Raphaëlle
    Je voudrais un petit complément, où dois intégrer le code .
    J'ai supposé que tu utilisais un form comme interface donc, il faut que tu mettes le code 'dans' le form.

    Sur ton form, choisi Propriété puis l'événement AvantSuppression, et ensuite tu clique sur les ..., tu choisi 'Procédure événementielle'. Access va ouvrir le code associé au form.

    Tu fais un copier/coller du code et Voilà.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  17. #17
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Citation Envoyé par MCarole
    Merci Boolean69 une erreur en moins

    Par contre j'en ai une autre " élément non trouvé dans cette collection"
    sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rArchive.Fields(f.Name) = f
    Quesqu'il me veut ??? lol , de quoi il me parle ??

    Si quelqu'un à déjà eu se genre d'erreur ?

    ( Je sais que je suis pas trés douée lol)
    La cause la plus probale est qu'un des champs défini dans le formulaire n'est pas défini dans la table archive.

    Quand l'erreur se produit, passe en mode debug et pointe f.name avec ton curseur. cala va te donner le nom du champ incriminé.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  18. #18
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 74
    Points
    74
    Par défaut
    Merci marot_r mon probléme est résolu

    par contre sa me mettais bien l'enregistrement dans ma table archive mais sa ne me le supprimé pas de l'autre table donc j'ai rajouter les lignes de codes que j'avais sur mon bouton supprimé .
    Voila voila sa fonctionne

    Encore merci

  19. #19
    Membre éclairé Avatar de polo(31)
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 721
    Points : 770
    Points
    770
    Par défaut
    pense au TAG "RESOLU"

  20. #20
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 96
    Points : 74
    Points
    74
    Par défaut
    se n'est pas ma discussion c'est celle de raphaëlle je sais pas si elle a réussit a finir .

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 7 12345 ... DernièreDernière

Discussions similaires

  1. création d'une table dans une base de donnée accèss
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/10/2005, 10h54
  2. Question sur la création d'une table
    Par air dans le forum Oracle
    Réponses: 4
    Dernier message: 23/10/2005, 12h46
  3. Réponses: 4
    Dernier message: 19/10/2005, 11h26
  4. Création d'une table avec foreign key
    Par lepierre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2004, 14h20
  5. INTERBASE Création d'une table
    Par Corben dans le forum InterBase
    Réponses: 2
    Dernier message: 19/06/2004, 20h55

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