Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compactage base de données

1 réponse
Avatar
Joël
Bonjour,
je souhaiterais a la sorti de mon programme que la base de données(format
acces 2000) soit compactée
j'ai donc essayez cette fonction trouver sur la FAQ:
http://faq.vb.free.fr/index.php?question=97 voir mon code ci-dessous;
mais je n'arrive pas a le faire fonctionner un message d'erreur: 'Impossible
d"effectuer cette opération, fonctionnalités de cette version ne sont pas
disponible dans les base de données au format anterieur.' ???
j'ai essayé de convertir la base de données au format acces 2002_2003 même
erreur !

la version de 'Microsoft Jet and Replication Objects 2.81.1128.0' l'erreur
vient il de la version de la base ou de la version de Microsoft Jet and
Replication Objects ?
quand j'utilise cette base en l'ouvrant avec un
DataEnvironment(Provider=Microsoft.Jet.OLEDB.4.0) elle fonctionne
parfaitement depuis un bon moment seul
le compactage que je souhaite ajouter me pose problème.
Merci de votre aide..
Joël

'
Private Sub CompressBase()
Dim BaseActuel As String
Dim BaseCompactée As String
Dim dbPassWord As String
'
Dim JRO As JRO.JetEngine
Set JRO = New JRO.JetEngine
'
Me.MousePointer = vbArrowHourglass

StatusBar.Panels(3).Text = "Compactage en cours... Patientez !!!"

dbPassWord = "******"
BaseActuel = App.Path & "\Fichier\MaBase.mdb"
BaseCompactée = App.Path & "\Fichier\MaBase_2.mdb"

'Si le fichier de base compactée existe déjà
If Dir(BaseCompactée) <> "" Then
Kill BaseCompactée
End If

'Compactage
JRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
BaseActuel & ";Jet OLEDB:Database Password=" & dbPassWord, _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & BaseCompactée &
";Jet OLEDB:Engine Type=4;Jet OLEDB:Database Password=" & dbPassWord
'Copie et restitution à l'identique
FileCopy BaseCompactée, BaseActuel
' supprime
Kill BaseCompactée

StatusBar.Panels(3).Text = "Compactage terminer..."

Me.MousePointer = vbDefault
End Sub

1 réponse

Avatar
Joël
bonjour je viens de trouver l'erreur,
pour les bases de format MDB 4.x jet il faut remplacer Jet OLEDB:Engine
Type=4 (qui es pour les formats MDB Jet 3.x) par Jet OLEDB:Engine Type=5
(pour les formats MDB Jet 4.x)

Joël



"Joël" a écrit dans le message de news:
46ec0b84$0$25950$
Bonjour,
je souhaiterais a la sorti de mon programme que la base de données(format
acces 2000) soit compactée
j'ai donc essayez cette fonction trouver sur la FAQ:
http://faq.vb.free.fr/index.php?question— voir mon code ci-dessous;
mais je n'arrive pas a le faire fonctionner un message d'erreur:
'Impossible d"effectuer cette opération, fonctionnalités de cette version
ne sont pas disponible dans les base de données au format anterieur.' ???
j'ai essayé de convertir la base de données au format acces 2002_2003 même
erreur !

la version de 'Microsoft Jet and Replication Objects 2.81.1128.0' l'erreur
vient il de la version de la base ou de la version de Microsoft Jet and
Replication Objects ?
quand j'utilise cette base en l'ouvrant avec un
DataEnvironment(Provider=Microsoft.Jet.OLEDB.4.0) elle fonctionne
parfaitement depuis un bon moment seul
le compactage que je souhaite ajouter me pose problème.
Merci de votre aide..
Joël

'
Private Sub CompressBase()
Dim BaseActuel As String
Dim BaseCompactée As String
Dim dbPassWord As String
'
Dim JRO As JRO.JetEngine
Set JRO = New JRO.JetEngine
'
Me.MousePointer = vbArrowHourglass

StatusBar.Panels(3).Text = "Compactage en cours... Patientez !!!"

dbPassWord = "******"
BaseActuel = App.Path & "FichierMaBase.mdb"
BaseCompactée = App.Path & "FichierMaBase_2.mdb"

'Si le fichier de base compactée existe déjà
If Dir(BaseCompactée) <> "" Then
Kill BaseCompactée
End If

'Compactage
JRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
BaseActuel & ";Jet OLEDB:Database Password=" & dbPassWord, _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & BaseCompactée &
";Jet OLEDB:Engine Type=4;Jet OLEDB:Database Password=" & dbPassWord
'Copie et restitution à l'identique
FileCopy BaseCompactée, BaseActuel
' supprime
Kill BaseCompactée

StatusBar.Panels(3).Text = "Compactage terminer..."

Me.MousePointer = vbDefault
End Sub