OVH Cloud OVH Cloud

Paramètres dans Microsoft query

1 réponse
Avatar
Cyrille
bonjour,
J'ai cr=E9e dans microsoft Query une requ=EAte Union (via=20
sql). Dans Microsoft query, ce genre de requ=EAte n'est pas=20
modifiable avec l'assistant requ=EAte. Elle n'est donc pas=20
repr=E9sentable graphiquement dans microsoft query.Peu=20
importe, car je fais mes modifs via la fen=EAtre SQL. Mon=20
probl=E8me r=E9side en fait en l'attribution de param=E8tres sur=20
certains champs de cette requ=EAte. J'arrive en fait =E0 lui=20
faire passer des crit=E8res du style "tel champs" =3D "telle=20
valeur". Mais il m'est impossible de passer un param=E8tre,=20
c'est =E0 dire un valeur variable qui sera red=E9finie par=20
l'utilisateur =E0 chaque appel de la requete. Et c'est l=E0 ou=20
je suis super =E9tonn=E9 car si je reproduis ma table dans=20
Access et que je reproduit la m=EAme requ=EAte union, j'arrive=20
alors (dans access) a faire passer des parametres. Quun=20
connait-il donc un moyen de faire passer des param=E8tres =E0=20
microsoft query??
Pour info, voici le style d'instruction que j'ai programm=E9=20
dans query :=20
J'ai une table MaOe contenant les champs N=B0SEm, N=B0Mois, N=B0
Trim, Matricule, LuA, et LuP
Je cr=E9e l'instruction sql suivante :=20

SELECT MaOe.N=B0Sem, MaOe.N=B0Mois, MaOe.N=B0Trim,=20
MaOe.Matricule, MaOe.LuA As [CodProj]
FROM MaOe
WHERE (MaOe.N=B0Sem=3D[])
UNION
ALL SELECT MaOe.N=B0Sem, MaOe.N=B0Mois, MaOe.N=B0Trim,=20
MaOe.Matricule, MaOe.LuP
FROM MaOe
WHERE (MaOe.N=B0Sem=3D[])

Si entre les crochets je place une valeur pour N=B0Sem (du=20
genre 02 ou 03...) ca fonctionne.
Si je place une valeur g=E9n=E9rique (%), query me dit=20
que "les param=E8tres sont interdits dans les requ=EAtes qui=20
ne peuvent etre repr=E9sent=E9es graphiquement".
Qqun a une id=E9e??
Merci d'avance :)

Cyrille

1 réponse

Avatar
michdenis
Bonjour Cyrille,


Voici un exemple qui avait pour critère des dates saisi dans la feuille de calcul. Évidemment je ne l'ai pas testé pour
savoir si dans une requête "Union" cela posait des difficultés particulières ... tu va me le dire ...;-))


'----------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

'il est pris pour acquis que G1, G2 contiennent des dates
'ET
'G1 est plus petit que G2 ... tu peux ajouter une gestion
'd'erreur le cas échéant....! ( pas défini ici ! )

If Target.Address = [G1].Address Or _
Target.Address = [G2].Address Then
'En supposant que ton QueryTable se situe
'sur la feuille "Feuil1"
'Plage de critère de tes dates :
'Date de début : "Feuil1!G1"
'Date de Fin : "Feuil1!G2"

Dim P1 As Parameter
Dim P2 As Parameter

'utilise l'index ou le nom de la requête
With Worksheets("Feuil1").QueryTables(1)
Set P1 = .Parameters(1)
Set P2 = .Parameters(2)
P1.SetParam xlRange, Range("Feuil1!G1")
P2.SetParam xlRange, Range("Feuil1!G2")
.Refresh False
End With
End If

End Sub
'----------------------------------------


Salutations!




"Cyrille" a écrit dans le message de
news:1776301c44944$3a234410$
bonjour,
J'ai crée dans microsoft Query une requête Union (via
sql). Dans Microsoft query, ce genre de requête n'est pas
modifiable avec l'assistant requête. Elle n'est donc pas
représentable graphiquement dans microsoft query.Peu
importe, car je fais mes modifs via la fenêtre SQL. Mon
problème réside en fait en l'attribution de paramètres sur
certains champs de cette requête. J'arrive en fait à lui
faire passer des critères du style "tel champs" = "telle
valeur". Mais il m'est impossible de passer un paramètre,
c'est à dire un valeur variable qui sera redéfinie par
l'utilisateur à chaque appel de la requete. Et c'est là ou
je suis super étonné car si je reproduis ma table dans
Access et que je reproduit la même requête union, j'arrive
alors (dans access) a faire passer des parametres. Quun
connait-il donc un moyen de faire passer des paramètres à
microsoft query??
Pour info, voici le style d'instruction que j'ai programmé
dans query :
J'ai une table MaOe contenant les champs N°SEm, N°Mois, N°
Trim, Matricule, LuA, et LuP
Je crée l'instruction sql suivante :

SELECT MaOe.N°Sem, MaOe.N°Mois, MaOe.N°Trim,
MaOe.Matricule, MaOe.LuA As [CodProj]
FROM MaOe
WHERE (MaOe.N°Sem=[])
UNION
ALL SELECT MaOe.N°Sem, MaOe.N°Mois, MaOe.N°Trim,
MaOe.Matricule, MaOe.LuP
FROM MaOe
WHERE (MaOe.N°Sem=[])

Si entre les crochets je place une valeur pour N°Sem (du
genre 02 ou 03...) ca fonctionne.
Si je place une valeur générique (%), query me dit
que "les paramètres sont interdits dans les requêtes qui
ne peuvent etre représentées graphiquement".
Qqun a une idée??
Merci d'avance :)

Cyrille