Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2011, 17h25   #1
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Par défaut Requête paramétrable au chargement

Bonjour à tous,
J'ai un petit soucis:
j'ai un formulaire qui me liste le nombre de mes ventes depuis le X.
X doit être paramétrable et modifiable via un contrôle calendrier.
Dans ma requête, j'ai donc utiliser un paramètre :

Code sql :
1
2
3
 
PARAMETERS Annee DateTime;
SELECT * FROM latable WHERE [Annee] < madate
Seulement au chargement de mon formulaire, je n'arrive pas à incorporer cette date via le vba
Code vba :
1
2
3
4
5
6
7
8
9
Private Sub Form_Load()
Dim qdf As DAO.QueryDef
Dim oRs As DAO.Recordset
 
    Set qdf = CurrentDb.QueryDefs("rqLaRequete")
    qdf.Parameters("Annee") = DateTime.Date - 183 ' par défaut c'est moins 183 jour 
    Set oRs = qdf.OpenRecordset(dbOpenSnapshot)
 
End Sub

Malgré mon code, il demande toujours le paramètre Annee.

Merci pour votre aide
__________________
Le savoir est une arme alors soyons armés
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 17h45   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
salut,

quelle valeur retourne ton DateTime.Date ?

j'utilise le meme code, et pas de probleme particulier
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 08h24   #3
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Bonjour
Lorsque j'affiche cette valeur (via un MsgBox), j'obtiens la date du jour sous la forme jj/mm/aaaa
Aujourd'hui par exemple, c'est 14/02/2011


J'ai un petit doute sur quelque chose. En fait, cette requête est utilisée dans un graphique donc elle est "transformée".
Est ce que ça pourrai venir de là ?
Je précise que dans la requête transformée, je n'ai pas de paramètre
Elle ressemble à ça :
Code sql :
TRANSFROM SUM(rqLaRequete.moyenne) AS SommeDemoyenne SELECT Div FROM rqLaRequete

Div et moyenne sont bien des colonnes de ma requête "rqLaRequete")
__________________
Le savoir est une arme alors soyons armés
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 14h55   #4
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Une deuxième chose pourrait posée problème
En réalité, ma requête est un peu plus complexe que je veux bien le décrire .
En effet, Il y a plusieurs jointures et surtout le paramètre se trouve en réalité dans une sous requête
Si je simplifie:
Code sql :
1
2
3
PARAMETERS Annee DateTime;
SELECT * FROM latable t1 INNER JOIN lautretable t2 ON t1.id = t2.idAutre 
WHERE Div IN (SELECT DISTINCT Div FROM latable WHERE  [Annee] < madate


J'ai également voulu ne pas mettre de paramètre et indiquer que la date doit être celle de mon contrôle mais rien n'y fait
La requête est alors comme ça :
Code sql :
1
2
3
4
5
SELECT * FROM latable t1 INNER JOIN lautretable t2 ON t1.id = t2.idAutre 
WHERE Div IN (
   SELECT DISTINCT Div FROM latable 
   WHERE  [Formulaires]![test]![TxtCalendrier] < madate
)
J'ai des résultat quand je lance ma requête depuis l'éditeur SQL
Par contre quand je lance mon formulaire, j'ai une erreur
Microsoft Jet ne reconnait pas [Formulaires]![test]![TxtCalendrier] en tant que nom de champs ou expression correct
Je précise que TxtCalendrier est une zone de texte toute bête

Je tourne un peu en rond sans résultat
__________________
Le savoir est une arme alors soyons armés
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 16h34   #5
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Salut,

Tu as essayé avec 1 paramètre :

Code sql :
1
2
3
4
5
6
PARAMETERS [Forms]![test]![TxtCalendrier] DateTime;
SELECT * FROM latable t1 INNER JOIN lautretable t2 ON t1.id = t2.idAutre 
WHERE Div IN (
   SELECT DISTINCT Div FROM latable 
   WHERE  [Forms]![test]![TxtCalendrier] < madate
)

Après dans le code VBA :

Code :
1
2
3
4
5
6
7
8
9
Private Sub Form_Load()
Dim qdf As DAO.QueryDef
Dim oRs As DAO.Recordset
 
    Set qdf = CurrentDb.QueryDefs("rqLaRequete")
    qdf.Parameters("[Forms]![test]![TxtCalendrier]") = [Forms]![test]![TxtCalendrier]  
    Set oRs = qdf.OpenRecordset()
 
End Sub
A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h52.


 
 
 
 
Partenaires

Hébergement Web