Bonjour a tous.
Un sujet recurrent sur le forum est une variation sur du theme "est-ce que je peux faire une boucle en SQL ?".
Et la reponse habituelle est du genre "Non, utilise du VBA, ici un exemple".
Or, lors de ma formation sur MS-SQL serveur j'ai lu une solution en SQL.
Elle implique
- une table qui contient des enregistrements numerotes de 1 a Nombre Max.
Dans la formation on parlait de millions d'enregistrements mais en Access cela peut poser des problemes de taille de la BD, donc doser en consequence.
A generer une fois pour toute et reutiliser apres.
La generation en MS-SQL Server utilisait des UNIONs mais la syntaxe n'est pas valide en Access. Il faudra utiliser du VBA.- un produit croise entre la table qui contient l'information sur la repetition et cette table des numeros.
- une condition : [numero]<=[qte].
ici un exemple de code :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT [Table1].*, [tblNumero].* FROM [tblNumero], [Table1] WHERE [tblNumero].[Numero]<=[Table1].[Qte] ORDER BY [Table1].[Qte], [tblNumero].[Numero];
Rappel : un produit croisee peut generer des tonnes d'enregistrements.
C'est a manipuler avec precaution mais pour des petites volumes de repetitions, je trouve cela tres eleguant.
Une requete a la place d'une dizaine de lignes de code.
A+
Partager