Bonjour,
Tout est dans l'objet...
Comment compacter la base attachée à partir de l'appli. frontale ?
1-Ne pas attacher les tables (Hum...)
2-Compacter
3-Attacher les tables
Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce propos...
Merci d'avance,
ejc
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
MINOT gilles
On 31 août, 08:40, "ejc" <~ wrote:
Bonjour, Tout est dans l'objet... Comment compacter la base attachée à partir de l'appli. frontale ? 1-Ne pas attacher les tables (Hum...) 2-Compacter 3-Attacher les tables Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à c e propos... Merci d'avance, ejc
tu colle ce code dans un module
Public Function fCompactBase(strBase As String)
Dim srcDstName As String
srcDstName = strBase & ".tmp" DBEngine.CompactDatabase strBase, srcDstName Kill strBase Name srcDstName As strBase
End Function
puis tu cree un bouton en rappelant la fonction
call fCompactBase("C:moncheminmabase.mdb")
tous les tables attachées doivent etre fermée
On 31 août, 08:40, "ejc" <~...@jpg.net> wrote:
Bonjour,
Tout est dans l'objet...
Comment compacter la base attachée à partir de l'appli. frontale ?
1-Ne pas attacher les tables (Hum...)
2-Compacter
3-Attacher les tables
Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à c e propos...
Merci d'avance,
ejc
tu colle ce code dans un module
Public Function fCompactBase(strBase As String)
Dim srcDstName As String
srcDstName = strBase & ".tmp"
DBEngine.CompactDatabase strBase, srcDstName
Kill strBase
Name srcDstName As strBase
Bonjour, Tout est dans l'objet... Comment compacter la base attachée à partir de l'appli. frontale ? 1-Ne pas attacher les tables (Hum...) 2-Compacter 3-Attacher les tables Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à c e propos... Merci d'avance, ejc
tu colle ce code dans un module
Public Function fCompactBase(strBase As String)
Dim srcDstName As String
srcDstName = strBase & ".tmp" DBEngine.CompactDatabase strBase, srcDstName Kill strBase Name srcDstName As strBase
End Function
puis tu cree un bouton en rappelant la fonction
call fCompactBase("C:moncheminmabase.mdb")
tous les tables attachées doivent etre fermée
3stone
Salut,
MINOT gilles wrote:
tu colle ce code dans un module
Public Function fCompactBase(strBase As String)
Dim srcDstName As String
srcDstName = strBase & ".tmp" DBEngine.CompactDatabase strBase, srcDstName Kill strBase Name srcDstName As strBase
Bonjour, Merci pour les infos (mais je savais faire - j'ai même rajouter un peu de code pour aller chercher le nom de la base attachée). Le pb. c'est que je veux faire ça à partir de l'application frontale, donc la base à compacter - partagée sur le réseau - est "ouverte" par un ou plusieurs utilisateurs (et ça engendre l'erreur n°3356). Il faut donc rajouter un peu de code (traitement de l'erreur...) A+ ejc
"ejc" <~ a écrit dans le message de news:
Bonjour, Tout est dans l'objet... Comment compacter la base attachée à partir de l'appli. frontale ? 1-Ne pas attacher les tables (Hum...) 2-Compacter 3-Attacher les tables Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce propos... Merci d'avance, ejc
Bonjour,
Merci pour les infos (mais je savais faire - j'ai même rajouter un peu de
code pour aller chercher le nom de la base attachée). Le pb. c'est que je
veux faire ça à partir de l'application frontale, donc la base à compacter -
partagée sur le réseau - est "ouverte" par un ou plusieurs utilisateurs (et
ça engendre l'erreur n°3356). Il faut donc rajouter un peu de code
(traitement de l'erreur...)
A+
ejc
"ejc" <~jpg@jpg.net> a écrit dans le message de news:
u5irqXgKKHA.4376@TK2MSFTNGP03.phx.gbl...
Bonjour,
Tout est dans l'objet...
Comment compacter la base attachée à partir de l'appli. frontale ?
1-Ne pas attacher les tables (Hum...)
2-Compacter
3-Attacher les tables
Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce
propos...
Merci d'avance,
ejc
Bonjour, Merci pour les infos (mais je savais faire - j'ai même rajouter un peu de code pour aller chercher le nom de la base attachée). Le pb. c'est que je veux faire ça à partir de l'application frontale, donc la base à compacter - partagée sur le réseau - est "ouverte" par un ou plusieurs utilisateurs (et ça engendre l'erreur n°3356). Il faut donc rajouter un peu de code (traitement de l'erreur...) A+ ejc
"ejc" <~ a écrit dans le message de news:
Bonjour, Tout est dans l'objet... Comment compacter la base attachée à partir de l'appli. frontale ? 1-Ne pas attacher les tables (Hum...) 2-Compacter 3-Attacher les tables Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce propos... Merci d'avance, ejc
3stone
Salut,
Non, on ne sait/peut pas compacter une base ouverte!
Pour éviter l'erreur, tu peux même t'assurer que personne n'est "accroché", car tu dois pouvoir l'ouvrir en mode exclusif : http://www.3stone.be/access/articles.php?lng=fr&pgi
au besoin, tu déconnectes les récalcitrants... http://www.3stone.be/access/articles.php?lng=fr&pgq
PS: Le lien que je t'ai donné sert justement à compacter une base "externe", dont les tables sont liées, donc...
Bonjour, Merci pour les infos (mais je savais faire - j'ai même rajouter un peu de code pour aller chercher le nom de la base attachée). Le pb. c'est que je veux faire ça à partir de l'application frontale, donc la base à compacter - partagée sur le réseau - est "ouverte" par un ou plusieurs utilisateurs (et ça engendre l'erreur n°3356). Il faut donc rajouter un peu de code (traitement de l'erreur...) A+ ejc
"ejc" <~ a écrit dans le message de news:
Bonjour, Tout est dans l'objet... Comment compacter la base attachée à partir de l'appli. frontale ? 1-Ne pas attacher les tables (Hum...) 2-Compacter 3-Attacher les tables Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce propos... Merci d'avance, ejc
Salut,
Non, on ne sait/peut pas compacter une base ouverte!
Pour éviter l'erreur, tu peux même t'assurer que personne
n'est "accroché", car tu dois pouvoir l'ouvrir en mode exclusif :
http://www.3stone.be/access/articles.php?lng=fr&pgi
au besoin, tu déconnectes les récalcitrants...
http://www.3stone.be/access/articles.php?lng=fr&pgq
PS: Le lien que je t'ai donné sert justement à compacter
une base "externe", dont les tables sont liées, donc...
Bonjour,
Merci pour les infos (mais je savais faire - j'ai même rajouter un
peu de code pour aller chercher le nom de la base attachée). Le pb.
c'est que je veux faire ça à partir de l'application frontale, donc
la base à compacter - partagée sur le réseau - est "ouverte" par un
ou plusieurs utilisateurs (et ça engendre l'erreur n°3356). Il faut
donc rajouter un peu de code (traitement de l'erreur...)
A+
ejc
"ejc" <~jpg@jpg.net> a écrit dans le message de news:
u5irqXgKKHA.4376@TK2MSFTNGP03.phx.gbl...
Bonjour,
Tout est dans l'objet...
Comment compacter la base attachée à partir de l'appli. frontale ?
1-Ne pas attacher les tables (Hum...)
2-Compacter
3-Attacher les tables
Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce
propos...
Merci d'avance,
ejc
Non, on ne sait/peut pas compacter une base ouverte!
Pour éviter l'erreur, tu peux même t'assurer que personne n'est "accroché", car tu dois pouvoir l'ouvrir en mode exclusif : http://www.3stone.be/access/articles.php?lng=fr&pgi
au besoin, tu déconnectes les récalcitrants... http://www.3stone.be/access/articles.php?lng=fr&pgq
PS: Le lien que je t'ai donné sert justement à compacter une base "externe", dont les tables sont liées, donc...
Bonjour, Merci pour les infos (mais je savais faire - j'ai même rajouter un peu de code pour aller chercher le nom de la base attachée). Le pb. c'est que je veux faire ça à partir de l'application frontale, donc la base à compacter - partagée sur le réseau - est "ouverte" par un ou plusieurs utilisateurs (et ça engendre l'erreur n°3356). Il faut donc rajouter un peu de code (traitement de l'erreur...) A+ ejc
"ejc" <~ a écrit dans le message de news:
Bonjour, Tout est dans l'objet... Comment compacter la base attachée à partir de l'appli. frontale ? 1-Ne pas attacher les tables (Hum...) 2-Compacter 3-Attacher les tables Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce propos... Merci d'avance, ejc
MINOT gilles
On 1 sep, 14:10, "3stone" wrote:
Salut,
Non, on ne sait/peut pas compacter une base ouverte!
Pour éviter l'erreur, tu peux même t'assurer que personne n'est "accroché", car tu dois pouvoir l'ouvrir en mode exclusif :http:/ /www.3stone.be/access/articles.php?lng=fr&pgi
au besoin, tu déconnectes les récalcitrants...http://www.3stone.be/ac cess/articles.php?lng=fr&pgq
PS: Le lien que je t'ai donné sert justement à compacter une base "externe", dont les tables sont liées, donc...
-- A+ Pierre (3stone) Access MVP Perso:http://www.3stone.be/ MPFA:http://www.mpfa.info/ (infos générales)
ejc wrote: > Bonjour, > Merci pour les infos (mais je savais faire - j'ai même rajouter un > peu de code pour aller chercher le nom de la base attachée). Le pb. > c'est que je veux faire ça à partir de l'application frontale, donc > la base à compacter - partagée sur le réseau - est "ouverte" p ar un > ou plusieurs utilisateurs (et ça engendre l'erreur n°3356). Il faut > donc rajouter un peu de code (traitement de l'erreur...) > A+ > ejc
> "ejc" <~ a écrit dans le message de news: > >> Bonjour, >> Tout est dans l'objet... >> Comment compacter la base attachée à partir de l'appli. frontale ? >> 1-Ne pas attacher les tables (Hum...) >> 2-Compacter >> 3-Attacher les tables >> Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce >> propos... >> Merci d'avance, >> ejc- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
et à Dieu ce qui est à Dieu... ;-)
On 1 sep, 14:10, "3stone" <home@sweet_home.be> wrote:
Salut,
Non, on ne sait/peut pas compacter une base ouverte!
Pour éviter l'erreur, tu peux même t'assurer que personne
n'est "accroché", car tu dois pouvoir l'ouvrir en mode exclusif :http:/ /www.3stone.be/access/articles.php?lng=fr&pg=69
au besoin, tu déconnectes les récalcitrants...http://www.3stone.be/ac cess/articles.php?lng=fr&pg=71
PS: Le lien que je t'ai donné sert justement à compacter
une base "externe", dont les tables sont liées, donc...
--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)
ejc wrote:
> Bonjour,
> Merci pour les infos (mais je savais faire - j'ai même rajouter un
> peu de code pour aller chercher le nom de la base attachée). Le pb.
> c'est que je veux faire ça à partir de l'application frontale, donc
> la base à compacter - partagée sur le réseau - est "ouverte" p ar un
> ou plusieurs utilisateurs (et ça engendre l'erreur n°3356). Il faut
> donc rajouter un peu de code (traitement de l'erreur...)
> A+
> ejc
> "ejc" <~...@jpg.net> a écrit dans le message de news:
> u5irqXgKKHA.4...@TK2MSFTNGP03.phx.gbl...
>> Bonjour,
>> Tout est dans l'objet...
>> Comment compacter la base attachée à partir de l'appli. frontale ?
>> 1-Ne pas attacher les tables (Hum...)
>> 2-Compacter
>> 3-Attacher les tables
>> Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce
>> propos...
>> Merci d'avance,
>> ejc- Masquer le texte des messages précédents -
Non, on ne sait/peut pas compacter une base ouverte!
Pour éviter l'erreur, tu peux même t'assurer que personne n'est "accroché", car tu dois pouvoir l'ouvrir en mode exclusif :http:/ /www.3stone.be/access/articles.php?lng=fr&pgi
au besoin, tu déconnectes les récalcitrants...http://www.3stone.be/ac cess/articles.php?lng=fr&pgq
PS: Le lien que je t'ai donné sert justement à compacter une base "externe", dont les tables sont liées, donc...
-- A+ Pierre (3stone) Access MVP Perso:http://www.3stone.be/ MPFA:http://www.mpfa.info/ (infos générales)
ejc wrote: > Bonjour, > Merci pour les infos (mais je savais faire - j'ai même rajouter un > peu de code pour aller chercher le nom de la base attachée). Le pb. > c'est que je veux faire ça à partir de l'application frontale, donc > la base à compacter - partagée sur le réseau - est "ouverte" p ar un > ou plusieurs utilisateurs (et ça engendre l'erreur n°3356). Il faut > donc rajouter un peu de code (traitement de l'erreur...) > A+ > ejc
> "ejc" <~ a écrit dans le message de news: > >> Bonjour, >> Tout est dans l'objet... >> Comment compacter la base attachée à partir de l'appli. frontale ? >> 1-Ne pas attacher les tables (Hum...) >> 2-Compacter >> 3-Attacher les tables >> Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce >> propos... >> Merci d'avance, >> ejc- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
et à Dieu ce qui est à Dieu... ;-)
ejc
Bonjour à tous, j'ai écrit le code suivant : (j'ai rien inventé de nouveau ; sinon César va faire la gueule !) en tout début d'ouverture de l'appli. frontale '....... Public Sub CompacterTables() Dim OldBase As String, NewBase As String OldBase = fctNomCompletBaseAttachée() ' voir ci-dessous NewBase = fctRépertoireBaseAttachée & "New" & fctNomBaseAttachée '0. Au cas où... If Dir(NewBase) <> "" Then Kill NewBase '1. Compactage dans une nouvelle base On Error GoTo Err_CompacterTables DBEngine.CompactDatabase OldBase, NewBase '2. Suppression de la base originale Kill OldBase '3. Renommer la base compactée avec le nom de la base originale Name NewBase As OldBase Exit_CompacterTables: Exit Sub Err_CompacterTables: 'MsgBox Err.Description On Error GoTo 0 Resume Exit_CompacterTables End Sub '..... 'Fonctions utilisées pour connaître le chemin actuel des tables attachées ACCESS Public Function fctNomCompletBaseAttachée() As String Dim NbTables As Byte, I As Byte, Lg As Byte, NomComplet As String, Pos As Byte NbTables = BaseActive.TableDefs().Count For I = 0 To NbTables - 1 If BaseActive.TableDefs(I).Attributes = dbAttachedTable Then NomComplet = BaseActive.TableDefs(I).Connect: Lg = Len(NomComplet): Pos = InStr(1, NomComplet, "=") fctNomCompletBaseAttachée = Mid(NomComplet, Pos + 1, Lg - Pos) I = NbTables 'Pour forcer la sortie End If Next I End Function '...... Public Function fctRépertoireBaseAttachée() As String 'Ex : BaseActive.TableDefs("UneTable").Connect=>;DATABASE=C:$GTTablesTablesAffaire.mdb Dim I As Integer, NomComplet As String, Lg As Integer, Pos As Byte NomComplet = fctNomCompletBaseAttachée() Lg = Len(NomComplet) For I = Lg To 1 Step -1 Pos = InStr(I, NomComplet, "") If Pos <> 0 Then fctRépertoireBaseAttachée = Mid(NomComplet, 1, Pos) Exit For End If Next I End Function '..... Public Function fctNomBaseAttachée() As String Dim I As Integer, NomComplet As String, Lg As Integer, Pos As Byte NomComplet = fctNomCompletBaseAttachée() Lg = Len(NomComplet) For I = Lg To 1 Step -1 Pos = InStr(I, NomComplet, "") If Pos <> 0 Then fctNomBaseAttachée = Right(NomComplet, Lg - Pos) Exit For End If Next I End Function '..... La base attachée est bien compactée sans message d'erreur pour le PREMIER UTILISATEUR. En fait, ça me suffit... A+
Et j "ejc" <~ a écrit dans le message de news:
Bonjour, Tout est dans l'objet... Comment compacter la base attachée à partir de l'appli. frontale ? 1-Ne pas attacher les tables (Hum...) 2-Compacter 3-Attacher les tables Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce propos... Merci d'avance, ejc
Bonjour à tous,
j'ai écrit le code suivant : (j'ai rien inventé de nouveau ; sinon César va
faire la gueule !) en tout début d'ouverture de l'appli. frontale
'.......
Public Sub CompacterTables()
Dim OldBase As String, NewBase As String
OldBase = fctNomCompletBaseAttachée() ' voir ci-dessous
NewBase = fctRépertoireBaseAttachée & "New" & fctNomBaseAttachée
'0. Au cas où...
If Dir(NewBase) <> "" Then Kill NewBase
'1. Compactage dans une nouvelle base
On Error GoTo Err_CompacterTables
DBEngine.CompactDatabase OldBase, NewBase
'2. Suppression de la base originale
Kill OldBase
'3. Renommer la base compactée avec le nom de la base originale
Name NewBase As OldBase
Exit_CompacterTables:
Exit Sub
Err_CompacterTables:
'MsgBox Err.Description
On Error GoTo 0
Resume Exit_CompacterTables
End Sub
'.....
'Fonctions utilisées pour connaître le chemin actuel des tables attachées
ACCESS
Public Function fctNomCompletBaseAttachée() As String
Dim NbTables As Byte, I As Byte, Lg As Byte, NomComplet As String, Pos As
Byte
NbTables = BaseActive.TableDefs().Count
For I = 0 To NbTables - 1
If BaseActive.TableDefs(I).Attributes = dbAttachedTable Then
NomComplet = BaseActive.TableDefs(I).Connect: Lg = Len(NomComplet):
Pos = InStr(1, NomComplet, "=")
fctNomCompletBaseAttachée = Mid(NomComplet, Pos + 1, Lg - Pos)
I = NbTables 'Pour forcer la sortie
End If
Next I
End Function
'......
Public Function fctRépertoireBaseAttachée() As String
'Ex :
BaseActive.TableDefs("UneTable").Connect=>;DATABASE=C:$GTTablesTablesAffaire.mdb
Dim I As Integer, NomComplet As String, Lg As Integer, Pos As Byte
NomComplet = fctNomCompletBaseAttachée()
Lg = Len(NomComplet)
For I = Lg To 1 Step -1
Pos = InStr(I, NomComplet, "")
If Pos <> 0 Then
fctRépertoireBaseAttachée = Mid(NomComplet, 1, Pos)
Exit For
End If
Next I
End Function
'.....
Public Function fctNomBaseAttachée() As String
Dim I As Integer, NomComplet As String, Lg As Integer, Pos As Byte
NomComplet = fctNomCompletBaseAttachée()
Lg = Len(NomComplet)
For I = Lg To 1 Step -1
Pos = InStr(I, NomComplet, "")
If Pos <> 0 Then
fctNomBaseAttachée = Right(NomComplet, Lg - Pos)
Exit For
End If
Next I
End Function
'.....
La base attachée est bien compactée sans message d'erreur pour le PREMIER
UTILISATEUR.
En fait, ça me suffit...
A+
Et j
"ejc" <~jpg@jpg.net> a écrit dans le message de news:
u5irqXgKKHA.4376@TK2MSFTNGP03.phx.gbl...
Bonjour,
Tout est dans l'objet...
Comment compacter la base attachée à partir de l'appli. frontale ?
1-Ne pas attacher les tables (Hum...)
2-Compacter
3-Attacher les tables
Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce
propos...
Merci d'avance,
ejc
Bonjour à tous, j'ai écrit le code suivant : (j'ai rien inventé de nouveau ; sinon César va faire la gueule !) en tout début d'ouverture de l'appli. frontale '....... Public Sub CompacterTables() Dim OldBase As String, NewBase As String OldBase = fctNomCompletBaseAttachée() ' voir ci-dessous NewBase = fctRépertoireBaseAttachée & "New" & fctNomBaseAttachée '0. Au cas où... If Dir(NewBase) <> "" Then Kill NewBase '1. Compactage dans une nouvelle base On Error GoTo Err_CompacterTables DBEngine.CompactDatabase OldBase, NewBase '2. Suppression de la base originale Kill OldBase '3. Renommer la base compactée avec le nom de la base originale Name NewBase As OldBase Exit_CompacterTables: Exit Sub Err_CompacterTables: 'MsgBox Err.Description On Error GoTo 0 Resume Exit_CompacterTables End Sub '..... 'Fonctions utilisées pour connaître le chemin actuel des tables attachées ACCESS Public Function fctNomCompletBaseAttachée() As String Dim NbTables As Byte, I As Byte, Lg As Byte, NomComplet As String, Pos As Byte NbTables = BaseActive.TableDefs().Count For I = 0 To NbTables - 1 If BaseActive.TableDefs(I).Attributes = dbAttachedTable Then NomComplet = BaseActive.TableDefs(I).Connect: Lg = Len(NomComplet): Pos = InStr(1, NomComplet, "=") fctNomCompletBaseAttachée = Mid(NomComplet, Pos + 1, Lg - Pos) I = NbTables 'Pour forcer la sortie End If Next I End Function '...... Public Function fctRépertoireBaseAttachée() As String 'Ex : BaseActive.TableDefs("UneTable").Connect=>;DATABASE=C:$GTTablesTablesAffaire.mdb Dim I As Integer, NomComplet As String, Lg As Integer, Pos As Byte NomComplet = fctNomCompletBaseAttachée() Lg = Len(NomComplet) For I = Lg To 1 Step -1 Pos = InStr(I, NomComplet, "") If Pos <> 0 Then fctRépertoireBaseAttachée = Mid(NomComplet, 1, Pos) Exit For End If Next I End Function '..... Public Function fctNomBaseAttachée() As String Dim I As Integer, NomComplet As String, Lg As Integer, Pos As Byte NomComplet = fctNomCompletBaseAttachée() Lg = Len(NomComplet) For I = Lg To 1 Step -1 Pos = InStr(I, NomComplet, "") If Pos <> 0 Then fctNomBaseAttachée = Right(NomComplet, Lg - Pos) Exit For End If Next I End Function '..... La base attachée est bien compactée sans message d'erreur pour le PREMIER UTILISATEUR. En fait, ça me suffit... A+
Et j "ejc" <~ a écrit dans le message de news:
Bonjour, Tout est dans l'objet... Comment compacter la base attachée à partir de l'appli. frontale ? 1-Ne pas attacher les tables (Hum...) 2-Compacter 3-Attacher les tables Il y a-t-il une autre façon de procéder ? Je n'ai rien trouvé à ce propos... Merci d'avance, ejc