Je me connecte via VB6 sur base Access. Je souhaite ajouter un an aux dates
anniversaires des fiches figurantes dans la base de données.
Pour ce faire j'ai pensé à une fonction qui vérifie s'il faut ou non ajouter
l'âge et une requête UPDATE.
Seulement, comment faire pour que VB fasse le calcul grâce à la fonction.
Voici cette idée par la requête (qui fonctionne sous Access, mais pas sous
VB puisque la fonction n'est reconnue que sous forme de texte. Et Access ne
la reconnaît pas (lorsque la requête est exécutée à partir de VB) la
fonction qui figure pourtant dans la base de données.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel Walsh
Salut,
En effet, Access + Jet ont un lien privilégié qui n'existe pas avec VB6 + Jet, en ce sens qu'une fonction publique personnelle définie dans un module standard de Access peut être réutilisée dans une requête SQL, mais pas une fonction VB dans un module VB (ou Delphi, ou C++).
Espérant être utile, Vanderghast, Access MVP
"TEV" wrote in message news:40cdb4a6$0$8743$
Bonjour,
Je me connecte via VB6 sur base Access. Je souhaite ajouter un an aux dates
anniversaires des fiches figurantes dans la base de données.
Pour ce faire j'ai pensé à une fonction qui vérifie s'il faut ou non ajouter
l'âge et une requête UPDATE.
Seulement, comment faire pour que VB fasse le calcul grâce à la fonction. Voici cette idée par la requête (qui fonctionne sous Access, mais pas sous VB puisque la fonction n'est reconnue que sous forme de texte. Et Access ne
la reconnaît pas (lorsque la requête est exécutée à partir de VB) la fonction qui figure pourtant dans la base de données.
En effet, Access + Jet ont un lien privilégié qui n'existe pas avec VB6
+ Jet, en ce sens qu'une fonction publique personnelle définie dans un
module standard de Access peut être réutilisée dans une requête SQL, mais
pas une fonction VB dans un module VB (ou Delphi, ou C++).
Espérant être utile,
Vanderghast, Access MVP
"TEV" <toto@caramail.com> wrote in message
news:40cdb4a6$0$8743$79c14f64@nan-newsreader-04.noos.net...
Bonjour,
Je me connecte via VB6 sur base Access. Je souhaite ajouter un an aux
dates
anniversaires des fiches figurantes dans la base de données.
Pour ce faire j'ai pensé à une fonction qui vérifie s'il faut ou non
ajouter
l'âge et une requête UPDATE.
Seulement, comment faire pour que VB fasse le calcul grâce à la fonction.
Voici cette idée par la requête (qui fonctionne sous Access, mais pas sous
VB puisque la fonction n'est reconnue que sous forme de texte. Et Access
ne
la reconnaît pas (lorsque la requête est exécutée à partir de VB) la
fonction qui figure pourtant dans la base de données.
En effet, Access + Jet ont un lien privilégié qui n'existe pas avec VB6 + Jet, en ce sens qu'une fonction publique personnelle définie dans un module standard de Access peut être réutilisée dans une requête SQL, mais pas une fonction VB dans un module VB (ou Delphi, ou C++).
Espérant être utile, Vanderghast, Access MVP
"TEV" wrote in message news:40cdb4a6$0$8743$
Bonjour,
Je me connecte via VB6 sur base Access. Je souhaite ajouter un an aux dates
anniversaires des fiches figurantes dans la base de données.
Pour ce faire j'ai pensé à une fonction qui vérifie s'il faut ou non ajouter
l'âge et une requête UPDATE.
Seulement, comment faire pour que VB fasse le calcul grâce à la fonction. Voici cette idée par la requête (qui fonctionne sous Access, mais pas sous VB puisque la fonction n'est reconnue que sous forme de texte. Et Access ne
la reconnaît pas (lorsque la requête est exécutée à partir de VB) la fonction qui figure pourtant dans la base de données.
Espérant être utile Oui. Cela m'évite de m'acharner sur cette voie. Par contre je ne vois pas
trop comment faire pour contourner ce problème. Cela m'oblige à ouvrir un recordset, de le parcourir en fournissant les valeurs [dtNaissance] et [Age] permettant d'appeler la fonction, de vérifier la réponse de la fonction pour le cas échéant ou stocker l'id dans un tableau puis de faire en boucle une requête UPDATE avec pour critères les ID contenus dans le tableau ou exécuter cette requête UPDATE mais uniquement avec l'ID remplissant la condition.
Seulement je crains que cela prenne énormément de temps d'exécution. Y aurait - il d'autres façon de faire ?
Christian.
"Michel Walsh" a écrit dans le message de news:
Salut,
En effet, Access + Jet ont un lien privilégié qui n'existe pas avec VB6
+ Jet, en ce sens qu'une fonction publique personnelle définie dans un module standard de Access peut être réutilisée dans une requête SQL, mais pas une fonction VB dans un module VB (ou Delphi, ou C++).
Espérant être utile, Vanderghast, Access MVP
"TEV" wrote in message news:40cdb4a6$0$8743$
Bonjour,
Je me connecte via VB6 sur base Access. Je souhaite ajouter un an aux dates
anniversaires des fiches figurantes dans la base de données.
Pour ce faire j'ai pensé à une fonction qui vérifie s'il faut ou non ajouter
l'âge et une requête UPDATE.
Seulement, comment faire pour que VB fasse le calcul grâce à la fonction.
Voici cette idée par la requête (qui fonctionne sous Access, mais pas sous
VB puisque la fonction n'est reconnue que sous forme de texte. Et Access ne
la reconnaît pas (lorsque la requête est exécutée à partir de VB) la fonction qui figure pourtant dans la base de données.
Espérant être utile
Oui. Cela m'évite de m'acharner sur cette voie. Par contre je ne vois pas
trop comment faire pour contourner ce problème. Cela m'oblige à ouvrir un
recordset, de le parcourir en fournissant les valeurs [dtNaissance] et [Age]
permettant d'appeler la fonction, de vérifier la réponse de la fonction pour
le cas échéant ou stocker l'id dans un tableau puis de faire en boucle une
requête UPDATE avec pour critères les ID contenus dans le tableau ou
exécuter cette requête UPDATE mais uniquement avec l'ID remplissant la
condition.
Seulement je crains que cela prenne énormément de temps d'exécution. Y
aurait - il d'autres façon de faire ?
Christian.
"Michel Walsh" <vanderghast@VirusAreFunnierThanSpam> a écrit dans le message
de news: u46r63sUEHA.2716@tk2msftngp13.phx.gbl...
Salut,
En effet, Access + Jet ont un lien privilégié qui n'existe pas avec
VB6
+ Jet, en ce sens qu'une fonction publique personnelle définie dans un
module standard de Access peut être réutilisée dans une requête SQL, mais
pas une fonction VB dans un module VB (ou Delphi, ou C++).
Espérant être utile,
Vanderghast, Access MVP
"TEV" <toto@caramail.com> wrote in message
news:40cdb4a6$0$8743$79c14f64@nan-newsreader-04.noos.net...
Bonjour,
Je me connecte via VB6 sur base Access. Je souhaite ajouter un an aux
dates
anniversaires des fiches figurantes dans la base de données.
Pour ce faire j'ai pensé à une fonction qui vérifie s'il faut ou non
ajouter
l'âge et une requête UPDATE.
Seulement, comment faire pour que VB fasse le calcul grâce à la
fonction.
Voici cette idée par la requête (qui fonctionne sous Access, mais pas
sous
VB puisque la fonction n'est reconnue que sous forme de texte. Et Access
ne
la reconnaît pas (lorsque la requête est exécutée à partir de VB) la
fonction qui figure pourtant dans la base de données.
Espérant être utile Oui. Cela m'évite de m'acharner sur cette voie. Par contre je ne vois pas
trop comment faire pour contourner ce problème. Cela m'oblige à ouvrir un recordset, de le parcourir en fournissant les valeurs [dtNaissance] et [Age] permettant d'appeler la fonction, de vérifier la réponse de la fonction pour le cas échéant ou stocker l'id dans un tableau puis de faire en boucle une requête UPDATE avec pour critères les ID contenus dans le tableau ou exécuter cette requête UPDATE mais uniquement avec l'ID remplissant la condition.
Seulement je crains que cela prenne énormément de temps d'exécution. Y aurait - il d'autres façon de faire ?
Christian.
"Michel Walsh" a écrit dans le message de news:
Salut,
En effet, Access + Jet ont un lien privilégié qui n'existe pas avec VB6
+ Jet, en ce sens qu'une fonction publique personnelle définie dans un module standard de Access peut être réutilisée dans une requête SQL, mais pas une fonction VB dans un module VB (ou Delphi, ou C++).
Espérant être utile, Vanderghast, Access MVP
"TEV" wrote in message news:40cdb4a6$0$8743$
Bonjour,
Je me connecte via VB6 sur base Access. Je souhaite ajouter un an aux dates
anniversaires des fiches figurantes dans la base de données.
Pour ce faire j'ai pensé à une fonction qui vérifie s'il faut ou non ajouter
l'âge et une requête UPDATE.
Seulement, comment faire pour que VB fasse le calcul grâce à la fonction.
Voici cette idée par la requête (qui fonctionne sous Access, mais pas sous
VB puisque la fonction n'est reconnue que sous forme de texte. Et Access ne
la reconnaît pas (lorsque la requête est exécutée à partir de VB) la fonction qui figure pourtant dans la base de données.
Il reste peut-être la possibilité de "piloter" par programmation VB la base Access contenant la requête déjà enregistrée. Cela dépend sans doute de l'architecture de l'application! Il faut rajouter les références DAO et Access.
Dim objDb As DAO.Database Dim objQuery As DAO.QueryDef Dim objAccess As Access.Application
Set objAccess = New Access.Application objAccess.OpenCurrentDatabase ("cheminDeLabasenomBase.mdb") Set objDb = objAccess.CurrentDb Set objQuery = objDb.QueryDefs("procTest") objQuery.Execute Set objQuery = nothing set objDb = nothing objAccess.Quit Set objAccess = Nothing
A+
Rv
"TEV" a écrit dans le message de news:40cef563$0$7948$
Merci beaucoup pour la réponse.
Espérant être utile Oui. Cela m'évite de m'acharner sur cette voie. Par contre je ne vois pas
trop comment faire pour contourner ce problème. Cela m'oblige à ouvrir un recordset, de le parcourir en fournissant les valeurs [dtNaissance] et [Age]
permettant d'appeler la fonction, de vérifier la réponse de la fonction pour
le cas échéant ou stocker l'id dans un tableau puis de faire en boucle une requête UPDATE avec pour critères les ID contenus dans le tableau ou exécuter cette requête UPDATE mais uniquement avec l'ID remplissant la condition.
Seulement je crains que cela prenne énormément de temps d'exécution. Y aurait - il d'autres façon de faire ?
Christian.
Bonjour,
Il reste peut-être la possibilité de "piloter" par programmation VB la
base Access contenant la requête déjà enregistrée. Cela dépend sans doute de
l'architecture de l'application!
Il faut rajouter les références DAO et Access.
Dim objDb As DAO.Database
Dim objQuery As DAO.QueryDef
Dim objAccess As Access.Application
Set objAccess = New Access.Application
objAccess.OpenCurrentDatabase ("cheminDeLabasenomBase.mdb")
Set objDb = objAccess.CurrentDb
Set objQuery = objDb.QueryDefs("procTest")
objQuery.Execute
Set objQuery = nothing
set objDb = nothing
objAccess.Quit
Set objAccess = Nothing
A+
Rv
"TEV" <toto@caramail.com> a écrit dans le message de
news:40cef563$0$7948$79c14f64@nan-newsreader-07.noos.net...
Merci beaucoup pour la réponse.
Espérant être utile
Oui. Cela m'évite de m'acharner sur cette voie. Par contre je ne vois pas
trop comment faire pour contourner ce problème. Cela m'oblige à ouvrir un
recordset, de le parcourir en fournissant les valeurs [dtNaissance] et
[Age]
permettant d'appeler la fonction, de vérifier la réponse de la fonction
pour
le cas échéant ou stocker l'id dans un tableau puis de faire en boucle une
requête UPDATE avec pour critères les ID contenus dans le tableau ou
exécuter cette requête UPDATE mais uniquement avec l'ID remplissant la
condition.
Seulement je crains que cela prenne énormément de temps d'exécution. Y
aurait - il d'autres façon de faire ?
Il reste peut-être la possibilité de "piloter" par programmation VB la base Access contenant la requête déjà enregistrée. Cela dépend sans doute de l'architecture de l'application! Il faut rajouter les références DAO et Access.
Dim objDb As DAO.Database Dim objQuery As DAO.QueryDef Dim objAccess As Access.Application
Set objAccess = New Access.Application objAccess.OpenCurrentDatabase ("cheminDeLabasenomBase.mdb") Set objDb = objAccess.CurrentDb Set objQuery = objDb.QueryDefs("procTest") objQuery.Execute Set objQuery = nothing set objDb = nothing objAccess.Quit Set objAccess = Nothing
A+
Rv
"TEV" a écrit dans le message de news:40cef563$0$7948$
Merci beaucoup pour la réponse.
Espérant être utile Oui. Cela m'évite de m'acharner sur cette voie. Par contre je ne vois pas
trop comment faire pour contourner ce problème. Cela m'oblige à ouvrir un recordset, de le parcourir en fournissant les valeurs [dtNaissance] et [Age]
permettant d'appeler la fonction, de vérifier la réponse de la fonction pour
le cas échéant ou stocker l'id dans un tableau puis de faire en boucle une requête UPDATE avec pour critères les ID contenus dans le tableau ou exécuter cette requête UPDATE mais uniquement avec l'ID remplissant la condition.
Seulement je crains que cela prenne énormément de temps d'exécution. Y aurait - il d'autres façon de faire ?
Christian.
TEV
Merci, beaucoup, c'est une solution que j'ai envisagé en guise de désespoir. Mais comme tu me mâche le boulot... Encore merci.
Christian. "Rv" a écrit dans le message de news:
Bonjour,
Il reste peut-être la possibilité de "piloter" par programmation VB la base Access contenant la requête déjà enregistrée. Cela dépend sans doute de
l'architecture de l'application! Il faut rajouter les références DAO et Access.
Dim objDb As DAO.Database Dim objQuery As DAO.QueryDef Dim objAccess As Access.Application
Set objAccess = New Access.Application objAccess.OpenCurrentDatabase ("cheminDeLabasenomBase.mdb") Set objDb = objAccess.CurrentDb Set objQuery = objDb.QueryDefs("procTest") objQuery.Execute Set objQuery = nothing set objDb = nothing objAccess.Quit Set objAccess = Nothing
A+
Rv
"TEV" a écrit dans le message de news:40cef563$0$7948$
Merci beaucoup pour la réponse.
Espérant être utile Oui. Cela m'évite de m'acharner sur cette voie. Par contre je ne vois
pas
trop comment faire pour contourner ce problème. Cela m'oblige à ouvrir un
recordset, de le parcourir en fournissant les valeurs [dtNaissance] et [Age]
permettant d'appeler la fonction, de vérifier la réponse de la fonction pour
le cas échéant ou stocker l'id dans un tableau puis de faire en boucle une
requête UPDATE avec pour critères les ID contenus dans le tableau ou exécuter cette requête UPDATE mais uniquement avec l'ID remplissant la condition.
Seulement je crains que cela prenne énormément de temps d'exécution. Y aurait - il d'autres façon de faire ?
Christian.
Merci, beaucoup, c'est une solution que j'ai envisagé en guise de désespoir.
Mais comme tu me mâche le boulot...
Encore merci.
Christian.
"Rv" <herve.pinardPASDESPAM@free.fr> a écrit dans le message de news:
ug63QvuUEHA.484@TK2MSFTNGP10.phx.gbl...
Bonjour,
Il reste peut-être la possibilité de "piloter" par programmation VB la
base Access contenant la requête déjà enregistrée. Cela dépend sans doute
de
l'architecture de l'application!
Il faut rajouter les références DAO et Access.
Dim objDb As DAO.Database
Dim objQuery As DAO.QueryDef
Dim objAccess As Access.Application
Set objAccess = New Access.Application
objAccess.OpenCurrentDatabase ("cheminDeLabasenomBase.mdb")
Set objDb = objAccess.CurrentDb
Set objQuery = objDb.QueryDefs("procTest")
objQuery.Execute
Set objQuery = nothing
set objDb = nothing
objAccess.Quit
Set objAccess = Nothing
A+
Rv
"TEV" <toto@caramail.com> a écrit dans le message de
news:40cef563$0$7948$79c14f64@nan-newsreader-07.noos.net...
Merci beaucoup pour la réponse.
Espérant être utile
Oui. Cela m'évite de m'acharner sur cette voie. Par contre je ne vois
pas
trop comment faire pour contourner ce problème. Cela m'oblige à ouvrir
un
recordset, de le parcourir en fournissant les valeurs [dtNaissance] et
[Age]
permettant d'appeler la fonction, de vérifier la réponse de la fonction
pour
le cas échéant ou stocker l'id dans un tableau puis de faire en boucle
une
requête UPDATE avec pour critères les ID contenus dans le tableau ou
exécuter cette requête UPDATE mais uniquement avec l'ID remplissant la
condition.
Seulement je crains que cela prenne énormément de temps d'exécution. Y
aurait - il d'autres façon de faire ?
Merci, beaucoup, c'est une solution que j'ai envisagé en guise de désespoir. Mais comme tu me mâche le boulot... Encore merci.
Christian. "Rv" a écrit dans le message de news:
Bonjour,
Il reste peut-être la possibilité de "piloter" par programmation VB la base Access contenant la requête déjà enregistrée. Cela dépend sans doute de
l'architecture de l'application! Il faut rajouter les références DAO et Access.
Dim objDb As DAO.Database Dim objQuery As DAO.QueryDef Dim objAccess As Access.Application
Set objAccess = New Access.Application objAccess.OpenCurrentDatabase ("cheminDeLabasenomBase.mdb") Set objDb = objAccess.CurrentDb Set objQuery = objDb.QueryDefs("procTest") objQuery.Execute Set objQuery = nothing set objDb = nothing objAccess.Quit Set objAccess = Nothing
A+
Rv
"TEV" a écrit dans le message de news:40cef563$0$7948$
Merci beaucoup pour la réponse.
Espérant être utile Oui. Cela m'évite de m'acharner sur cette voie. Par contre je ne vois
pas
trop comment faire pour contourner ce problème. Cela m'oblige à ouvrir un
recordset, de le parcourir en fournissant les valeurs [dtNaissance] et [Age]
permettant d'appeler la fonction, de vérifier la réponse de la fonction pour
le cas échéant ou stocker l'id dans un tableau puis de faire en boucle une
requête UPDATE avec pour critères les ID contenus dans le tableau ou exécuter cette requête UPDATE mais uniquement avec l'ID remplissant la condition.
Seulement je crains que cela prenne énormément de temps d'exécution. Y aurait - il d'autres façon de faire ?