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
|
Private Sub Anno_presentes_Click()
'DoCmd.SetWarnings False ' message off
DoCmd.SetWarnings True ' message on
Dim rs As Recordset
Dim rst As Recordset
Dim larequete As String '
Dim critereIn As String
Set rs = CurrentDb.OpenRecordset("Val-ano-Radier") '[Val-ano-Radier]
While Not rs.EOF
critereIn = critereIn & IIf(critereIn = "", "", ",") & Chr$(34) & rs![anomalie_radier] & Chr$(34)
rs.MoveNext
Wend
larequete = "TRANSFORM Count(Defaut_radier) As CompteDeDefaut_radier"
larequete = larequete & " SELECT Type_Ouvrage & Id AS Ouvrage, [Annomalies presentes].Localisation, [Annomalies presentes].effluent"
'larequete = larequete & " FROM [Annomalies presentes]"
larequete = larequete & " FROM"
larequete = larequete & " (SELECT Id, Type_Ouvrage, Localisation, effluent, Defaut_radier_1 as Defaut_radier"
larequete = larequete & " FROM [Annomalies presentes]"
larequete = larequete & " UNION ALL"
larequete = larequete & " SELECT Id, Type_Ouvrage, Localisation, effluent, Defaut_radier_2 as Defaut_radier"
larequete = larequete & " FROM [Annomalies presentes])"
larequete = larequete & " GROUP BY [Annomalies presentes].Type_Ouvrage, [Annomalies presentes].Id, [Annomalies presentes].Localisation, [Annomalies presentes].effluent"
larequete = larequete & " PIVOT Defaut_radier IN (" & critereIn & ");"
'DoCmd.RunSQL larequete: ne marche pas avec une requête de type SELECT: Cela est réservé aux requêtes "actions" (Create, Update, Delete...).
'ci desous la bonne solution
'Set rst = CurrentDb.OpenRecordset(larequete)
'ou celle ci pour visualiser le résultat :
FermerRequete ("Analyse_Radier")
SupprimerRequete ("Analyse_Radier")
'DoCmd.DeleteObject acQuery, "Analyse_Radier" ' supprime la requête Analyse, mais il faut qu'elle existe déjà sinon erreur
CurrentDb.CreateQueryDef "Analyse_Radier", larequete ' crée la nouvelle requete
DoCmd.OpenQuery "Analyse_Radier"
End Sub
Sub SupprimerRequete(Nom As String)
On Error GoTo err
CurrentDb.QueryDefs.Delete Nom
Exit Sub
err:
If err.Number = 3265 Then MsgBox "Impossible de trouver la requête " & Nom
End Sub
Sub FermerRequete(Nom As String)
On Error GoTo err
'CurrentDb.Connection.Close Nom
DoCmd.Close acQuery, Nom
Exit Sub
err:
'MsgBox "La requête " & Nom & n'est pas ouverte
End Sub |
Partager