OVH Cloud OVH Cloud

Lancer Fonction

8 réponses
Avatar
Luis
Bonjour,
Comment lancer une fonction pendant l'ex=E9cution d'une=20
autre?
Je m'explique:
J'ai une base de donn=E9es avec tables attach=E9es et=20
l'attache se fait avec le module=20
Microsoft 'modActualiserAttachesTables' et j'aimerai=20
lancer pendant l'op=E9ration d'attache une barre de=20
progression par une fonction 'UpdateProgressMeter' dans un=20
module progressBarre.

Comment lancer la fonction 'UpdateProgressMeter' depuis la=20
fonction attacher tables du=20
module 'modActualiserAttachesTables'?

J'ep=E8re que je suis clair car pas facile =E0 expliquer.

Merci pour votre aide.
Luis

8 réponses

Avatar
Arnaud [lwa]
Bonjour Luis,

Pourquoi besoin d'une barre de progression ?
Il faudrait pour cela compter le nombre de tables à controler, puis incrémenter la barre
après le rattachement de chaque table....

Mais si tu veux une barre de progression,
c'est peut-être que la procédure de microsoft est longue à exécuter et
ça t'intéresserait peut-être d'en connaître une plus rapide d'exécution ?

a+

--
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Site Perso : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------

Dans sa missive, Luis a atermoyé :
| Bonjour,
| Comment lancer une fonction pendant l'exécution d'une
| autre?
| Je m'explique:
| J'ai une base de données avec tables attachées et
| l'attache se fait avec le module
| Microsoft 'modActualiserAttachesTables' et j'aimerai
| lancer pendant l'opération d'attache une barre de
| progression par une fonction 'UpdateProgressMeter' dans un
| module progressBarre.
|
| Comment lancer la fonction 'UpdateProgressMeter' depuis la
| fonction attacher tables du
| module 'modActualiserAttachesTables'?
|
| J'epère que je suis clair car pas facile à expliquer.
|
| Merci pour votre aide.
| Luis
Avatar
?Lo»Paris?
Luis wrote:
Bonjour,
Comment lancer une fonction pendant l'exécution d'une
autre?
Je m'explique:
J'ai une base de données avec tables attachées et
l'attache se fait avec le module
Microsoft 'modActualiserAttachesTables' et j'aimerai
lancer pendant l'opération d'attache une barre de
progression par une fonction 'UpdateProgressMeter' dans un
module progressBarre.

Comment lancer la fonction 'UpdateProgressMeter' depuis la
fonction attacher tables du
module 'modActualiserAttachesTables'?

J'epère que je suis clair car pas facile à expliquer.

Merci pour votre aide.
Luis


Bonjour Luis,

Je ne vérifier pas ce deux procédures, mais à mon avis et vu d'ici tu lance
'UpdateProgressMeter' dans la boucle (de 'modActualiserAttachesTables' qui
parcours les tables pour vérifier leurs liens.

Salutations

--
°Laurent°

Avatar
Luis
Bonjour,
Oui exactement.
Mais comment lancer la procédure 'UpdateProgressMeter'?
C'est ce que je ne sais pas faire.
Merci.
Luis
-----Message d'origine-----
Luis wrote:
Bonjour,
Comment lancer une fonction pendant l'exécution d'une
autre?
Je m'explique:
J'ai une base de données avec tables attachées et
l'attache se fait avec le module
Microsoft 'modActualiserAttachesTables' et j'aimerai
lancer pendant l'opération d'attache une barre de
progression par une fonction 'UpdateProgressMeter' dans
un


module progressBarre.

Comment lancer la fonction 'UpdateProgressMeter' depuis
la


fonction attacher tables du
module 'modActualiserAttachesTables'?

J'epère que je suis clair car pas facile à expliquer.

Merci pour votre aide.
Luis


Bonjour Luis,

Je ne vérifier pas ce deux procédures, mais à mon avis et
vu d'ici tu lance

'UpdateProgressMeter' dans la boucle
(de 'modActualiserAttachesTables' qui

parcours les tables pour vérifier leurs liens.

Salutations

--
°Laurent°


.




Avatar
Luis
Bonjour,
La base va chercher 4 autres bases avec les tables à lier.
Le temps n'est pas exéssif, mais dure tout de même 1 à 2
secondes.
Et comme rien n'est signalé, il suffit que l'on déplace
les bases principale sur un autre PC que tout les
utilisateurs commencent à s'énerver à cliquer sur
fermeture etc...
J'avais voulu essayer une procédure que j'avais trouvé
dans memoaccess, mais je n'ai jamais réussi à la mettre en
place ni même compiler, car j'avais des messages d'erreur.
Merci.
Luis

-----Message d'origine-----
Bonjour Luis,

Pourquoi besoin d'une barre de progression ?
Il faudrait pour cela compter le nombre de tables à
controler, puis incrémenter la barre

après le rattachement de chaque table....

Mais si tu veux une barre de progression,
c'est peut-être que la procédure de microsoft est longue
à exécuter et

ça t'intéresserait peut-être d'en connaître une plus
rapide d'exécution ?


a+

--
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Site Perso : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------

Dans sa missive, Luis
a atermoyé :

| Bonjour,
| Comment lancer une fonction pendant l'exécution d'une
| autre?
| Je m'explique:
| J'ai une base de données avec tables attachées et
| l'attache se fait avec le module
| Microsoft 'modActualiserAttachesTables' et j'aimerai
| lancer pendant l'opération d'attache une barre de
| progression par une fonction 'UpdateProgressMeter' dans
un

| module progressBarre.
|
| Comment lancer la fonction 'UpdateProgressMeter' depuis
la

| fonction attacher tables du
| module 'modActualiserAttachesTables'?
|
| J'epère que je suis clair car pas facile à expliquer.
|
| Merci pour votre aide.
| Luis


.



Avatar
?Lo»Paris?
Luis wrote:
Bonjour,
Oui exactement.
Mais comment lancer la procédure 'UpdateProgressMeter'?
C'est ce que je ne sais pas faire.
Merci.
Luis
-----Message d'origine-----
Luis wrote:
Bonjour,
Comment lancer une fonction pendant l'exécution d'une
autre?
Je m'explique:
J'ai une base de données avec tables attachées et
l'attache se fait avec le module
Microsoft 'modActualiserAttachesTables' et j'aimerai
lancer pendant l'opération d'attache une barre de
progression par une fonction 'UpdateProgressMeter' dans un
module progressBarre.

Comment lancer la fonction 'UpdateProgressMeter' depuis la
fonction attacher tables du
module 'modActualiserAttachesTables'?

J'epère que je suis clair car pas facile à expliquer.

Merci pour votre aide.
Luis


Bonjour Luis,

Je ne vérifier pas ce deux procédures, mais à mon avis et vu d'ici
tu lance 'UpdateProgressMeter' dans la boucle
(de 'modActualiserAttachesTables' qui

parcours les tables pour vérifier leurs liens.

Salutations

--
°Laurent°


.



Je ne connais pas cette procédure, ou tu l'as trouvé ? à moins que tu
parle peut-être de la l'action 'acSysCmdUpdateMeter' (Méthode SysCmd de
l'objet Application) ?

Dans ce cas regarde l'aide d'Access sur la méthode SysCmd, tu trouvera un
exemple d'utilisation.

Sinon tu doit trouvé plusieurs exemple de barre de progression personnalisée
sur le web (voir les site sur http://users.skynet.be/mpfa/)

--
°Laurent°



Avatar
Arnaud [lwa]
Bonjour Luis,

Dans sa missive, Luis a atermoyé :

| J'avais voulu essayer une procédure que j'avais trouvé
| dans memoaccess, mais je n'ai jamais réussi à la mettre en
| place ni même compiler, car j'avais des messages d'erreur.

quoi qu'il en soit, si on reprend un bout du code qui ne marche pas :o)
et qu'on rajoute : une fonction de sélection de fichier et la barre de progression standard :

Dim nbTbl As Long
Dim idx As Long
Dim dbs As DAO.Database
Dim TblDef As DAO.TableDef

Function fCheckLinks()
Dim rst As DAO.Recordset
Set dbs = CurrentDb()

On Error Resume Next
nbTbl = dbs.TableDefs.Count

SysCmd acSysCmdInitMeter, "Traitement en cours ", NbTbl

For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
SysCmd acSysCmdUpdateMeter, idx

If TblDef.Attributes = dbAttachedTable Then
Set rst = dbs.OpenRecordset(TblDef.Name)
End If
Next idx
SysCmd acSysCmdClearStatus

If Err <> 0 Then
fRefreshLinks
End If

rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing

End Function

Sub fRefreshLinks()
Dim newpath As String
On Error Resume Next

newpath = fOpenFiles()
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
If TblDef.Connect <> "" Then
TblDef.Connect = ";DATABASE=" & newpath
TblDef.RefreshLink
End If
Next idx

If Err = 0 Then
MsgBox "Bienvenue !", vbInformation + vbOKOnly, "Welcome !"
Exit Sub
Else
If MsgBox("Les Tables n'ont pas été trouvées " _
& "dans la base sélectionnée, voulez-vous essayer à nouveau ?", _
vbExclamation + vbYesNo, "Sélection non Valide") = vbNo Then
dbs.Close
Set dbs = Nothing
Set TblDef = Nothing
MsgBox "Au Revoir !", vbCritical + vbOKOnly, _
"Fermeture de l'application"
DoCmd.Quit
Else
dbs.Close
Set dbs = Nothing
Set TblDef = Nothing
Call fCheckLinks
End If
End If
End Sub

Function fOpenFiles() As String
'Nécessite la référence microsoft office x.x object library
Dim Dialogue As FileDialog
Dim Fichier As Variant
Set Dialogue = FileDialog(msoFileDialogOpen)
With Dialogue
.AllowMultiSelect = True
.ButtonName = "Ouvrir"
.InitialFileName = "*.mdb"
.Filters.Clear
.Filters.Add "Base de données Microsoft Access", "*.mdb"
.InitialView = msoFileDialogViewList
.title = "Veuillez sélectionner les fichiers ..."
If .Show Then
For Each Fichier In .SelectedItems
fOpenFiles = fOpenFiles & Fichier & ";"
Next
End If
End With
If Len(fOpenFiles) > 0 Then
fOpenFiles = Left(fOpenFiles, Len(fOpenFiles) - 1)
End If
Set Dialogue = Nothing
End Function

pas testé mais à adapter pour vérifier pour attacher les tables de 4 bases.


--
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Site Perso : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------
Avatar
Luis
Bonjour,
La procédure se déroule 4 fois se qui est normale (car 4
bases), une chose est gênante c'est qu'entre chaque
opération le message :

Les Tables n'ont pas été trouvées dans la base
sélectionnée, voulez-vous essayer à nouveau ?

Ce-ci 4 fois. Alors que dans le fond puisque l'on pointe 4
fois, les tables ont été trouvée.

D'autre part à l'ouverture d'un formulaire, depuis le menu
général il y a l'attache qui se met en route avec
l'ouverture le la barre de progression + message 'Erreur
de fonctionnement#'

Toutes les autres tables sont attachées sauf celles-ci.

J'ai essayé plusieurs fois et j'ai le même résultat à
chaque fois.

Je ne comprend pas pourquoi.

Merci pour ton aide.
Luis
-----Message d'origine-----
Bonjour Luis,

Dans sa missive, Luis
a atermoyé :


| J'avais voulu essayer une procédure que j'avais trouvé
| dans memoaccess, mais je n'ai jamais réussi à la mettre
en

| place ni même compiler, car j'avais des messages
d'erreur.


quoi qu'il en soit, si on reprend un bout du code qui ne
marche pas :o)

et qu'on rajoute : une fonction de sélection de fichier
et la barre de progression standard :


Dim nbTbl As Long
Dim idx As Long
Dim dbs As DAO.Database
Dim TblDef As DAO.TableDef

Function fCheckLinks()
Dim rst As DAO.Recordset
Set dbs = CurrentDb()

On Error Resume Next
nbTbl = dbs.TableDefs.Count

SysCmd acSysCmdInitMeter, "Traitement en cours ", NbTbl

For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
SysCmd acSysCmdUpdateMeter, idx

If TblDef.Attributes = dbAttachedTable Then
Set rst = dbs.OpenRecordset(TblDef.Name)
End If
Next idx
SysCmd acSysCmdClearStatus

If Err <> 0 Then
fRefreshLinks
End If

rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing

End Function

Sub fRefreshLinks()
Dim newpath As String
On Error Resume Next

newpath = fOpenFiles()
For idx = 0 To nbTbl - 1
Set TblDef = dbs.TableDefs(idx)
If TblDef.Connect <> "" Then
TblDef.Connect = ";DATABASE=" & newpath
TblDef.RefreshLink
End If
Next idx

If Err = 0 Then
MsgBox "Bienvenue !", vbInformation +
vbOKOnly, "Welcome !"

Exit Sub
Else
If MsgBox("Les Tables n'ont pas été trouvées " _
& "dans la base sélectionnée, voulez-vous essayer
à nouveau ?", _

vbExclamation + vbYesNo, "Sélection non Valide")
= vbNo Then

dbs.Close
Set dbs = Nothing
Set TblDef = Nothing
MsgBox "Au Revoir !", vbCritical +
vbOKOnly, _

"Fermeture de l'application"
DoCmd.Quit
Else
dbs.Close
Set dbs = Nothing
Set TblDef = Nothing
Call fCheckLinks
End If
End If
End Sub

Function fOpenFiles() As String
'Nécessite la référence microsoft office x.x object
library

Dim Dialogue As FileDialog
Dim Fichier As Variant
Set Dialogue = FileDialog(msoFileDialogOpen)
With Dialogue
.AllowMultiSelect = True
.ButtonName = "Ouvrir"
.InitialFileName = "*.mdb"
.Filters.Clear
.Filters.Add "Base de données Microsoft
Access", "*.mdb"

.InitialView = msoFileDialogViewList
.title = "Veuillez sélectionner les fichiers ..."
If .Show Then
For Each Fichier In .SelectedItems
fOpenFiles = fOpenFiles & Fichier & ";"
Next
End If
End With
If Len(fOpenFiles) > 0 Then
fOpenFiles = Left(fOpenFiles, Len(fOpenFiles) - 1)
End If
Set Dialogue = Nothing
End Function

pas testé mais à adapter pour vérifier pour attacher les
tables de 4 bases.



--
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Site Perso : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------


.



Avatar
Luis
Bonjour,
Oui c'est cette procédure et je te remercie car c'est
SysCmd qu'il faut utiliser pour lancer la fonction.
A bientôt.
Luis
-----Message d'origine-----
Luis wrote:
Bonjour,
Oui exactement.
Mais comment lancer la procédure 'UpdateProgressMeter'?
C'est ce que je ne sais pas faire.
Merci.
Luis
-----Message d'origine-----
Luis wrote:
Bonjour,
Comment lancer une fonction pendant l'exécution d'une
autre?
Je m'explique:
J'ai une base de données avec tables attachées et
l'attache se fait avec le module
Microsoft 'modActualiserAttachesTables' et j'aimerai
lancer pendant l'opération d'attache une barre de
progression par une fonction 'UpdateProgressMeter'
dans un




module progressBarre.

Comment lancer la fonction 'UpdateProgressMeter'
depuis la




fonction attacher tables du
module 'modActualiserAttachesTables'?

J'epère que je suis clair car pas facile à expliquer.

Merci pour votre aide.
Luis


Bonjour Luis,

Je ne vérifier pas ce deux procédures, mais à mon avis
et vu d'ici



tu lance 'UpdateProgressMeter' dans la boucle
(de 'modActualiserAttachesTables' qui

parcours les tables pour vérifier leurs liens.

Salutations

--
°Laurent°


.



Je ne connais pas cette procédure, ou tu l'as trouvé ? à
moins que tu

parle peut-être de la l'action 'acSysCmdUpdateMeter'
(Méthode SysCmd de

l'objet Application) ?

Dans ce cas regarde l'aide d'Access sur la méthode
SysCmd, tu trouvera un

exemple d'utilisation.

Sinon tu doit trouvé plusieurs exemple de barre de
progression personnalisée

sur le web (voir les site sur
http://users.skynet.be/mpfa/)


--
°Laurent°


.