Requêtes ACCESS paramètrables via VB ??

Signaler
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
-
Messages postés
209
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
15 juillet 2009
-
Hello tout l'monde

- J'ai développé une appli en VB, lié à une base Access.
- Dans VB, j'ai un module regroupant toutes mes requêtes, paramètrables. OK (?)

Questions :
- Est-il possible de supprimer le module VB avec mes requêtes ?
- Pour se faire je voudrais stocker toutes les requêtes dans ACCESS.
- Mon problème : en VB, quelle synthaxe dois-je utiliser afin de faire appel à une requête Access en entrant des paramêtres nécessaires pour l'éxécution de la requête ?

ex (abrégé) : dans l'appli, l'utilisateur veut tous les clients de prénom "Antoine".
      - actuellement 
            Sub CmdRecherche_OnClik               Rqte "Select * from clients where prenom '" & lblPrénom.text & "'"
               Rst1.Open Rqte, BaseConnect, adOpenStatic, adLockReadOnly
               'Suite
            End Sub

   - J'aimerais donc pouvoir stocker "Rqte" dans access, en ayant un "prénom" à entrer en paramètre.
   - Quelle synthaxe utiliser en VB pour appeler cette requête ?

6 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Salut,

Pourquoi stocké dnas Access toutes tes requêtes ? Je ne comprend pas trop l'utilité

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Salut,

Ce qui serait intéressant de faire c'est de donner un non à ta requête et comme tu le souhaites, de la stockée dans une table Requête.
En partant de là on pourrait faire un truc du genre :

1 - Faut stocké dans ta table un format du genre :
      Non requête  : Toto
      Syntaxe : Select * from clients where prenom = '" & Param & "'"

2 - Suivant le choix de l'user, appeller Toto
3 - Rechercher dans la chaine(syntaxe) le mot Param
4 - Remplacer celui-ci par ce que tu recherches ou la propriété text d'un Ctrl
5 - Lancer la requête

Du moins c'est comme cela que j'esseyerai de faire la chose....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Salut,

Exploreur, ce qui pourrait etre fait c'est un module dédié au requete dans lequel il y aurait un Select case. On appelerait ce module avec 2 arguements: 1 pour identifier la requete et l'autre pour la donnée a mettre dans la clause Where.

Mais ca revient peut etre au meme finalement.

A+
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
j'ai mis toutes mes requêtes dans un module, comme tu l'as indiqué, mais mon "vrai" problème c'est que certaines requêtes sont très longues à éxécuter. De ce fait, je voulais toutes les stocker dans Access pour peut-être avoir une éxécution + rapide, mon problème étant les paramètres pour chaque requête, à mettre dans l'appel de la requête sous VB. J'aurais voulu savoir si c'était possible et la synthax... voilà... je sais pas si mon message sera lu et dans ce cas "compris" lol mais bon... pas grave, apparement ça ne changera rien au temps de l'exécution donc je vais rester sur mon schéma actuel, soit un module destiné à toutes mes requêtes.
Messages postés
4
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
10 juillet 2009

Public Sub mesemprunt(v As String)
On Error GoTo Ligne
Set malisteemprunt = New ADODB.Recordset

'If temprunt.EOF And temprunt.BOF Then Exit Sub
Dim Comm1 As ADODB.Command, Param1 As Parameter
With ct
.CursorLocation = adUseClient
.IsolationLevel = adXactChaos
End With
Set Comm1 = New ADODB.Command
With Comm1
.ActiveConnection = ct
.CommandType = adCmdStoredProc
.CommandText = "rechercheremprunteleve"

End With
Set Param1 = New Parameter
With Param1
.Direction = adParamInput
.Type = adBSTR
.Name = "nueleve"
End With
Comm1.Parameters.Append Param1
Comm1("nueleve").Value = Trim(v)
Set malisteemprunt = Comm1.Execute
Exit Sub
Ligne:
MsgBox err.Description

End Sub
Messages postés
209
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
15 juillet 2009

Bonjour,
je ne sais pas si c'est possible. pour ma part quand j'ai besoin de faire des requêtes par vb j'utilise les macros.
dans une macro j'enregistre l'ouverture des requêtes souhaitées.
ensuite dans vb je mets :
Docmd.set warning false
docmd.run macro"nomdelamacro"
docmd.set warning true

bon courage