GNT sans publicité, site mobile, fonctionnalitées exclusives...

Demande d'aide pour résoudre une erreur Microsoft Jet

Le
Sonia
Bonjours

Je voudrai réaliser un calcul entre deux bases de données access. Ces deux bases de donnéés se situent sur
c:\bd
Base de donnée 1 = "I_résultat.mdb"
Table = "I_Co"
Champ = "N_article"
Champ = "Qt_c"

Base de donnée = "H_Résultat.mdb"
Table = "H_Co"
Champ = "N_article"
Champ = "Qt_D"

Le module de calcul ainsi que la requête "J_resultat se trouve dans la base de donnée "H_Résultat.mdb"

Voici de code du module

Function FnQuantitéTotale(MaN_Article) As Long
'MaN_Article = Nz(MaN_article)
'MaN_Article = Val(MaN_Article)
Dim BD aS DAO.Database
Dim enr As DAO.Recordset
Dim QuantitéTotale
Set bd = Opendatabase("c:\bd\I_résultat.mdb")
Set enr = bd.OpenRecordset("Select [Qt_c] From [I_Co] Where N_Article =" & MaN_Article)
FnQuantitéTotale = Nz(DSum("[Qt_c]", "[I_Co]", "N_Article =" & MaN_Article)) + Nz(DSum("[Qt_D]", "[H_Co]", "N_Article =" & MaN_Article))
enr.Close
bd.Close
Set bd = Nothing

End Function

Dans la la requête
Champ = N_Article : Regroupement
Champ = Quantité totale:FnQuantitéTotale([N_Article]) : Regroupement

Je exécute la requête "J_resultat. Et la il me donne le message d'erruer suivant :

Erreur d'execution '3078'

Le moteur de recherche de base de données Microsoft Jet ne peut pas trouver la table ou la
requête source 'I_Co'. Assurez-vous qu'elle existe et qu'elle est correctement orthographiée.

Et la je regarde mon code dans le module et je ne voie pas d'erreur.

Pouvez me dire ou est l'erreur et me l'a corrigé.

Merci
Bisous Sonia!!
Lire les 15 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel Carollo
Le #5273421
Bonjour Sonia!

Pourquoi faire simple alors qu'il est si simple de faire complique....

D'une part, la creation et l'ouverture d'un recordset (surtout sur une base
differente de la courante) pour chaque enregistrement de la table risque de
rendre cette requete tres-tres lente, d'autre part les ressources (memoire
en particulier) necessaires seront elevees.

Pour en venir a votre module, vous ouvrez un recordset et n'en faites rien.

Le DSum() essaie de prendre des donnees de I_Co, qui ne se trouve pas dans
la base courante. Le message d'erreur est donc bien correct.

Avez-vous explore la possibilite de travailler avec des table attachees? Ce
serait, a mon avis, la solution la plus adaptee au probleme que vous nous
exposez. Et de grace, n'ouvrez surtout pas un recordset a chaque
enregistrment...


--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Sonia" news:
Bonjours

Je voudrai réaliser un calcul entre deux bases de données access. Ces deux
bases de donnéés se situent sur

c:bd
Base de donnée 1 = "I_résultat.mdb"
Table = "I_Co"
Champ = "N_article"
Champ = "Qt_c"

Base de donnée = "H_Résultat.mdb"
Table = "H_Co"
Champ = "N_article"
Champ = "Qt_D"

Le module de calcul ainsi que la requête "J_resultat se trouve dans la
base de donnée "H_Résultat.mdb"


Voici de code du module

