IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Appel d'une query d'une methode vba dans une autre méthode [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Points : 149
    Points
    149
    Par défaut Appel d'une query d'une methode vba dans une autre méthode
    Bonjour à tous,

    J'ai Un formulaire utilisant 2 groupes d'option (fraDep et FrSex).

    Dans chaque afterupdate des propriétés de ces groupes d'option j'ai une query qui met a jour un graphique chacun mais FraDep dépend de la valeur fraSEx.
    En bref dans FraDep je voudrais executer la query se trouvant dans fraSex.

    Ai essayé CurrentDb.Execute(strSQLSex et Docmd.runSQL mais me donne un msg d'erreur)

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub cmdCategories_AfterUpdate()
    Dim strSQL As String
     
    Dim strCategory As String
    strCategory = Me!CmdCategories.Value
     
          strSQL = "TRANSFORM Sum(qryMain.NbrOfDay) AS SommeDeNbrOfDay"
          strSQL = strSQL & vbCrLf & "SELECT Format([Date_Leave],'mmm'&' yy') AS Mois"
          strSQL = strSQL & vbCrLf & "FROM qryMain"
          strSQL = strSQL & vbCrLf & "WHERE ((([Leave])=" & Chr(34) & strCategory & Chr(34) & "))"
          strSQL = strSQL & vbCrLf & "GROUP BY Format([Date_Leave],'mmm'&' yy'),(Year([Date_Leave])*12+Month([Date_Leave])-1)"
          strSQL = strSQL & vbCrLf & "PIVOT qryMain.DEPTitel;"
     
     Me!FraSex = 1
     'Me!fraDep = 1
     Debug.Print strSQL
      'Affectation de la nouvelle source et mise à jour de graphique
      GraphLeave.RowSource = strSQL
      GraphLeave.ChartTitle.Text = "Leave " & strCategory & " by Departement"
      GraphLeave.Requery
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub cmdClose_Click()
      DoCmd.Close acForm, Me.Name
    End Sub


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Private Sub fraDep_AfterUpdate()
    Dim strDep As String
    Dim strSQLSex As String
    Dim strCategory As String
    Dim strSex_fraDep As String
    Dim libelleSexe As String
    Dim strSex As String
    Dim libelleDep As String
    strCategory = Me!CmdCategories.Value
    'Dim Where_Group As String
    strSex = Me!FraSex.Value
     
    Debug.Print "strSex_Before :"; strSex
     
    If FraSex.Value = 1 Then
    strSex_fraDep = "< 3"
    libelleSexe = "All"
    ElseIf FraSex.Value = 2 Then
    strSex_fraDep = "= 0"
    libelleSexe = "Man"
    Else
    strSex_fraDep = "= 1"
    libelleSexe = "Woman"
    End If
     
    Debug.Print "libelleSex 0:"; libelleSexe
    Select Case fraDep.Value
    Case 1
     
           strDep = "'*'"
            libelleDep = "All"
       '     GraphSex.RowSource = strSQLSex
     Case 2
            strDep = "'CEO'"
            libelleDep = "CEO"
     
     Case 3
            strDep = "'DGA'"
            libelleDep = "DGA"
     Case 4
            strDep = "'DGO'"
            libelleDep = "DGO"
     Case 5
            strDep = "'DGS'"
            libelleDep = "DGS"
     Case Else
            strDep = "'Other'"
            libelleDep = "Other"
     End Select
     
     
    strSQLSex = "TRANSFORM Sum(qryMain.NbrOfDay) AS SommeDeNbrOfDay"
    strSQLSex = strSQLSex & vbCrLf & "SELECT qryMain.DEPTitel"
    strSQLSex = strSQLSex & vbCrLf & "FROM qryMain"
    strSQLSex = strSQLSex & vbCrLf & "WHERE ((([Leave])=" & Chr(34) & strCategory & Chr(34) & ") and ([Gender] " & strSex_fraDep & ") and ([DepTitel] like " & strDep & "))"
    strSQLSex = strSQLSex & vbCrLf & "GROUP BY qryMain.DEPTitel"
    strSQLSex = strSQLSex & vbCrLf & "PIVOT qryMain.JourLitt;"
     
    GraphSex.ChartTitle.Text = "Nbr of Days by weekday for  " & libelleSexe & " membership From following Department :"
     
     Debug.Print "===> :"; strSQLSex
     Debug.Print "libelleSex :"; libelleSexe
     Debug.Print "fraSex 0:"; FraSex
     Debug.Print "strCategory 2:"; strCategory
     Debug.Print "strSex 1:"; strSex_fraDep
     Debug.Print "libelleDep 1:"; libelleDep
     
    GraphSex.RowSource = strSQLSex
    GraphSex.Requery
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Private Sub FraSex_AfterUpdate()
    Dim strSQL As String
    Dim strSex As String
    Dim libelleSexe As String
    Dim strSQLSex As String
    Dim strCategory As String
    strCategory = Me!CmdCategories.Value
     
     
    'Debug.Print "strSQLSex : :"; strSQLSex
     
    Select Case FraSex
     Case 1 ' Gender Male
            strSex = "< 2"
            libelleSexe = "All"
     
     Case 2 'Gender Female
            strSex = "= 0"
            libelleSexe = "Man"
     Case 3 'All
            strSex = "= 1"
            libelleSexe = "Woman"
    End Select
    ' DoCmd.RunSQL (strSQLSex)
    GraphSex.Requery
    Debug.Print "strCategory :"; strCategory
          strSQL = "TRANSFORM Sum(qryMain.NbrOfDay) AS SommeDeNbrOfDay"
          strSQL = strSQL & vbCrLf & "SELECT Format([Date_Leave],'mmm'&' yy') AS Mois"
          strSQL = strSQL & vbCrLf & "FROM qryMain"
          strSQL = strSQL & vbCrLf & "WHERE ((([Leave])=" & Chr(34) & strCategory & Chr(34) & ") and ([Gender]" & strSex & "))"
          strSQL = strSQL & vbCrLf & "GROUP BY Format([Date_Leave],'mmm'&' yy'),(Year([Date_Leave])*12+Month([Date_Leave])-1)"
          strSQL = strSQL & vbCrLf & "PIVOT qryMain.DEPTitel;"
     
     Debug.Print "strCategory 2:"; strCategory
     Debug.Print "strSex :"; strSex
     
          GraphLeave.RowSource = strSQL
          GraphLeave.Requery
     
     
     
     
    End Sub

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    La méthode la plus simple : ajouter un appel à FraSex_AfterUpdate() à la fin de fraDep_AfterUpdate().

    Tu mets call FraSex_AfterUpdate() avant le End Sub et access va executer le code associé.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Execute et RunSql sont réservés aux requêtes actions comme Insert, Update, Delete...
    SELECT ou TRANSFORM ne sont pas des requêtes action, ça provoque donc une erreur.

    Il faut utiliser la méthode existante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GraphLeave.RowSource = strSQL
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FORMS 6i] Appel d'une autre Form
    Par Nounoursonne dans le forum Forms
    Réponses: 24
    Dernier message: 15/11/2006, 18h02
  2. GC appel depuis une autre classe
    Par dark2 dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 09/06/2006, 05h53
  3. Réponses: 1
    Dernier message: 22/12/2005, 17h28
  4. [Struts] Appel d'une autre application web
    Par romdelf dans le forum Struts 1
    Réponses: 4
    Dernier message: 18/11/2005, 09h26
  5. [PL/SQL]Appel d'une classe/méthode java
    Par marsup54 dans le forum SQL
    Réponses: 4
    Dernier message: 30/06/2004, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo