VB lancements multiples

Le
le Nordiste
Bonjour,

Je dispose de 5 BdD sous access.
Chacune de ces bases a ses requêtes lancées par une procédure VBA.
Actuellement, les procédure de lancement des requêtes SQL sont lancée=
s
manuellement base aprés base.

Comment faire pour lancer les procédures les unes aprés les autres :
dans la dernière base créer une procédure de lancement global mais
quelle syntaxe ?

Merci de votre collaboration.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jero
Le #21540171
Salut,
Pour exécuter une requête action sur une base externe :
Sub ExécuteSQLExterne(StrSQL As String, NomBase As String)
'StrSQL = Nom de la requête ou chaine SQL (ex : "DELETE * FROM Table WHERE
Numéro<")
'NomBase : Nom de la base externe (ex : "C:CheminTables.mdb")
Dim Wrk As Workspace, BaseExterne As DAO.Database
Set Wrk = CreateWorkspace("", "admin", "", dbUseJet)
Set BaseExterne = Wrk.OpenDatabase(NomBase)
BaseExterne.Execute (StrSQL)
BaseExterne.Close
Set BaseExterne = Nothing
Set Wrk = Nothing
End Sub
Ex. d'appel : ExécuteSQLExterne
"R1","C:$BudgetCETablesBudgetCETablesComptaCE.mdb"
A+
"le Nordiste"
Bonjour,

Je dispose de 5 BdD sous access.
Chacune de ces bases a ses requêtes lancées par une procédure VBA.
Actuellement, les procédure de lancement des requêtes SQL sont lancées
manuellement base aprés base.

Comment faire pour lancer les procédures les unes aprés les autres :
dans la dernière base créer une procédure de lancement global mais
quelle syntaxe ?

Merci de votre collaboration.
Michel__D
Le #21541411
Bonjour,

le Nordiste a écrit :
Bonjour,

Je dispose de 5 BdD sous access.
Chacune de ces bases a ses requêtes lancées par une procédure VBA.
Actuellement, les procédure de lancement des requêtes SQL sont lancées
manuellement base aprés base.

Comment faire pour lancer les procédures les unes aprés les autres :
dans la dernière base créer une procédure de lancement global mais
quelle syntaxe ?

Merci de votre collaboration



Pourquoi ne pas lier les tables impactées de chaque base dans une autre
base et ensuite je pense que tu sais faire.
le Nordiste
Le #21546341
Bonjour,

Michel_D :
Pourquoi ne pas lier les tables impactées de chaque base dans une autre
base et ensuite je pense que tu sais faire.



Parce que déja dans la première base d ela chaine, il y a des tout une
floppée de requêtes et de tables liées.
avant d'obtenir le ou les tables liée(s) à la BdD suivante.


jero:
Ce n'est pas une seule requête que je dois lancer mais une bonne
dizaine pour chacune des bases,
c'est pourquoi j'ai dans chaque base une procédure VA de lancement des
requêtes.
Et je pense pouvoir lancer cess procédures depuis la "dernière base"
de la chaine.



Merci pour votre aide
Michel__D
Le #21548311
Bonjour,

le Nordiste a écrit :
Bonjour,

Michel_D :

Pourquoi ne pas lier les tables impactées de chaque base dans une autre
base et ensuite je pense que tu sais faire.




Parce que déja dans la première base d ela chaine, il y a des tout une
floppée de requêtes et de tables liées.
avant d'obtenir le ou les tables liée(s) à la BdD suivante.




Je persiste à penser que sur le long terme ce soit la meilleure
solution, mais comme on dit chacun fait ce qu'il lui plait.

PS: Par exemple avant j'avais 14 bases reliées chacune à un serveur SQL
Server et depuis que j'ai
tout regroupé dans une seule base je te dis pas le gain de temps et la
facilité d'utilisation pour
assurer la cohérence des données qu'une application dédiée n'est pas
capable d'assurer.
jero
Le #21551681
Salut,
Donc, il faut que tu puisses exécuter (à partir de "la dernière base") une
procédure située dans une autre base ?
C'est ça ?
Question : "que font" ces requêtes ? (mise à jour, etc ?)
A+
"le Nordiste"
Bonjour,

