Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

besoin de votre aide avec une requete paramétrée access

2 réponses
Avatar
dav
j'ai lu quelque part que comtpe tenu que les requetes paramétrée sont
pré compilées il est préférable de les utiliser plutot que de créer des
requetes sql dans le code.
j'ai donc créé mes requetes paramétrées dans access.
elles se nomment :

requete1
requete2
requete3

mais avec QueryDefs, est ce mieux ? je voudrais permettre aux
utilisateurs d'en créer de nouvelles, or ils ne disposent pas d'access
sur leurs postes.
merci,
dav

2 réponses

Avatar
christophe-pasde
Bonjour,

???????

1) Il n'y a pas besoin d'ACCESS sur le poste il faut avoir DAO??.dll ou
MDAC suivant quel modele d'accès aux données tu choisis. Cette dll que
tu as choisi dans projet references, sera incluse dans ton install.

2) mais avec QueryDefs, est ce mieux ?

Querydefs est la collection des objets querydef sans "s" d'une base de
donnée.

Pour utiliser une requete nommée "ta" en DAO, dans une base située à
emplacementbase (C:machinmabase.mdb) tu fais :

Dim bd As Database
Dim rq As QueryDef
Dim rst As Recordset

Set bd = OpenDatabase(mEmplacementBase) ' ouvre la base de donnée
Set rq = bd.QueryDefs("ta") ' affecte à l'objet Querydef la requete "ta"
'prise dans la collection querydefs de la base

set rq.parameters("idparam") = myparam ' affecte les parametres de la '
'requete : parameters collection des paramètres de la requête

set rst= rq.openrecordset 'ouvre la requete


Bon si tu fais ça et que la requete ta n'existe pas la ligne 2 te
renvoie une erreur recupérable.
Donc comment faire pour être sur qu'elle existe et si elle n'existe pas
comment la créer ? (une nouvelle crée par l'utilisateur par exemple)
code précédent mais modifié:


Dim bd As Database
Dim rq As QueryDef
Dim rst As Recordset
Dim existe As Boolean
Dim a$
Dim AppuiMes As BDappuimesures
Dim bdappui As BDappuimesure

existe = False
Set bd = OpenDatabase(mEmplacementBase)

' parcourt la collkection des requêtes pour savoir si "ta" existe

For Each rq In bd.QueryDefs
If rq.Name = "ta" Then existe = True
Next rq

'si existe pas la créer là à toi de faire ce qu'il faut pour obtenir a$
'par action de l'utilisateur

If Not existe Then
a$ = "PARAMETERS idchantier Long;" _
& "SELECT Tableappuimesure.idappui, Tableappuimesure.ptrchantier,
Tableappuimesure.nom, Tableappuimesure.idpoint,
Tableappuimesure.systemecoord, Tableappuimesure.Xmes,
Tableappuimesure.Ymes, Tableappuimesure.Zmes, Tableappuimesure.Xcalc,
Tableappuimesure.Ycalc " _
& "From Tableappuimesure " _
& "WHERE (((Tableappuimesure.ptrchantier)=[idchantier]));"

' et affecte l'objet à rq


Set rq = bd.CreateQueryDef("ta", a$)
Else

Set rq = bd.QueryDefs("ta")
End If

rq.Parameters("idchantier") = idchantier
ouvre la requete

Set rst = rq.OpenRecordset


A+

Christophe



dav a écrit :
j'ai lu quelque part que comtpe tenu que les requetes paramétrée sont
pré compilées il est préférable de les utiliser plutot que de créer des
requetes sql dans le code.
j'ai donc créé mes requetes paramétrées dans access.
elles se nomment :

requete1
requete2
requete3

mais avec QueryDefs, est ce mieux ? je voudrais permettre aux
utilisateurs d'en créer de nouvelles, or ils ne disposent pas d'access
sur leurs postes.
merci,
dav


Avatar
Quasimodo
dav wrote on 11/29/2004 :
j'ai lu quelque part que comtpe tenu que les requetes paramétrée sont pré
compilées il est préférable de les utiliser plutot que de créer des requetes
sql dans le code.
j'ai donc créé mes requetes paramétrées dans access.
elles se nomment :

requete1
requete2
requete3

mais avec QueryDefs, est ce mieux ? je voudrais permettre aux utilisateurs
d'en créer de nouvelles, or ils ne disposent pas d'access sur leurs postes.
merci,
dav



Bonjour,
Attention, MS Access ne compile pas les requetes paramétrée ou non.
Les grands systèmes de gestion de base données tel que MS SQL Server,
Oracle ... oui.
Mais développer en portant un maximum le code sql sous formes de
requetes paramétrée ou non (compilées ou non), est la meilleur des
méthodes de développement.

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com