Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/04/2011, 14h08   #1
Futur Membre du Club
 
Inscription : novembre 2010
Messages : 101
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 101
Points : 16
Points : 16
Par défaut Créer un historique résistant : Table (ou Requête ?)

Bonjour à tous,

Il me faut créer une table A (plutôt qu'une requête simple) afin qu'elle serve d'historique.
Comment faire cela ?

Je souhaiterais que les données s'ajoutent à partir d'une autre table B, dont des lignes peuvent se supprimer (d'où l'intérêt de l'Historique table A : conservant les lignes supprimées de la table B)

J'ai pensé au Mémo mais je ne sais trop comment m'en dépatouiller. Et je ne suis pas certain du juste service d'une Requête Insert.

Suis-je sur la bonne voie ? Une idée ?
brankorri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2011, 13h07   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 410
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 410
Points : 4 439
Points : 4 439
bonjour,

tout dépend de ce qu’on souhaite "historiser" et dans quel but…

Pour archiver des enregistrements, une simple table (éventuellement sauvegardée dans un autre fichier) reprenant les champs de la table B avec une DateSuppression peut suffire.

Sinon on peut aller jusqu’à une véritable journalisation avancée.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2011, 15h54   #3
Futur Membre du Club
 
Inscription : novembre 2010
Messages : 101
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 101
Points : 16
Points : 16
Bonjour F-Leb,

Mon but est le suivant : archiver l'achat et la consommation de différents produits.

Ma table "Courant" comprend les évènements gérés un temps entre l'achat et la consommation. A la consommation (date), je souhaite supprimer de la table "Courant", mais conserver dans la table "Historique".

Effectivement, ce tuto est très intéressant.
Seulement, je suis sur Access2003 format 2000...

Bk
brankorri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 01h27   #4
Futur Membre du Club
 
Inscription : novembre 2010
Messages : 101
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 101
Points : 16
Points : 16
Bon : j'ai essayé cela, qui ne fonctionne pas à merveille et j'expliquerai pourquoi.

Je crée une Requête Ajout :
Code :
1
2
3
4
 
INSERT INTO Historique ( CPe, Nom, Produit, Code, [Date d'achat], [Date de consommation] )
SELECT [Courant].CPe, [Courant].Nom, [Courant].Produit, [Courant].Code, [Courant].[Date d'achat], [Courant].[Date de consommation]
FROM Courant;
Par cette Requête Ajout, j'escompte ajouter la ligne créée en Table "Courant" vers la Table "Historique". Seulement, cela ajoute la ligne en question ainsi que toutes les précédentes, que je retrouve alors en double puis triple quadruple etc...

Comment faire pour ajouter seulement la ligne ?
Bk
brankorri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 05h14   #5
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 613
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 613
Points : 30 965
Points : 30 965
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

C'est normal que la requête que tu as fasses cela.

Pour être sûr de ne copier que la ligne voulue, il faut que tu mettes un clause Where à ta requête et comme critère tu utilises la clé primaires qui est un identifiant unique. Mais attention, ta table de destination ne doit pas avoir cette clé comme clé primaire, mais cela doit être une simple table de stockage.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 06h37   #6
Futur Membre du Club
 
Inscription : novembre 2010
Messages : 101
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 101
Points : 16
Points : 16
Bonjour à Tous,

Merci Philippe pour la très juste remarque.
J'ai finalement résolu mon problème et je vous en propose ici la démarche expérimentée :

* créer une table (A) qui sera le fonds.
* créer une requête Ajout s'appuyant sur la table (A) et se dirigeant sur la table (B) (avec en général au moins un critère pour rester logique)

=> Cette table (B) devient l'Historique, en raison du caractère Ajout, si et seulement si :

* la requête Ajout est mobilisée à chaque enregistrement
* créer une requête Suppression qui intervient sur la table (A) (selon le-s même-s critère-s que pour la requête Ajout)
* la requête Suppression est mobilisée à chaque enregistrement

La logique :
- La table (A) comprend une CP, un Nom, une date Début, une date Fin, et n champs... La table B comprend exactement les mêmes champs.
- Je crée une entrée avec une date Début => en A = Provisoire
- Je peux mobiliser la requête Ajout et la requête Suppression (critère : Date Fin) : cela n'agira pas sur les enregistrements de A si la date Fin n'est pas entrée
- Plus, j'entre une date Fin
- Je mobilise la requête Ajout puis la requête Suppression (critère : Date Fin) : cela agit d'abord sur les enregistrements de A dont la date Fin est entrée en les inscrivant en table B (Historique), puis cela agit à nouveau sur les enregistrements de A dont la date Fin est entrée en les supprimant dans cette table A : cette table A est donc en qualité éphémère.
=> Les enregistrements ajoutés en B restent indemnes.

On a donc bien : A = Provisoire ~ & ~ B = Historique

Non ?
Bk
brankorri est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h31.


 
 
 
 
Partenaires

Hébergement Web