Urgent access

Fermé
wrai - 17 févr. 2006 à 14:07
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 - 22 févr. 2006 à 18:31
salut a tous

je souhaite separer des champs d'une table et en creer une autre je m'explique bcp mieux:

je possede une table intitulé Rg01 avec pour champ numero/mac adresse/port descrition(description du switch+port+unit)/status

et je souhaite obtenir a partir de celle ci une table ou il y aurait comme champs:numero/adresse mac/port/unit

en fait le but et le plsu difficiel pour moi est de reussir a prendre des info dans un champ et les restaurer en 2chmp distinct

de l'aide merci

17 réponses

choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
17 févr. 2006 à 14:18
re

le problème se situe au niveau de ton champs description ...

en effet, les trois infos du champs description ne sont pas distinctes donc je pense qu'il doit être impossible de les récupérer automatiquement.

il faudra certainement réécrire ces données dans trois champs distincts ..
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
17 févr. 2006 à 14:23
Sauf si le champ "combiné" présente une longueur fixe...

Tu pourrais alors extraire une chaîne de caractères, par exemple avec l'intruction Left() ou Right() dans une requête.
0
exact quelqu'un serait il faire cette requete
Exemple de contenu d'un champ :
'Nortel Networks Business Policy Switch 2000 Ethernet Switch Module - Unit 4 Port 5'


Nous voulons séparer cette chaîne en trois partie :

le nom du switch
l'unit
le port


Ceci ne peut se faire automatiquement. Il faut réfléchir à l'algorithme de décomposition.
Ici, nous remarquons que les deux derniers éléments sont l'unit et le port.

Fonctions nécessaires au travail d'une chaîne de caractères : mid(), right() et left().

Quelqu'un serait il faire cette requete merci
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
17 févr. 2006 à 15:24
SELECT Left((Right([NomDuChamp],10)),5) AS Unit
FROM NomDeLaTable;

Il faudra peut être adapter la taille de la chaîne à sélectionner...

même chose pour le port: SELECT Right([...];5) FROM...
0

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

Posez votre question
et avec une macro sous access ca donnerai quoi??? quelqu'un aurai une idée??
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
17 févr. 2006 à 15:51
Une macro pour quoi faire?

Une requête création de table ne serait pas plus simple?
0
tu a raison mais comment faut il proceder stp merci
desolé mais je suis tro pas bon en access je debute merci
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
17 févr. 2006 à 16:29
Ce n'est pas difficile. Il y a des assistants qui font presque tt le boulot...

Si tu as ta table de départ sous access, tu choisis le second onglet dans la fenêtre Base de Données (requêtes) et tu cliques sur nouveau puis tu choisis créer une requête en mode création.

Tu ajoutes la table sur laquelle tu veux effectuer la requête.
Tu obtiens une fenêtre avec deux volets. Celui du haut affiche la ou les tables sélectionnées.

Tu double-cliques sur les champs que tu veux incorporer dans ta requête et ils s'affichent dans le volet inférieur. Ce volet permet de trier ou d'effectuer des opérations sur les champs. Tu n'en as pas besoin.

Dans le champ qui comporte les données que tu veux extraire, tu tapes sur la première ligne la formule que je t'ai proposée.

Tu peux vérifier si le résultat est OK en affichant la requête en mode feuille de données (menu affichage).

Si c'est bon, choisis l'option création de table (menu requête).
Access te demande de nommer la table.

La fenêtre se modifie mais ne t'en occupe pas. Pour exécuter la requête, il suffit alors de cliquer sur le bouton avec un point d'exclamation.

Et c'est tout...

Tu peux bien sûr ajouter deux champs avec deux formules différentes permettant d'extraire des données du même champ de départ.

Tu vois que dès que tu modifie le texte d'une des cellules de la première ligne, access ajoute automatiquement: Expr1, Expr2. Tu peux modifier pour donner un nom plus explicite au(x) champs dans ta future table...
0
a parament t'as pas compris la question
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180 > toto
20 févr. 2006 à 13:17
A lire la suite, effectivement, "a parament", comme tu écris, je n'ai apparemment pas bien compris...

Merci de me le signaler.
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
17 févr. 2006 à 16:41
Euh, désolé, tu ne dois pas recopier toute la formule (qui est déjà une requête) mais seulement l'expression: Right()...
0
g pas trop compris ta reponse
par exemple g un champ numero /mac adresse/port description(qui decrit le port l'unit et le nom du switch) /status

et je veux obtenir un champ numero /mac adresse/port/unit et le nom du switch) /status
comment faire
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
20 févr. 2006 à 13:25
Ecoute, je veux bien, mais tu me dis que les données que tu dois extraire de ton champ "combiné" se retrouvent toujours au même endroit dans ce champ.

Si tu veux les séparer tu peux le faire en extrayant une chaîne de caractères.

Dans ton propre exemple:

'Nortel Networks Business Policy Switch 2000 Ethernet Switch Module - Unit 4 Port 5'

Si tu veux extraire "Port5", tu dois en principe appliquer: Right (NomDeTONCham;5).

Je peux pas être plus clair.
Pour les champs dont tes données sont déjà correctes, il suffit de les inclure dans la requête comme exposé plus haut.

Ou alors, je n'ai pas compris, comme notre excellent ami Toto le suggère...
0
ok g compris mais g juste un probleme pour le unit je peux pas juste mettre right ou left il faut que je combine les 2?? CAR JE VEUX JUSTE LE nombnre de l'unit ou au pire l'unit +le nombre
et tout c clair pour ce qui est au dessus
0
tu combine les left et right comme l'exemple au dessus et ca marche
0
ok merci a tous ca marche nikel
0
encore une petite question !!
peut on avec une requete creer un champ et son contenu

du style si dans ma requete il y a correspondance entre les 2 clé choisies alors il crée un champ supplementaire intitulé TYPE et a l'interieur C Bureautique
0
encore une petite question !!
peut on avec une requete creer un champ et son contenu

du style si dans ma requete il y a correspondance entre les 2 clé choisies alors il crée un champ supplementaire intitulé TYPE et a l'interieur C Bureautique
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
22 févr. 2006 à 00:16
Oui, avec une requête création de table, on crée à la fois la table et le contenu des champs.
Il est tout à fait possible d'ajouter des critères mais je ne comprends pas ce que tu veux dire quand tu parles de "correspondance entre deux clés"... Peut-être un exemple?
0
exemple zenon

je crée une requete qui met en relation 2 tables .
si elle ont la meme adresse mac alors il y a correspondance entre les 2 et donc les postes sont bureautique.

en fait j'aimerais que lorsqu'il y a correspondance entre les adresse un champ "TYPE" se crée et a l'interieur bureautique comme sous champ.

you understand??
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
22 févr. 2006 à 18:31
Je ne comprends pas bien quand tu dis que c'est une requête qui met en relation tes tables mais, si tu inclus les deux champs qui contiennent l'adresse Mac et que dans l'un d'eux tu spécifies un critère du type "= [l'autre champ].[L'autre table]

tu pourras mettre à jour tous tes enregistrements en une fois.

Quant à ajouter un champ dans une des tables, ce n'est pas directement possible à mon avis.

En revanche tu peux anticiper en créant dans ta table de destination ton champ"type" et en mettant à jour la valeur avec ta requête.

Evidemment rien ne t'empêche de créer un nouveau champ dans ta requête. Il "n'existera" que lors de l'exécution de la requête et, si j'ai bien compris, tu risques d'avoir besoin de répéter l'opération avec d'autres critères qu'il sera impossible de regrouper dans une table de destination...
0