Bonjour ,
je n arrive pas a creer une table qui soit en fait la réunion de 10 autres tables.
Celles ci ont exactement les memes champs.
Existe t'il un code ou requête capable de faire ca ??
Merci d'avance
Bonjour ,
je n arrive pas a creer une table qui soit en fait la réunion de 10 autres tables.
Celles ci ont exactement les memes champs.
Existe t'il un code ou requête capable de faire ca ??
Merci d'avance
Bonjour,
On peut le faire avec une requête UNION
A+
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT chp1, chp2, chp3 FROM Table1 UNION SELECT chp1, chp2, chp3 FROM Table2 UNION SELECT chp1, chp2, chp3 FROM Table3
salut
astuce convertit tes 10 table au faurmat excel traite dans une seul feuille puis importe ton fichier excel ton ta base
A+![]()
salut
LedZeppII avec 10 tables ca marches car j'ai jamais testé![]()
Le tout est de savoir si tu veux une nouvelle table ou simplement pourvoir consulter les dix tables en même temps sans les unir dans une seule.
Ce qu'on t'a proposé plus haut est un requête union, qui va te donner les enregistrement des toutes tes tables ensembles mais dans leurs tables d'origine.
Tu ne peux pas modifier ces enregistrements.
Il existe des requêtes qui permettent d'ajouter les enregistrements dans une autre table. dans ce cas, tous les enregistrements se retrouvent dans la même table et il est alors possible de les manipuler et les modifier.
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Super cool, vais essayer ca dessuite,
En fait je ne veux pas les modifier juste avoir une table virtuelle en quelques sorte
Vais essayer la 1er soluce et je vous tiens au courant
merci encore
Ok j'ai tester la soluce c'est presque ce que je désirai, effectivement je n'ai pas besoin de modifier les valeurs,
mais la table finale doit bien ce creer avec la possibilité au lancement de la requete,
- soit de vider la table finale,
- soit effacer la table finale existante et la recréer,
car les valeurs doivent être mise a jour en permanence.
Table 1; table 2, table 3 etc .... sont des table liées et proviennent d'une base oracle.
Ou pe etre est il possible de pointer directement sur les tables oracle sans les liées et recuperer dans une table tous les champs avec leur valeurs...
Merci encore
Bonsoir,
Utilise la requête UNION que tu as créée comme source d'une requête création de table.
Possible .Ou peut-être est il possible de pointer directement sur les tables oracle sans les liées et récuperer dans une table tous les champs avec leur valeurs...
- Créer une requête SQL Direct.
- Définir la chaîne de connexion ODBC dans les propriétés de la requête SQL Direct.
- Ecrire la requête UNION en SQL Oracle
- Créer une requête création de table qui utilise la requête SQL Direct comme source.
L'avantage c'est que c'est le serveur Oracle qui fait l'union entre les tables.
A+
Pour la fusion des table c'est ok, je suis passer par une requete INSERT coupler avec requete UNION ca fonctionne tres bien, j'ai juste fait un macro qui lance
la requête suppression des valeur de la table, puis ajout des valeurs avec la requete UNION.
Envoyé par LedZeppII
Cette solution me plait encore plus reste a la dévellopper, je ne suis pas un expert lolllll.
Si tu as des exemples de code ou autres a me fournir je suis preneur.
Super merci pour ton aide
Je ne suis pas un expert Oracle mais je peux te guider dans la création d'une requête SQL Direct.
- Menu Principal : Insertion -> Requête
- Dans l'assistant choisir "Mode Création"
- cliquer "Fermer" sans ajouter de table.
Modification de la requête en requête SQL Direct
- Menu Principal : Requête -> Spécifique SQL -> SQL Direct
Chaîne de connexion
- Menu Principal : Affichage -> Propriétés
- Propriété "Chaîne de connexion ODBC" :
On met quelque chose comme ça :
ODBC;DATABASE=database;UID=user;PWD=password;DSN=datasourcename;
en gras les mots clés et en pourpre les paramètres.
Si tu as lié des tables, tu dois déjà avoir un DSN (Source de données).
Tu peux voir les chaînes de connexion des tables liées avec une requête (requête Access)Voir la colonne Connect.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT Connect, Name, ForeignName, Type FROM MSysObjects WHERE (((MSysObjects.Connect) Is Not Null));
Pour tester la requête SQL Direct commence par une instruction simple
Si elle renvoie quelque chose la chaîne de connexion est bonne.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT 'Test Connexion' "TEST" FROM DUAL
Tu peux écrire dans la requête SQL Direct le SQL complet avec les UNION.
La requête sera exécutée par le serveur Oracle. Il faut donc que le SQL de cette dernière soit conforme à la syntaxe Oracle.
Par exemple si l'utilisateur de la connexion n'est pas le même que celui qui possède la table derrière le FROM,
il se peut que tu doive écrire : FROM NomUtilisateur.NomTable au lieu de FROM NomTable .
Bon courage
merci beaucoup je pense que ca devrais le faire .
Je teste et te tiens au courant
merci encore
Slt
Bon j'ai tester la requete SQL direct vers oracle avec l'option UNION et cela fonctionne parfaitement.
le seul Probleme est que si je mets INSERT INTO MA_TABLE il me dit qu'elle n'existe pas, je présume que c'est parcequ'elle n'existe pas dans oracle.
Elle existe par contre dans ma BD Access et j'aimerai qu'elle soit fourni par ma requete sql direct, bien evidement en effacant son contenu au préalable.
Cela marchais par contre qd mes tables oracle etaient liées, et que je lancais la requete union sur ses dernieres.
Voila je m'en remets a votre savoir faire
Merci
Je viens de tenter autre chose, j'ai creer une requete de ma requete sql direct
afin de pouvoir mettre des critères. ( ca fonctionne)
Je dois egalement faire du regroupement et une somme sur un champ.
C''est la que ca coince... il me dit Impossible d'effectuer un regroupement sur les champs sélectionnés avec '*'. (Erreur 3121).
Quel serait la solution, dois bien en avoir une lollllllll
Merci
Hello,
C'est quoi l'intérêt d'inserer dans une table si tu n'as pas de modification et/ou suppression/ajout à effectuer sur tes données?
Ta requete union servira de vue, sera toujours à jour et manipulable.
Il faut que tu mettes l'ensemble des champs un par un.il me dit Impossible d'effectuer un regroupement sur les champs sélectionnés avec '*'. (Erreur 3121).
pour :
t'es fait une requete SQL Direct? si oui, c'est normal qu'il te dise ça.le seul Probleme est que si je mets INSERT INTO MA_TABLE il me dit qu'elle n'existe pas, je présume que c'est parcequ'elle n'existe pas dans oracle.
pour la solution de LedZeppII, ça marche mais c bien compliqué, les tables liées marchent très bien.
où en es tu?
Slt,
Pour ma part et avec le peu de connaissance que j'ai, si je voulais creer une table s'etait simplement pour pourvoir faire differentes requetes sur cette table.
J'avais au depart liés les table oracle ( enfin quelques unes) car je dois faire des requetes croisées afin de recuperer des libellé au lieu des clés.
Le souci c'est que j'ai plusieur USER dans mon instances oracle et pour faire une requete en récuperant les libellé au lieu des cles il me fo 5 table pour chaque USER et j'ai 10 USERS.
Donc je preferai faire une requete SQL direct ki me rammene les valeurs désirée dans access et ceux dans une seule et meme table.
La requete fonctionne bien mais me donne une vue du resultat de la requete.
je dois ensuite recuperer dans cette requete certaines valeurs correspondant a des champs de formulaire et effectivement faire regroupement de cerain champs + une somme d'un champs.
Pour la solution de LedZeppII, elle fonctionne bien j'utulise celle la pour faire ma requete
Voila j'espere être clair lollllll
Merci encore
Re,
Bon a priori j'ai reussi, je ne sais pas si j'ai bien fait mais voila ce que j'ai fait :
J'ai mis tous les champs comme tu m'a indiqué, ensuite j'ai lancer la requete,
meme erreur, je l'ai ouverte en sql pour verifier et j'ai supprimer le * avant mon FROM, d'ailleur je ne sais pas pkoi s'etait la et a koi ca servais, mais la ca fonctionne super bien.
Donc merci a vous tous et si je peut aider a mon tour no PB
![]()
Partager