Requete VBA contre requete VB6+access

sokhay3 Messages postés 18 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 13 novembre 2008 - 11 août 2006 à 12:00
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 17 août 2006 à 11:22
bonjour à tous

je viens de recuperer un projet VBA que je dois migrer en VB6 + access

mon probleme se situe au niveau des requetes prealablement créées sur access : il s'agit de requete selection utilisant des fonctions (dans un module )

exemple de requete,

select monchamp1, maFonctionDeCalcul (monChamp2) FROM maTable

si j'execute cette fonction dans access, ben forcement ça marche
si j'essaie d'executer cette requete depuis VB6, ça marche pas (objet adodb.command). l'erreur retournée est "Fonction maFonctionDeCalcul' non définie dans l'expression."
pareil si j'essaie maConnection.execute "select monchamp1, maFonctionDeCalcul (monChamp2) FROM maTable"

quelqu'un a t'il une idée pour resoudre ce probleme

par avance merci pour vos reponses et suggestions

test

22 réponses

sokhay3 Messages postés 18 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 13 novembre 2008
17 août 2006 à 09:41
ça plante sur : objAccess.DoCmd.OpenQuery "maRequete"

Est-ce que le chemin et le nom de la base sont bien OK ? OUI
"maRequete" est-il le nom exact de la requête telle que créée dans Access ? OUI
 et il n'y a pas de .LDB dans le repertoire de la base lorsque le programme est fermé.

sinon j'ai trouvé un autre morceau de code qui semble fonctionner :


Private Sub Form_Load()

Dim accApp As Access.Application

 
    Set accApp = CreateObject("Access.application")
    accApp.OpenCurrentDatabase ("C:\maBDD.mdb")
    accApp.DoCmd.OpenQuery ("maRequete")
    Set accApp = Nothing

End Sub


il faut juste la reference à microsoft access, et pas besoin de dao!
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 août 2006 à 11:22
Désolé, un oubli de ma part, effectivement ça prenait le OpenCurrentDatabase... avant DoCmd

Le CreateObject n'est pas nécessaire, par contre, si tu utilises New Access.Application


Pour DAO, ça dépend si tu penses faire de nouvelles requêtes vers la base.

À ce moment, tu devras déclarer DAO et le Set Db = Workspaces(0).Opendatabase...

Et ensuite utiliser des requêtes personnalisées

Set Rs = Db.Openrecordset("Select * from....)

MPi
0
Rejoignez-nous