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

VBA Access Discussion :

Transfert de données entre deux tables avec recopie


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Transfert de données entre deux tables avec recopie
    Bonjour,
    Je suis en train de créer une application Web Access (un genre de Mini ERP) seulement je découvre Access à mesure que j'avance dans mon projet. Ma société récupère des lots de matériel informatique chez ses clients, puis effectue un checking de ces PC un par un.
    J'ai une table "item collected" qui recense le matériel récupéré chez les clients (N°Contrat, Item,Manufacturer,Model,Quantity...). Ainsi dans cette table j'aurai une entrée du genre (3,PC,DELL, Inspiron 1545, 8).
    Suivant la condition de ces PC ils peuvent être envoyé en réparation. Ainsi j'ai une table "item à l'atelier". Mais dans cette table je souhaiterais avoir une entrée par PC ou les champs définissent tous les caractéristiques d'un pc particulier.
    Mon problème est que je voudrais créer une macro ou un module qui me permet de sélectionner un lot dans la table "item collected" et transférer les infos des pc de ce lot dans "item à l'atelier". (Dans l'exemple ci dessus, j'aurai donc 8 entrées PC,DELL,Inspiron 1545 dans ma table "item à l'atelier". Et pour cela j'avoue être un peu perdu, je ne vois pas du tout comment faire. A noter que j'ai déjà un formulaire qui renseigne par client les "items collected", donc je pensais place un bouton sur ce formulaire qui exécuterait ce transfert après la sélection d'un lot dans ce formulaire.
    Merci D'avance

  2. #2
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Mehdouche bonjour,

    Afin de transférer les données d'une table vers une autre tu peux utiliser une requête de type Insert (dans la table Atelier) et Delete (dans la table item collected). Ces requêtes peuvent être réalisées par code ou en utilisant l'assistant (reste à définir le filtre de sélection : lot ou check box).

    tu aurais également pu définir une table item et rajouter un champ dans ta table indiquant l'origine ou la localisation (exemple collected, atelier, rebus...). Dans ce cas un simple update te permet de changer l'état d'un matériel ou sa localisation.

    Bonne journée

    JimBoLion

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour JimBoLion,

    En réalité ma BD est un peu plus complexe. J'ai ma table item collected, et à partir de là je dois pouvoir envoyer les entrées de cette table vers 3 autres tables au choix (atelier (pc à réparer), recyclage (pc à recycler), services (suppression de données sur le PC)). Donc je suis parfaitement d'accord avec toi, le plus simple de définir un champ dans ma table d'entrée qui indique ou doit être envoyé cette item, et de faire des requêtes pour actualiser mes trois autres tables ensuite.
    Seulement comme je l'ai indiqué dans ma table item collected, je récupère des lots de PC (un lot= une certaine quantité d'un modèle particulier de PC). Et dans mes trois autre tables je souhaite avoir une entrée par PC (chaque ligne correspond à un PC particulier sur lequel on travaille), car les PC sont traités individuellement. C'est là mon principal problème en plus du fait que je ne sais pas coder en VB(mais je peux très bien essayer avec quelques indications).

  4. #4
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Mehdouche bonjour,

    Je ne vois pas ce que cela change le fait de collecter plusieurs pc dans un lot puisque je suppose que chacun de ces pc est entré individuellement :

    Dans l'esprit j'aurai vu quelque chose comme cela

    Table : T_PC

    pc_id
    pc_nom
    pc_lot_numero_fk
    affectation_pc_fk

    table T_Affectation

    Affectation_id
    Affectation_Lieu

    table T_Lot

    Lot_id
    Lot_Date
    Lot_numero

    Cela dit tu peux continuer sur ta structure si mieux adapté.. Dans un premier temps as tu pensé comment tu vas modéliser ta base et imaginer l'ihm derrière tout çà. (Sélection d'un lot et listbox pour affectation...). A l'issue de cela tu pourras définir un bouton dans lequel tu injecteras par insert l'affectation des differents pc puis un delete sur la table collected pour les pc affectés. Pour éviter tout probleme je te conseillerai de gérer les transactions (éviter de supprimer dans items collected si la requete d'insertion n'a pas fonctionnée)

    http://msdn.microsoft.com/fr-fr/libr.../ff845171.aspx

    Bonne journée

    JimBoLion

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 853
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 853
    Points : 44 223
    Points
    44 223
    Par défaut base collecte pc
    Je pense qu'il vaut mieux éviter des transferts de table à table.

    Je ne sais pas le but final de la collecte, imaginons que c'est pour la revente :

    Tes pcs sont enregistrés lors de leur entrée en stock avec un status état à viser par exemple, il passera au status en cours de visualisation, puis à réparer ou à vendre.

    pour l'aspect lot : 1 pc est lié à 1 lot. Après à toi de voir si la revente se fait par lot, ou de façon individuelle. Si les lots de revente peuvent être différent des lots d'entrée, tu crée un champ lot entrée, et un champ lot vente. Tu peux aussi ajouter une validation par lot exemple : 1 lot n'est pas dispo tant que les machines y étant affectés n'ont pas toutes été visés. ( soit champ manuel soit automatisation via calcul par requete )
    Les infos de revente seront stocké dans la table des lots ou des pcs selon le cas

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses. En réalité mon application gère toute l'activité de l'entreprise. En fait il y a un pôle commercial: qui gère une base de données client et qui passe des contrats avec ceux-ci. Et à partir de ces contrats on récupère du matériel électronique, on le recycle, le répare, on le vend ou on effectue un service(suppression de données). Et les items circulent toujours entre ces 3 pôles (service puis réparation puis revente par exemple).

    voici l'ensemble de mes tables:
    T_Client_Achat:

    Company Name
    COntact
    email....

    T_Contracts_With_Clients

    Client_Name
    Meeting_Date
    Statut

    Items_Collected

    Contract ref
    item
    Quantity
    Manufacturer
    Model
    Proc Speed
    HDD size
    Ram(GB)
    Suppresion de données
    Etat( revente, recyclage, réparation)

    Chaque entrée dans cette table correspond à un groupe de d'items du même modèle et qui viennent du même client.

    Après j'ai 2 tables similaires:

    Items_en_Suppression_ de données

    Items_à_réparer

    Quand un lot est reçu à l'entreprise on prend une décision pour l'ensemble de ce lot (items collected)(réparation, recyclage, suprression de données). On l'envoi par exemple en réparation. En réparation je souhaite que les ouvriers aient face à eux une feuille de calcul ou chaque ligne correspond à PC (et plus à un lot), les techniciens doivent prendre et réparer les PC un à un tout en complétant la ligne de la feuille de calcul correspondant au pc sur lequel ils travaillent.

    Ainsi créer une table affectation ne me semble pas évident, puisque avec une requête (à réparer par exemples), Je récupérerai l'ensemble des lots à réparer. Or je souhaite que les entrées soient des lots de PC, mais dans les tables réparations... je veux visualiser les PC un par un.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    En fait je pense qu'il faudrait faire une boucle for sur les requête ajout du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sub ajout_ligne(parametre as integer)
    for i = 1 to parametre
    DoCmd.OpenQuery "<ma_requete_ajout>" 
    next i
    end sub
    mais mon paramétre est le champ quantité dans ma table item collected. Et celà doit se faire pour toutes lignes que j'aurai coché auparavant (j'ai rajouté un champ select à cocher (oui ou non) et un champ affectation à choix multiple.

    Je vois pas trop comment utiliser le champ quantité comme paramètre et faire cette manipulation pour toutes les lignes cochées.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Juste pour rappeler que le sujet n'est pas clos, et que je suis toujours preneur d'une réponse!!
    Merci

Discussions similaires

  1. Transfert de données entre deux tables avec conditions
    Par ric009 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/03/2014, 10h47
  2. Réponses: 9
    Dernier message: 19/12/2012, 17h35
  3. Transfert de données entre deux tables différentes
    Par settoken dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/09/2009, 04h37
  4. transfert de données entre deux tables
    Par student007 dans le forum Access
    Réponses: 4
    Dernier message: 23/12/2005, 14h04
  5. Réponses: 5
    Dernier message: 30/11/2005, 17h41

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