OVH Cloud OVH Cloud

querydef

3 réponses
Avatar
thierry
hello,

je travaille en VB6 avec DAO. Je fais un querrydef sur une base de
donnée sous access. En ouvrant ma base de donnée Access je me rend
compte que mes querydef ont été mis dans les requètes. Existe t'il un
moyen d'effacer ses requètes une fois que le programme se termine?

Merci par avance.

3 réponses

Avatar
Eric
Bonsoir,

Je suppose que tu crées tes requêtes par des instructions
du genre :

Dim bd as database, rq as Querydef, etc ...
set bd=OpenDatabase (....)
set rq½.CreateQuerydef("Temp","Select * from tatable;")


A la fin de ton traitement, dés lors que tu n'a plus
besoin de la requête nommée Temp, tu passes la commande :
bd.Querydefs.Delete "Temp"

Ainsi la requête est supprimée dans ta base.

Une autre solution consiste à manipuler des recordset dont
la source est du sql plutôt que des Querydef, ils ne sont
pas créés dans ta bd Access.

Voila
A+
Eric
-----Message d'origine-----
hello,

je travaille en VB6 avec DAO. Je fais un querrydef sur


une base de
donnée sous access. En ouvrant ma base de donnée Access


je me rend
compte que mes querydef ont été mis dans les requètes.


Existe t'il un
moyen d'effacer ses requètes une fois que le programme se


termine?

Merci par avance.


.



Avatar
Christophe
Bonjour,

Comme conseillé par Eric, utilise la collection Querydefs de l'objet base de
donnée, qui contient tous les querydef de cette base.

Mais concernant l'utilisation de requete de type :
set rq½.CreateQuerydef("Temp","Select * from tatable;")
c'est à éviter si l'on veut des performances.
Il est préférable de créer ces requetes de manières permanentes sous access
et les appeler par leur nom

set rq½.querydefs("Rqmachin")

si il y a des paramètres les déclarer sous access (popup_menu parametre en
mode création de requête)
puis dans le code:
rq.parameters("Myparam") = Param ' variable de même type
enfin
set rst=rq.openrecordset pour utiliser les enregistrements.

Cette technique permet une grande rapidité de réponse des requetes, car elle
sont compilée par access et non interprétées par VB.
De plus cela permet de facilité grandement le déboggage et les modifs
touchant à la structure de la bd.

Bon il y a toujours les cas où l'on doit creer une requete à la volée et là
c'est la chaine sql qui reste la solution

christophe vergon


"Eric" a écrit dans le message de news:
104bc01c3f27e$ba1e87f0$
Bonsoir,

Je suppose que tu crées tes requêtes par des instructions
du genre :

Dim bd as database, rq as Querydef, etc ...
set bd=OpenDatabase (....)
set rq½.CreateQuerydef("Temp","Select * from tatable;")


A la fin de ton traitement, dés lors que tu n'a plus
besoin de la requête nommée Temp, tu passes la commande :
bd.Querydefs.Delete "Temp"

Ainsi la requête est supprimée dans ta base.

Une autre solution consiste à manipuler des recordset dont
la source est du sql plutôt que des Querydef, ils ne sont
pas créés dans ta bd Access.

Voila
A+
Eric
-----Message d'origine-----
hello,

je travaille en VB6 avec DAO. Je fais un querrydef sur


une base de
donnée sous access. En ouvrant ma base de donnée Access


je me rend
compte que mes querydef ont été mis dans les requètes.


Existe t'il un
moyen d'effacer ses requètes une fois que le programme se


termine?

Merci par avance.


.



Avatar
thierry
je viens d'essayer ce que vous m'avez répondu et cela fonctionne.
Merci beaucoup


Le Fri, 13 Feb 2004 17:22:10 +0100, thierry
a écrit :

hello,

je travaille en VB6 avec DAO. Je fais un querrydef sur une base de
donnée sous access. En ouvrant ma base de donnée Access je me rend
compte que mes querydef ont été mis dans les requètes. Existe t'il un
moyen d'effacer ses requètes une fois que le programme se termine?

Merci par avance.