Auteur

MVP Office Access 2003, 2004, 2005 et 2006

Qui sont les MVP ?

 
 

Codes pour Access

+ Base de données
+ Administrateur
+ Table
 -  Requête
+ Formulaire
+ Dates & Heures
+ Nombre
+ Math
+ Fichier
+ Commandes externes
+ Automation
+ Equivalence
 
 

Tuto Access 2007

+ Base de données
 
 

Lettre d'information

Pour avoir des nouvelles de ce site, inscrivez-vous à notre Newsletter.
S'abonner
Se désabonner

captcha
Merci de recopier le code alphanumérique ci-dessus
114 Abonnés
 
 

Requête - Création requête regroupement

Description 

Cette fonction permet de créer une requête de regroupement basé sur une table dont la structure peut changer. L'intégralité des champs sera sommé dans la requête à l'exception du ou des champs identifiés comme regroupés.

 
Synthaxe 

fCreateQueryGroupSum (strTable, strQuery, fldGroup)

La synthaxe de la fonction fCreateQueryGroupSum comprend les éléments suivants :

ElémentsDescription

strTable

Expression de chaîne correspondant au nom de la table qui servira de source à la requête.
strQueryExpression de chaîne correspondant au nom de la requête que l'on souhaite créer.
fldGroupTableau contenant le ou les noms de champs qui doivent être regroupé dans la requête.
 
Exemple 

Imaginons que nous avons une table dont la structure change régulièrement et qui se nomme "tblStructureChangeante".

Cette table est constitué aujourd'hui de 5 champs dont 2 qui serviront à regrouper les données :

  • Code (champ regroupé)
  • LibelleCode (champ regroupé)
  • PrixCode
  • QuantiteCode
  • Total

Dans ce cas la fonction devra être lancée de la manière suivante :

fCreateQueryGroupSum "tblStructureChangeante", "qryNew", "Code", "LibelleCode"

Cette fonction aura pour effet de créer une requête nommée "qryNew" qui aura le SQL suivant :

SELECT Code, LibelleCode, Sum(tblStructureChangeante.PrixCode) AS PrixCode, Sum(tblStructureChangeante.QuantiteCode) AS QuantiteCode, Sum(tblStructureChangeante.Total) AS Total
FROM tblStructureChangeante
GROUP BY tblStructureChangeante.Code, tblStructureChangeante.LibelleCode;

Maintenant si demain les champs contenant les montants qui doivent être sommé change de nom ou s'il y en a des nouveaux, la requête se recréé correctement.

 
Code de la fonction 


Public Function fCreateQueryGroupSum(strTable As String, _
strQuery As String, ParamArray fldGroup())

On Error GoTo ERR_fCreateQueryGroupSum

Dim Db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim intField As Integer
Dim strSelect As String
Dim strGroup As String
Dim strSQL As String
Dim isFldGroup As Boolean
    
Set Db = CurrentDb
Set tdf = Db.TableDefs(strTable)

For Each fld In tdf.Fields
        isFldGroup = False
        For intField = 0 To UBound(fldGroup)
                If fld.Name = fldGroup(intField) Then
                        isFldGroup = True
                        Exit For
                End If
        Next
        If isFldGroup = True Then
                If strGroup = "" Then
                        strGroup = "GROUP BY " & fldGroup(intField)
                Else
                        strGroup = strGroup & ", " & fldGroup(intField)
                End If
                If strSelect = "" Then
                        strSelect = "SELECT " & fld.Name
                Else
                        strSelect = strSelect & ", " & fld.Name
                End If
        Else
                If strSelect = "" Then
                        strSelect = "SELECT Sum(" & strTable & "." & fld.Name & ") AS " & fld.Name
                Else
                        strSelect = strSelect & ", Sum(" & strTable & "." & fld.Name & ") AS " & fld.Name
                End If
        End If
Next

strSQL = strSelect & " FROM " & strTable & " " & strGroup

Db.CreateQueryDef strQuery, strSQL
Set tdf = Nothing
Db.Close: Set Db = Nothing

Exit Function

ERR_fCreateQueryGroupSum:
If Err.Number = 3012 Then
        DoCmd.DeleteObject acQuery, strQuery
        Resume
Else
        MsgBox "Erreur n°" & Err.Number & vbCrLf & Err.Description
        Set tdf = Nothing: Set Db = Nothing
End If

End Function

 


Date de création : 13/11/2006 @ 12:28
Dernière modification : 13/11/2006 @ 16:48
Catégorie : Requête
Page lue 1690 fois


Prévisualiser la page Prévisualiser la page     Imprimer la page Imprimer la page

 
 

Réactions à cet article


Personne n'a encore laissé de commentaire.
Soyez donc le premier !


 
 

Recherche




Google

 
 

Préférences

Votre nom (ou pseudo) :

Votre mot de passe :

     


Membres 76 Membres

membres les 10 derniers :
jujubegood   Rachid   fifimeyrou   MoxQwoidT   fof_alaz   bellemeche   Bruno   fatima   foubay   feever   
Membre en ligne : Membre en ligne :
( personne )
Anonymes en ligne : Anonymes en ligne : 2

Total visites : Total visites : 117980  
hit Affluence record: 102
le 17/06/2007 @ 07:36

Ecrire à Jessy SEMPERE Ajouter aux favoris Recommander ce site à un ami Version mobile
 
 


Design Jessy © 2007 - Compatible IE6, IE7 et Mozilla 2.0.0.1

  Site créé avec GuppY v4.5.18 © 2004-2005 - Licence Libre CeCILL

Document généré en 0.12 seconde