OVH Cloud OVH Cloud

requête

5 réponses
Avatar
Arlequin
Bonjour

Dans une requête, j'aimerais que dans ses propriétés, les premières valeurs
soient une variable, dans le genre nbre=inputbox("Combien en voulez vous?")
J'ai essayé un module mais je dois mal m'y prendre.

Merci d'avance de votre aide.

5 réponses

Avatar
Eric
"Arlequin" écrivait
news:40d59355$0$280$:

Bonjour

Dans une requête, j'aimerais que dans ses propriétés, les premières
valeurs soient une variable, dans le genre nbre=inputbox("Combien en
voulez vous?") J'ai essayé un module mais je dois mal m'y prendre.

Merci d'avance de votre aide.





Bonjour Arlequin,

Dans un module standard :
Sub test()
Dim Reponse As String, strSQL As String, qry As DAO.QueryDef
Reponse = InputBox("Nb d'éléments", "Demande de saisie", 1)
If Len(Reponse) = 0 Then Exit Sub
strSQL = "Select top " & CInt(Reponse) & " [Champ1], [Champ2], ... from
TaTable "
strSQL = strSQL & " Order by [Champ1];"
Set qry = CurrentDb.CreateQueryDef("qryTemp", strSQL)
DoCmd.OpenQuery "qryTemp"
CurrentDb.QueryDefs.Delete "qryTemp"
End Sub

A toi d'adapter avec les noms de tes champs et de préciser l'orde Asc/Desc
suivant le cas.

(Le cas classique : les 5 meilleurs clients en terme de CA.)

A+
Eric

Avatar
Arlequin
Merci de la réponse, mais j'ai oublié de te dire qu'en fait cet requête ne
servait que pour un état. Donc en fait je ne l'ouvre jamais.

Merci

"Eric" a écrit dans le message de
news:
"Arlequin" écrivait
news:40d59355$0$280$:

Bonjour

Dans une requête, j'aimerais que dans ses propriétés, les premières
valeurs soient une variable, dans le genre nbre=inputbox("Combien en
voulez vous?") J'ai essayé un module mais je dois mal m'y prendre.

Merci d'avance de votre aide.





Bonjour Arlequin,

Dans un module standard :
Sub test()
Dim Reponse As String, strSQL As String, qry As DAO.QueryDef
Reponse = InputBox("Nb d'éléments", "Demande de saisie", 1)
If Len(Reponse) = 0 Then Exit Sub
strSQL = "Select top " & CInt(Reponse) & " [Champ1], [Champ2], ...
from

TaTable "
strSQL = strSQL & " Order by [Champ1];"
Set qry = CurrentDb.CreateQueryDef("qryTemp", strSQL)
DoCmd.OpenQuery "qryTemp"
CurrentDb.QueryDefs.Delete "qryTemp"
End Sub

A toi d'adapter avec les noms de tes champs et de préciser l'orde Asc/Desc
suivant le cas.

(Le cas classique : les 5 meilleurs clients en terme de CA.)

A+
Eric






Avatar
Eric
re,

Dès lors que tu veux donner la possibilité de définir le Top n et comme
il n'est pas possible de le paramétrer directement dans la requête, il te
reste que la solution suivante : au lancement de la demande d'ouverture
de l'état, définir le sql et l'affecter en mode Design.

Private Sub Report_Open(Cancel As Integer)
Dim Reponse As String, strSQL As String
Reponse = InputBox("Nb d'éléments", "Demande de saisie", 1)
If Len(Reponse) = 0 Then Cancel = True: Exit Sub
strSQL = "Select top " & CInt(Reponse) & " [Champ1], [Champ2], ...
from TaTable "
strSQL = strSQL & " Order by [Champ1];"
'Ouverture en mode Design et affectation du SQL
Dim e As Report
Set e = Reports("NomEtat")
e.RecordSource = strSQL
End Sub

A+
Eric


"Arlequin" écrivait
news:40d5af30$0$290$:

Merci de la réponse, mais j'ai oublié de te dire qu'en fait cet
requête ne servait que pour un état. Donc en fait je ne l'ouvre
jamais.

Merci

"Eric" a écrit dans le message de
news:
"Arlequin" écrivait
news:40d59355$0$280$:

Bonjour

Dans une requête, j'aimerais que dans ses propriétés, les premières
valeurs soient une variable, dans le genre nbre=inputbox("Combien
en voulez vous?") J'ai essayé un module mais je dois mal m'y
prendre.

Merci d'avance de votre aide.





Bonjour Arlequin,

Dans un module standard :
Sub test()
Dim Reponse As String, strSQL As String, qry As DAO.QueryDef
Reponse = InputBox("Nb d'éléments", "Demande de saisie", 1)
If Len(Reponse) = 0 Then Exit Sub
strSQL = "Select top " & CInt(Reponse) & " [Champ1], [Champ2],
...
from

TaTable "
strSQL = strSQL & " Order by [Champ1];"
Set qry = CurrentDb.CreateQueryDef("qryTemp", strSQL)
DoCmd.OpenQuery "qryTemp"
CurrentDb.QueryDefs.Delete "qryTemp"
End Sub

A toi d'adapter avec les noms de tes champs et de préciser l'orde
Asc/Desc suivant le cas.

(Le cas classique : les 5 meilleurs clients en terme de CA.)

A+
Eric











Avatar
Eric
Ooops !!!

Y a pas d'ouverture en mode Design,
Juste une affectation du nouveau SQL derniere ligne de la proc en utilisant
l'objet Report.

Eric

Eric écrivait

re,

Dès lors que tu veux donner la possibilité de définir le Top n et
comme il n'est pas possible de le paramétrer directement dans la
requête, il te reste que la solution suivante : au lancement de la
demande d'ouverture de l'état, définir le sql et l'affecter en mode
Design.

Private Sub Report_Open(Cancel As Integer)
Dim Reponse As String, strSQL As String
Reponse = InputBox("Nb d'éléments", "Demande de saisie", 1)
If Len(Reponse) = 0 Then Cancel = True: Exit Sub
strSQL = "Select top " & CInt(Reponse) & " [Champ1], [Champ2], ...
from TaTable "
strSQL = strSQL & " Order by [Champ1];"
'Ouverture en mode Design et affectation du SQL
Dim e As Report
Set e = Reports("NomEtat")
e.RecordSource = strSQL
End Sub

A+
Eric




Avatar
Arlequin
Merci encore une fois

"Eric" a écrit dans le message de
news:
Ooops !!!

Y a pas d'ouverture en mode Design,
Juste une affectation du nouveau SQL derniere ligne de la proc en
utilisant

l'objet Report.

Eric

Eric écrivait

re,

Dès lors que tu veux donner la possibilité de définir le Top n et
comme il n'est pas possible de le paramétrer directement dans la
requête, il te reste que la solution suivante : au lancement de la
demande d'ouverture de l'état, définir le sql et l'affecter en mode
Design.

Private Sub Report_Open(Cancel As Integer)
Dim Reponse As String, strSQL As String
Reponse = InputBox("Nb d'éléments", "Demande de saisie", 1)
If Len(Reponse) = 0 Then Cancel = True: Exit Sub
strSQL = "Select top " & CInt(Reponse) & " [Champ1], [Champ2], ...
from TaTable "
strSQL = strSQL & " Order by [Champ1];"
'Ouverture en mode Design et affectation du SQL
Dim e As Report
Set e = Reports("NomEtat")
e.RecordSource = strSQL
End Sub

A+
Eric