Utiliser en interne une requête sql dans un formulaire

Soyez le premier à donner votre avis sur cette source.

Vue 19 076 fois - Téléchargée 882 fois

Description

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 D’ACTIVITE de ma société d’une 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), c’est un challenge car les requêtes suivant les paramètres n’ont pas le même squelette étant donné qu’il faut prendre en compte parfois les relations croisées entre plusieurs tables.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
donnes nous sinon un brin de code (construction de ta requete) on t'indiqueras comment greffer un Replace(sValeur, "'", "''")
econs
Messages postés
4066
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
18 -
Ce que tente de t'expliquer Renfield, c'est qu'à chaque fois que tu as une apostrophe dans ta requête, tu dois la remplacer par une double apostrophe
' devient ''
Ca évitera à ton moteur SQL de croire que la requête se termine sur le '
pasco05
Messages postés
13
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
13 décembre 2007
-
j'oubliai je travail dans un Combobox qui ce trouve dans une feuille de calcul excel.
ensuite je recupere la valeur pour la mettre dans une cellule.
pasco05
Messages postés
13
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
13 décembre 2007
-
c'est à dir ?
je travail sous excel et je lance des requetes SQL sur une base de données access pour recupérer des informations.

mon projet et d'ouvrir un combobox avec 1 colonne.

1 - Sur entrer dans le Combobox1 je lance ma requete qui recupere les données stocké de ma Base dans la table Liste Champ1

- Jusque la pas de problème.

3 - j'éfectue un test (REQUETE SQL)pour controler si un enregistrement de la table Liste corespond à ma nouvelle saisie, si tel est le cas je n'enregistre pas ma nouvelle saisie (cas ou une autre perssonne aurai déjà saisie cette valeur entre le moment ou j'ai ouvert Combobox1 et le moment ou je sort de celui-ci).

3 - si ma saisie ne corespond pas à un élément de Combobox1, je l'enregistre dans ma table Liste.
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
dupplique tes quotes, elles seront interpretées comme une quote, et non comme étant un separateur de texte

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.