Michel_D :
Pourquoi ne pas lier les tables impactées de chaque base dans une autre
base et ensuite je pense que tu sais faire.



Parce que déja dans la première base d ela chaine, il y a des tout une
floppée de requêtes et de tables liées.
avant d'obtenir le ou les tables liée(s) à la BdD suivante.


jero:
Ce n'est pas une seule requête que je dois lancer mais une bonne
dizaine pour chacune des bases,
c'est pourquoi j'ai dans chaque base une procédure VA de lancement des
requêtes.
Et je pense pouvoir lancer cess procédures depuis la "dernière base"
de la chaine.



Merci pour votre aide
jero
Le #21552251
Re-salut,
Ce qu'il est possible de faire :
1-Créer, dans chaque base, une macro avec les instructions nécessaires à
l'exécution des différentes requêtes
2-Dans la "dernière base" copier le code suivant dans un module :
Sub ExécuteMacroBaseExterne(NomBase As String, NomMacro As String)
'Exemple : ExécuteMacroBaseExterne "C:Documents and SettingsJPMes
documents_DéveloppementAccessBaseEssai1.accdb", "Macro1"
Dim AppAccess As Access.Application, NumErreur As Long
On Error GoTo Err_ExécuteMacroBaseExterne
DoCmd.Echo False
Set AppAccess = New Access.Application
AppAccess.OpenCurrentDatabase NomBase
AppAccess.DoCmd.RunMacro NomMacro

Exit_ExécuteMacroBaseExterne1:
AppAccess.CloseCurrentDatabase
Exit_ExécuteMacroBaseExterne2:
Set AppAccess = Nothing
DoCmd.Echo True
Exit Sub

Err_ExécuteMacroBaseExterne:
NumErreur = Err
MsgBox "Erreur n° " & NumErreur & " (" & Err.Description & ")"
Select Case NumErreur
Case 7866 ' Access n'a pas pu ouvrir la base de données (n'existe pas ou
ouverte par un autre utilisateur en mode exclusif)
Resume Exit_ExécuteMacroBaseExterne2
Case Else 'Macro non trouvée (err n°2485) ou autre...
Resume Exit_ExécuteMacroBaseExterne1
End Select
End Sub
3-Exécuter ce code pour chaque base, du genre :
ExécuteMacroBaseExterne "C:AccessBase1.mdb", "Macro1"
ExécuteMacroBaseExterne "C:AccessBase2.mdb", "Macro1"
etc...
Note 1 : Ce code fonctionne sans problème
Note 2 : On doit pouvoir aussi exécuter une procédure d'une base externe
mais je ne sais pas faire...
A+
"le Nordiste"
Bonjour,

Je dispose de 5 BdD sous access.
Chacune de ces bases a ses requêtes lancées par une procédure VBA.
Actuellement, les procédure de lancement des requêtes SQL sont lancées
manuellement base aprés base.

Comment faire pour lancer les procédures les unes aprés les autres :
dans la dernière base créer une procédure de lancement global mais
quelle syntaxe ?

Merci de votre collaboration.
le Nordiste
Le #21554671
Bonjour,

Merci pour ce code.
Il me reste un soucis à régler comment lancer une procédure via une
macro ?

J'ai créé une macro avec : ExécuterCode et l'argument :
(MaFonction)
MaFonction étant la procédure VB de lancement des requêtes.


Mais en éxécutant la macro ça ne marche pas :
"Impossible pour MS de trouver le nom 'Mafonction" entré dans
l'espression.


MERCI de me consacrer un peu de ton temps.
le Nordiste
Le #21555141
HOURRA !
EUREKA !

et tout le tralala !


J'ai trouvé : le nom du module VB ne doit pas étre identique au nom de
la Fonction VB
Et il ne faut pas chercher à mettre le nom du module ET le nom de la
fonction,
SEULEMENT l enom de la fonction.


MERCI  d'avoir consacrer un peu de ton temps.
Publicité
Poster une réponse
Anonyme