Function FnQuantitéTotale(MaN_Article) As Long
'MaN_Article = Nz(MaN_article)
'MaN_Article = Val(MaN_Article)
Dim BD aS DAO.Database
Dim enr As DAO.Recordset
Dim QuantitéTotale
Set bd = Opendatabase("c:bdI_résultat.mdb")
Set enr = bd.OpenRecordset("Select [Qt_c] From [I_Co] Where N_Article
=" & MaN_Article)

FnQuantitéTotale = Nz(DSum("[Qt_c]", "[I_Co]", "N_Article =" &
MaN_Article)) + Nz(DSum("[Qt_D]", "[H_Co]", "N_Article =" & MaN_Article))

enr.Close
bd.Close
Set bd = Nothing

End Function

Dans la la requête
Champ = N_Article : Regroupement
Champ = Quantité totale:FnQuantitéTotale([N_Article]) : Regroupement

Je exécute la requête "J_resultat. Et la il me donne le message d'erruer
suivant :


Erreur d'execution '3078'

Le moteur de recherche de base de données Microsoft Jet ne peut pas
trouver la table ou la

requête source 'I_Co'. Assurez-vous qu'elle existe et qu'elle est
correctement orthographiée.


Et la je regarde mon code dans le module et je ne voie pas d'erreur.

Pouvez me dire ou est l'erreur et me l'a corrigé.

Merci
Bisous Sonia!!



Eric
Le #5273411
Bonjour Sonia,

La fonction DSum provoque l'erreur. Elle ne doit travailler que sur la bd
en cours c'est à dire H_Resultat, d'où le message : I_Co introuvable.

Pour contourner le problème :
Sur ton recordset enr, fais une boucle pour calculer/trouver la quantité
Qt_c soit en parcourant tout le jeu soit avec la méthode Find critere.
A la sortie tu auras ainsi la quantite de la table I_Co de la base
I_Resutat. A ce montant, tu ajoutes le Dsum sur la table H_Co de la base
H_Resultat et tu l'affectes à ta fonction. Tu obtiendras le résultat
désiré.

A+
Eric



"=?Utf-8?B?U29uaWE=?=" news::

Bonjours

Je voudrai réaliser un calcul entre deux bases de données access.
Ces deux bases de donnéés se situent sur c:bd
Base de donnée 1 = "I_résultat.mdb"
Table = "I_Co"
Champ = "N_article"
Champ = "Qt_c"

Base de donnée = "H_Résultat.mdb"
Table = "H_Co"
Champ = "N_article"
Champ = "Qt_D"

Le module de calcul ainsi que la requête "J_resultat se trouve dans
la base de donnée "H_Résultat.mdb"

Voici de code du module

Function FnQuantitéTotale(MaN_Article) As Long
'MaN_Article = Nz(MaN_article)
'MaN_Article = Val(MaN_Article)
Dim BD aS DAO.Database
Dim enr As DAO.Recordset
Dim QuantitéTotale
Set bd = Opendatabase("c:bdI_résultat.mdb")
Set enr = bd.OpenRecordset("Select [Qt_c] From [I_Co] Where
N_Article =" & MaN_Article)
FnQuantitéTotale = Nz(DSum("[Qt_c]", "[I_Co]", "N_Article =" &
MaN_Article)) + Nz(DSum("[Qt_D]", "[H_Co]", "N_Article =" &
MaN_Article))
enr.Close
bd.Close
Set bd = Nothing

End Function

Dans la la requête
Champ = N_Article : Regroupement
Champ = Quantité totale:FnQuantitéTotale([N_Article]) : Regroupement

Je exécute la requête "J_resultat. Et la il me donne le message
d'erruer suivant :

Erreur d'execution '3078'

Le moteur de recherche de base de données Microsoft Jet ne peut pas
trouver la table ou la requête source 'I_Co'. Assurez-vous qu'elle
existe et qu'elle est correctement orthographiée.

Et la je regarde mon code dans le module et je ne voie pas d'erreur.

Pouvez me dire ou est l'erreur et me l'a corrigé.

Merci
Bisous Sonia!!




Eric
Le #5273381
Re,

Function FnQuantitéTotale(MaN_Article) As Long
'MaN_Article = Nz(MaN_article)
'MaN_Article = Val(MaN_Article)
Dim BD aS DAO.Database
Dim enr As DAO.Recordset



Dim Total as long <----------------

Set bd = Opendatabase("c:bdI_résultat.mdb")
Set enr = bd.OpenRecordset("Select [Qt_c] From [I_Co] Where
N_Article =" & MaN_Article)


Total=0
While not enr.eof
Total=Total+rs(0)
enr.movenext
Wend
enr.close:bd.close:set enr=Nothing:set bd=Nothing

FnQuantitéTotale = Total + Nz(DSum("[Qt_D]", "[H_Co]", "N_Article =" &
MaN_Article))



Eric

PS: j'ai du mettre : Set bdÛEngine.Workspaces(0).Opendatabase(...)



"=?Utf-8?B?U29uaWE=?=" news::

Bonjours

Je voudrai réaliser un calcul entre deux bases de données access.
Ces deux bases de donnéés se situent sur c:bd
Base de donnée 1 = "I_résultat.mdb"
Table = "I_Co"
Champ = "N_article"
Champ = "Qt_c"

Base de donnée = "H_Résultat.mdb"
Table = "H_Co"
Champ = "N_article"
Champ = "Qt_D"

Le module de calcul ainsi que la requête "J_resultat se trouve dans
la base de donnée "H_Résultat.mdb"

Voici de code du module

Function FnQuantitéTotale(MaN_Article) As Long
'MaN_Article = Nz(MaN_article)
'MaN_Article = Val(MaN_Article)
Dim BD aS DAO.Database
Dim enr As DAO.Recordset
Dim QuantitéTotale
Set bd = Opendatabase("c:bdI_résultat.mdb")
Set enr = bd.OpenRecordset("Select [Qt_c] From [I_Co] Where
N_Article =" & MaN_Article)
FnQuantitéTotale = Nz(DSum("[Qt_c]", "[I_Co]", "N_Article =" &
MaN_Article)) + Nz(DSum("[Qt_D]", "[H_Co]", "N_Article =" &
MaN_Article))
enr.Close
bd.Close
Set bd = Nothing

End Function

Dans la la requête
Champ = N_Article : Regroupement
Champ = Quantité totale:FnQuantitéTotale([N_Article]) : Regroupement

Je exécute la requête "J_resultat. Et la il me donne le message
d'erruer suivant :

Erreur d'execution '3078'

Le moteur de recherche de base de données Microsoft Jet ne peut pas
trouver la table ou la requête source 'I_Co'. Assurez-vous qu'elle
existe et qu'elle est correctement orthographiée.

Et la je regarde mon code dans le module et je ne voie pas d'erreur.

Pouvez me dire ou est l'erreur et me l'a corrigé.

Merci
Bisous Sonia!!




Eric
Le #5273351
Petite erreur:

Total=Total+enr(0) et non Total=Total+rs(0), l'habitude de mes noms ;-)

Eric
Sonia
Le #5273321
J'ai mis ton code sur le module. cela semble fonctionner mais cette fois ci il y a un autre message d'erreur du style suivante.

Erreur de compilation

Sub ou fonction non definie

code insére

Option Compare Database

Function FnQuantitéTotale(MaN_Article) As Long

'MaN_Article = Nz(MaN_article)
'MaN_Article = Val(MaN_Article)
Dim BD As DAO.Database
Dim enr As DAO.Recordset
Dim Total As Long
Set BD = Opendatabase("c:bdI_résultat.mdb")
Set enr = BD.OpenRecordset("Select [Qt_c] From [I_Co] Where N_Article =" & MaN_Article)
Total = 0
While Not enr.EOF
Total = Total + rs(0)
enr.MoveNext
Wend
enr.Close: BD.Close: Set enr = Nothing: Set BD = Nothing
FnQuantiteTotale = Total + Nz(DSum("[Qt_D]", "[H_Co]", "N_Article =" & MaN_Article))
End Function

Merci
Bisous!!!
Publicité
Suivre les réponses
Poster une réponse
Anonyme