Ce code explique comment faire pour utiliser ou créer une requête SQL dans un formulaire sans être obliger d'avoir 200 requêtes enregistrées sous Access. On gère tout en interne et cela de manière transparente.
Source / Exemple :
Option Compare Database
Option Explicit
Dim sDateDeb As String ' var. DateDebut Rapport
Dim sDateFin As String ' var. DateFin Rapport
Dim sSQL As String ' var. SQL->chaîne
Dim DB As Database ' var. DB est une BD
Dim myRec As Recordset ' var. Enregistrement
Set db = CurrentDb
'on récupère les dates de début et fin de rapport des contrôles txt_DateDebut
.
Me![txt_DateDebut].SetFocus
sDateDeb = Me![txt_DateDebut].Text
Me![txt_DateFin].SetFocus
sDateFin = Me![txt_DateFin].Text
On Error GoTo nonTrouve
' Traitement des erreurs : si erreur (enregistrement non trouve) alors passe au suivant
nonTrouve:
Resume Next
'REQUETE SQL -> NOMBRE DE PERSONNES ACCUEILLIES
sSQL = "TRANSFORM Count(activite.[N° Client]) AS CompteDeN° Client]" & _
" SELECT clients.[nom client], Count(clients.[no client]) AS total" & _
" FROM clients INNER JOIN activite ON clients.[no client] = activite.[N° Client]" & _
" WHERE (((activite.[Type financement])='chèques' Or (activite.[Type financement])='monnaie' Or (activite.[Type financement])='carte' Or (activite.[Type financement])='gratuit') AND ((activite.[Dare accueil]) Between #" & sdatedeb & "# And #" & sDatefin & "#))" & _
" GROUP BY clients.[nom client] PIVOT activite.[Type financement]; "
'assigne à la variable myRec la database et la requête conjointe
Set myrec = db.OpenRecordset(sSQL)
Me![nb accueils].SetFocus
myrec.MoveLast 'on balaie les enregistrements
myrec.MoveFirst
Me![nb accueils].Text = myrec.RecordCount
Conclusion :
Ce petit listing est un exemple de code dans un formulaire qui me permet de calculer le RAPPORT DACTIVITE de ma société dune pèriode choisie. Avec ce système je gère tous les paramètres financiers et les données liées à notre activité !
En ce moment je développe un moteur en VBA qui générera lui-même la requête SQL suivant les critères choisis (cases à cocher), cest un challenge car les requêtes suivant les paramètres nont pas le même squelette étant donné quil faut prendre en compte parfois les relations croisées entre plusieurs tables.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.