[Access] et vba
biloue
Messages postés
82
Date d'inscription
Statut
Membre
Dernière intervention
-
biloue Messages postés 82 Date d'inscription Statut Membre Dernière intervention -
biloue Messages postés 82 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je travail actuellement sur access et vba. J'éxécute des requetes à partir de vba afin d'obtenir un tri dans ma table. Ce tri varie en fonction des options sélectionnées par l'utilisateur. Après l'éxécution de ma requete j'ouvre un état comprenant le résultat de ma requete.
Mon problème c'est lorsque je veux vérifier si ma requete est vide ou non. Elle se trouve toujours vide. Alors quel lorsque j'affiche l'état j'ai des enregistrements correspondant. Je me suis rendue compte que tant que ma fonction n'était pas terminé la requete ne s'éxécute pas.
Est ce que quelqu'un aurais une idée sur ce qu'il manque à mon prog pour que la requete s'éxécute.
ci joint mon code :
Private Sub Génébutton_Click()
Dim ssql As String 'Requete SQL en text
Dim catcurr As New ADOX.Catalog '
Dim cmdcurr As New ADODB.Command 'Command d'une requete sql
Dim mproc As ADOX.Procedure
catcurr.ActiveConnection = CurrentProject.Connection
Set mproc = catcurr.Procedures("qcartecont") 'Défnition de la requete à modifier "qcartecont"
Set cmdcurr = mproc.Command
ssql = " SELECT NumProcessus.Désignation AS Processus, SSProc.[Sous Processu] AS [Sous processus]" & _
" FROM Ttank INNER JOIN (Ttank AS Ttank_1 INNER JOIN (SSProc INNER JOIN (NumProcessus INNER JOIN qperte ON NumProcessus.NumProc = qperte.Processus) ON SSProc.NumSSProc = qperte.SSProcessus) ON Ttank_1.Num = qperte.PtDep) ON Ttank.Num = qperte.PtArr" & _
" WHERE (((qperte.Processus) = " & Processus.Value & ") AND ((qperte.SSProcessus) = " & SSProcessus.Value & ") AND ((Ttank.Désignation) = " & Chr$(34) & PTArr.Value & Chr$(34) & ") AND ((Ttank_1.Désignation) = " & Chr$(34) & PtDep.Value & Chr$(34) & ")" & _
" AND (qperte.Date)>= [Forms]![frm_carte]![txtdatefrom]" & _
" AND (qperte.Date) <= [Forms]![frm_carte]![txtdateto]" & _
")" & _
" GROUP BY NumProcessus.Désignation, SSProc.[Sous Processu], Ttank_1.Désignation, Ttank.Désignation, qperte.Date, qperte.ConsTmax, qperte.ConsTmin, qperte.ConsVol, qperte.Temps, qperte.Volume;"
'Exécution de la requète
cmdcurr.CommandText = ssql
Set mproc.Command = cmdcurr
Set cmdcurr = Nothing
Set catcurr = Nothing
Set mproc = Nothing
DoCmd.OpenReport "rcartecont", acPreview
End Sub
ps : la requete SQL marche.
Je travail actuellement sur access et vba. J'éxécute des requetes à partir de vba afin d'obtenir un tri dans ma table. Ce tri varie en fonction des options sélectionnées par l'utilisateur. Après l'éxécution de ma requete j'ouvre un état comprenant le résultat de ma requete.
Mon problème c'est lorsque je veux vérifier si ma requete est vide ou non. Elle se trouve toujours vide. Alors quel lorsque j'affiche l'état j'ai des enregistrements correspondant. Je me suis rendue compte que tant que ma fonction n'était pas terminé la requete ne s'éxécute pas.
Est ce que quelqu'un aurais une idée sur ce qu'il manque à mon prog pour que la requete s'éxécute.
ci joint mon code :
Private Sub Génébutton_Click()
Dim ssql As String 'Requete SQL en text
Dim catcurr As New ADOX.Catalog '
Dim cmdcurr As New ADODB.Command 'Command d'une requete sql
Dim mproc As ADOX.Procedure
catcurr.ActiveConnection = CurrentProject.Connection
Set mproc = catcurr.Procedures("qcartecont") 'Défnition de la requete à modifier "qcartecont"
Set cmdcurr = mproc.Command
ssql = " SELECT NumProcessus.Désignation AS Processus, SSProc.[Sous Processu] AS [Sous processus]" & _
" FROM Ttank INNER JOIN (Ttank AS Ttank_1 INNER JOIN (SSProc INNER JOIN (NumProcessus INNER JOIN qperte ON NumProcessus.NumProc = qperte.Processus) ON SSProc.NumSSProc = qperte.SSProcessus) ON Ttank_1.Num = qperte.PtDep) ON Ttank.Num = qperte.PtArr" & _
" WHERE (((qperte.Processus) = " & Processus.Value & ") AND ((qperte.SSProcessus) = " & SSProcessus.Value & ") AND ((Ttank.Désignation) = " & Chr$(34) & PTArr.Value & Chr$(34) & ") AND ((Ttank_1.Désignation) = " & Chr$(34) & PtDep.Value & Chr$(34) & ")" & _
" AND (qperte.Date)>= [Forms]![frm_carte]![txtdatefrom]" & _
" AND (qperte.Date) <= [Forms]![frm_carte]![txtdateto]" & _
")" & _
" GROUP BY NumProcessus.Désignation, SSProc.[Sous Processu], Ttank_1.Désignation, Ttank.Désignation, qperte.Date, qperte.ConsTmax, qperte.ConsTmin, qperte.ConsVol, qperte.Temps, qperte.Volume;"
'Exécution de la requète
cmdcurr.CommandText = ssql
Set mproc.Command = cmdcurr
Set cmdcurr = Nothing
Set catcurr = Nothing
Set mproc = Nothing
DoCmd.OpenReport "rcartecont", acPreview
End Sub
ps : la requete SQL marche.
A voir également:
- [Access] et vba
- Acer quick access - Forum logiciel systeme
- Quick Access service ✓ - Forum PC portable
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
- Access appdata - Guide
- Excel compter cellule couleur sans vba - Guide
6 réponses
J'aimerais que tu m'explique à quoi te sert tous ce code sql??? Tu initialise la commande et tu la ferme aussitot... Je vois pas ce que tu veux faire avec ici avec une requete de sélection...Comprend pas
soit ton état a pour source la requête et tu vas obtenir tes résultats
par contre si tu modifies la source il faut lancer un requery
par contre si tu modifies la source il faut lancer un requery
Mon état à pour source la requete mais lui est bien rafraichie. Par contre si je veux vérifier si ma requete et vide, elle est toujours vide. Le requery peur marcher mais je sais pas sur quoi le faire. Dois je le faire sur la command ou la procedure ?
Merci
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'utilise ma requete comme source de mon état et ça marche très bien. Mon souci c'est que ci je veut rajouter un test sur le nombre d'enregistrement dans ma requete elle apparait toujours vide tant que la fonction vba n'est pas terminée. Elle est raffraichie qu'une fois la fonction terminée.
J'ai essayé avec un requery mais je ne sais pas comment le placer puisqu'il ne marche qu'avec un recordset.
J'ai essayé avec un requery mais je ne sais pas comment le placer puisqu'il ne marche qu'avec un recordset.