begin process at 2012 02 17 01:47:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBA

 > UTILISER EN INTERNE UNE REQUÊTE SQL DANS UN FORMULAIRE

UTILISER EN INTERNE UNE REQUÊTE SQL DANS UN FORMULAIRE


 Information sur la source

Note :
7,08 / 10 - par 12 personnes
7,08 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VBA Classé sous :currentdb, openrecordset, sql, requete Niveau :Débutant Date de création :28/06/2000 Vu / téléchargé :16 366 / 715

Auteur : DimitriTravailloux

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 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

  • 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
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.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture OUTLOOK ATTACHEMENT SAVER par MoiLafouine
Source avec Zip GESTION PERSONNEL par oudlarbi
Source avec Zip Source avec une capture CALENDRIER EN VBA POUR EXCEL 2010 par nounou94
Source avec Zip Source avec une capture MANIPULER LES FENETRES ENFANT D'EXCEL par bigfish_le vrai
Source avec Zip Source avec une capture COLLECTION ID par Le Pivert

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture EXECUTEUR DE REQUETE SQL (ORIENTÉ ORACLE) par denpx
Source avec Zip Source .NET (Dotnet) UTILISATION DE SQLITE AVEC UNE CLASSE DE CONNECTION par lucdr
Source avec Zip Source avec une capture INTEGRER UN SIMPLE ÉDITEUR POUR EXPRESSIONS SQL DANS VOS PRO... par chaibat05
Source .NET (Dotnet) CONNEXION ET REQUETES SQL SERVER AVEC VB.NET par DarkCid
Source avec Zip REQUETEUR UNIVERSEL par djls

Commentaires et avis

Commentaire de hball le 19/11/2003 17:39:30

bouuuu
ça marche pas

j'ai un bug sur :
    Set myRec = DB.OpenRecordset(sSQL)

help

Commentaire de pasco05 le 20/03/2008 13:55:36

moi aussi ça ne fonctionne pas quand il y à une apostrophe dans mon texte.

Commentaire de Renfield le 20/03/2008 14:55:30 administrateur CS

dupplique tes quotes, elles seront interpretées comme une quote, et non comme étant un separateur de texte

Commentaire de pasco05 le 20/03/2008 19:10:36

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.

Commentaire de pasco05 le 20/03/2008 19:14:13

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.

Commentaire de econs le 20/03/2008 20:25:22 administrateur CS

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 '

Commentaire de Renfield le 21/03/2008 09:12:32 administrateur CS

donnes nous sinon un brin de code (construction de ta requete) on t'indiqueras comment greffer un Replace(sValeur, "'", "''")

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Compter les enregistrements d'une requete SQL [ par JCLK ] Je travaille habituellement avec ColdFusion, et j'ai du mal a transformer mes programmes en ASP.Je voudrais compter les enregistrements d'une requete Probleme requete SQL [ par steph ] Bonjour à touscomment faire dans une requete SQL pour sélectionner des enregistrements avec une clause WHERE faisant référence à une TEXTBOX du formul URGENT!! SQL et Excel [ par HicHic ] Je veux creer une boite de dialogue qui me sert à un choix multiple comme criteres de selection dans une requete SQL. et recuperer les resultats dans requete sql sous VB [ par Valerie ] Je souhaite faire une requete sql sous vb.Dans cette requete je doit prendre certain champs obligatoire et d'autre uniquement si un champ est a vrai d Requete SQL pour touver un maximum dans une colonne [ par Alain ] Comment trouver un maximum dans une colonne????Voici ma ligne en VB6, mais cela ne fonctionne pas!Recordset.open "SELECT MAX(colonne) from table"Comme Requete SQL [ par funtay ] bonjour, j'ai un problème de syntaxe dans une requete SQL.En fait ,j'ai une date de début (c'est un maskedbox( txt_datedeb)) et une date de fin (c'est Afficher ds dataGrid le rsltat requete SQL [ par tom ] Comment puis je afficher dans un dataGrid le résultat d'une requete SQL que je viens juste de faire avant, et ceci avec des réponses differentes par c constructeur de requete sql [ par thierry ] eh salut les gars et les fillesquelqu'un aurit il le code vb pour pouvoir construire des requetes sqltchaoa+ constructeur de requete sql [ par thierry ] eh salut les gars et les fillesquelqu'un aurait il le code vb pour pouvoir construire des requetes sql cad une procedure qui les construits suivants p Récupérer un résultat de requete SQL sur plusieures tables... [ par Timothee ] Bonjour, je programme avec une base donnée DBaseIV et je voudrais savoir comment récupérer le résultat d'une requete du style "SELECT Champs1 FROM tab


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales