Requêtes ACCESS paramètrables via VB ??

antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 - 28 juin 2007 à 16:21
chaudier37 Messages postés 209 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 juillet 2009 - 11 juil. 2008 à 22:50
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

cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
28 juin 2007 à 19:49
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

 
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
28 juin 2007 à 20:51
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

 
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
29 juin 2007 à 08:15
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+
0
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 3
29 juin 2007 à 14:20
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bmjidou Messages postés 4 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 10 juillet 2009
10 avril 2008 à 01:58
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
0
chaudier37 Messages postés 209 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 15 juillet 2009
11 juil. 2008 à 22:50
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
0
Rejoignez-nous