Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
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 28/01/2012, 10h21   #1
Membre du Club
 
Inscription : mai 2005
Messages : 162
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 162
Points : 58
Points : 58
Envoyer un message via MSN à forzaxelah
Par défaut Autant de lignes dans une table qu'un nombre dans requete

Bonjour,
J'aimerais faire la chose suivante:

Exemple: J'ai une table avec une référence produit associé à un nombre

|Réf | Nombre |
ER30 8
ER40 10


Je voudrais qu'une requête qui crée autant de ligne que de nombre par produit

|Réf-Nombre |
ER30-1
ER30-2
ER30-3
.....
ER30-8
ER40-1
....
ER40-10

Pouvez vous m'aider??????

Merci!
forzaxelah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 11h23   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 586
Points : 1 586
bonjour,

Une solution consiste à s'appuyer sur le produit cartésien entre deux tables. Pour ce faire, il faut
  1. Créer une table appelée tNombre par exemple qui contient une seule colonne de type Numérique - Entier Long et lui affecter la clef primaire.
  2. Ajouter dans cette table autant de lignes/nombres que votre table tReference puisse contenir. Par exemple, le nombre maxi de votre colonne Nombre est 8, ajouter au moins 8 lignes dans la table tNombres (1,2,3,4,5,...)
  3. Construire la requete :
Je considère que votre table contenant vos références se nomme tReference, que la colonne des références se nomme Reference et que la colonne contenant les nombres se nomme Nombre.

Code :
1
2
3
4
5
 
SELECT tReference.Reference & "-" & tNombre.Nombre AS MaRef
FROM tReference, tNombre
WHERE (tNombre.Nombre<=tReference.Nombre)
ORDER BY tReference.Reference, tNombre.Nombre;
@+

Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/01/2012, 06h01   #3
Membre du Club
 
Inscription : mai 2005
Messages : 162
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 162
Points : 58
Points : 58
Envoyer un message via MSN à forzaxelah
Bonjour,
Finalement, j'ai réfléchi pour faire cela en VBA. Cela fonctionne bien, voici ma requête:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Set db = CurrentDb
SQL = "SELECT T_LISTE_AC_DEF_INST.[Désignation AC],T_LISTE_AC_DEF_INST.[Position SI source] FROM T_LISTE_AC_DEF_INST WHERE T_LISTE_AC_DEF_INST.[Désignation AC]= 'ESSIEU MOTEUR ÉQUIPÉ';"
Set rst = db.OpenRecordset(SQL, dbOpenSnapshot, dbReadOnly)
INTITULE = rst("Désignation AC")
Nbpos = rst("Position SI source")
rst.Close
Set rst = Nothing
 
For i = 1 To Nbpos
Set db = CurrentDb
Set rst = db.OpenRecordset("T_ACI", dbOpenDynaset)
rst.AddNew
rst.Fields("Description POS") = INTITULE & " " & i
rst.Update
rst.Close
Set rst = Nothing
Next i
INtitulé est le nom du produit et Nbpos la quantité. Grâce à la boucle qui se base sur la quantité, je réalise bien l'opération.


Cependant, cela est bon quand on ajoute une ligne de produit à la fois. Si je veux transférer la totalité d'une table de produit, je vais tenter par une double boucle, bonne idée?
forzaxelah est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h11.


 
 
 
 
Partenaires

Hébergement Web