Transfert d'enregistrement entre deux tables avec recopie

Fermé
mehdoucheD Messages postés 6 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 17 juillet 2013 - 11 juil. 2013 à 07:47
mehdoucheD Messages postés 6 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 17 juillet 2013 - 17 juil. 2013 à 10:18
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.
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

Ainsi depuis la table Items_Collected, je souhaite envoyer les enregistrements vers les tables Items_à_réparer ou Items_en_suppression_de_données, mais en dupliquant les enregistrements dans les tables Items_à_réparer ou Items_en_suppression_de_données suivant le champ quantité indiqué dans la table Items_Collected.

Exemple dans items collected j'ai un enregistrement du genre (3,PC,DELL, Inspiron 1545, 8) où 8 est la quantité de PC DELL inspiron 1545. Je souhaite les envoyer dans la table Items à reparer ainsi dans cette table j'aurai 8 enregistrements DELL PC Inspiron 1545.

Merci d'avance
A voir également:

5 réponses

castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
Modifié par castours le 15/07/2013 à 16:37
Bonjour
Quand tu reçois un lot de 8 pc, ils ne sont pas tous a réparer ou en suppression de données. Alors pour moi il faudrait les identifier a la reception par type travaux dans un colonne specifique
Par exemple Rép et SupDon
Ce qui te permettrait de faire un tri par catégorie.
Ensuite , tu fais un formulaire avec la tablede la categorie concernée.Tu ajoutes une liste deroulante basée sur la meme categorie.

A l'aide du code VBA tu peux enregistrer ton choix fait dans ta liste deroulante.
Un conseil
Pour les relations futures entre les tables, mets des noms differents pour les identifants.
Autrement sources de futurs problemes.
Suggestion
N°ClAc pour table Client Achat pour une primaire
Ce meme nom de champ dans la table en relation mais en numerique dans la table contratsClients
N°ConCl pour table ContratsClients
Tu vois pour la suite
0
mehdoucheD Messages postés 6 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 17 juillet 2013
16 juil. 2013 à 07:11
Bonjours castours, merci pour ta réponse.

En réalité l'objectif est de ne pas avoir à rentrer dans la base de données tous les items un par un. Cela serait une charge de travail trop conséquente.
Et en réalité des ordinateurs d'un lot subissent le même traitement presque tout le temps, et je vais faire cette hypothèse (quitte à utiliser par la suite le transfert de rep à suppression de données par exemple). Donc sur mon lot de 8 PC, ils iront tous en suppression de données ou en réparation (puisque un lot est constitué d'ordinateurs du même modèle qui viennent de la même entreprise).

En fait je pense qu'il faut que je fasse des macros de transfert suivant la quantité mais je ne vois pas du tout comment faire, pour sélectionner une table spécifique et la quantité j'imagine qu'il doit s'agir d'une boucle for du genre:
sub ajout_ligne(parametre as integer)
for i = 1 to parametre
DoCmd.OpenQuery "<ma_requete_ajout>" 
next i
end sub


En fait 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.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
Modifié par castours le 16/07/2013 à 07:56
Bonjour
Peux tu mettre la base sur le site avec quelques enregistrements avec C.joint.com
Il faut compresser la base avant utiliser c.joint
0
mehdoucheD Messages postés 6 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 17 juillet 2013
16 juil. 2013 à 08:25
voici le lien http://www.cjoint.com/data3/3GqijtJGznw.htm
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
16 juil. 2013 à 10:40
Bonjour
J'ai bien reçu ta base que j'ai regardé. Elle ne peut pas fonctionner car tu n'as aucune relation de faites entre les tables. Il faut les établir.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mehdoucheD Messages postés 6 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 17 juillet 2013
16 juil. 2013 à 11:04
Bonjour,
je ne vois pas ce que tu veux dire, il y a une relation entre contracts_with_clients and Thai_it_client. Ensuite entre item_collected et contracts_with_clients. C'est les seules relations que j'ai pour l'instant. Pour les autres tables elle sont indépendantes et les relations que je veux établir entre elles sont les transferts que je souhaite réaliser à l'aide de VBA.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
16 juil. 2013 à 11:32
Bonjour
Ce que je veux dire sur les relations:
Il existe plusieurs types
Relation 1 a 1 tres peu utilisée
Relation plusieurs a plusieurs tres peu utilisée
Relation 1 a plusieurs courament utilisée
Exemple: Dans le cas une relation un a plusieurs, tu as une table entreprise et un table clients.
La table entreprise est a 1 et la table client a plusieurs. Ce qui veut dire tu as une entreprise pour plusieurs clients.
Pour ce faire on met une clé primaire dans la table entreprise exemple N°Ent en N°auto
On met une clée secondaire dans la table clients exemple N°Ent en Numerique
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
16 juil. 2013 à 12:05
Bonjour
Je voulais d'aider en faisant les relations sur ta base mais elle est en access 2010 incompatible avec access 2007
0
mehdoucheD Messages postés 6 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 17 juillet 2013
17 juil. 2013 à 06:01
ok très bien merci beaucoup Castours! j'ai crée mes clefs secondaires et clés primaires. J'ai bien des relations entre mes tables.

Mon problème reste la recopie des enregistrements dans d'autres tables suivant le nombre quantité. Aurais tu une idée de macro ou de code en VBA pour que je puisse faire ça. (l'idée serait de selectionner mes enregistrement et d'appuyer sur un bouton relié à cette macro)
0
mehdoucheD Messages postés 6 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 17 juillet 2013
17 juil. 2013 à 10:18
En fait on ne peut pas créer de clés étrangères dans Access sur une base de données web. Ainsi la seule "relation" que l'on puisse créer c'est de définir un champ comme une liste de choix dans les valeurs d'un champ d'une autre table. C'est déjà ce que j'avais fait.

Bref ceci étant réglé, mon problème principal reste la macro!
0