OVH Cloud OVH Cloud

Détruire une base de données

2 réponses
Avatar
Jacques
Bonjour,

J'ai une base de données Access protégée par mot de passe. J'arrive à
effacer les tables contenue dans la base données X.mdb. Je voudrai après
avoir effacer les tables, efffacer la base de données X.mdb mais j'ai un
message d'erreur "Permission refusée" !

Après avoir effacer les tables, je ferme ma connection et ensuite
j'utilise Kill App.Path & \"X.mdb" et je reçois l'erreur "Permission
refusée" Voici un extrait du code :

Set cnnTout = New Connection
cnnTout.CursorLocation = adUseClient
cnnTout.Provider = "Microsoft.jet.OLEDB.4.0"
cnnTout.ConnectionString = cheminbase 'Remplacer ici par l'adresse
de la base
cnnTout.Properties("Jet OLEDB:Database password") = "1234"
cnnTout.Open
Set rsTout = cnnTout.OpenSchema(adSchemaTables)
' on remplit la collection
With rsTout
If .RecordCount > 0 Then
Set colTables = New Collection
.MoveFirst
Do Until .EOF
colTables.Add .Fields("TABLE_NAME").Value
.MoveNext
Loop
End If
' on parcourt la collection pour effacer les tables
For X = 1 To colTables.Count
Dim nomTable As String
nomTable = colTables.Item(X)
If Mid(nomTable, 1, 2) <> "MS" Then
cnnTout.Execute "DROP TABLE " & nomTable
End If
Next
.Close
Set cnnTout = Nothing
Kill App.Path & "\Inventaire.mdb" ----------> ERREUR "Permission
refusée"
End With

Merci de vos réponses

2 réponses

Avatar
Laurent Castagnetti
Bonjour Jacques,

dans ton code :

With rsTout
....
....
.Close
Set cnnTout = Nothing
Kill App.Path & "Inventaire.mdb" ----------> ERREUR "Permission
End With

Tu fermes bien ton objet recordset .... ca c'est ok,
Tu liberes bien ton objet connexion, MAIS tu ne fermes pas ta connexion !!!!
Voici ce que je ferai :

With rsTout
....
....
.Close
End With
cnnTout.Close
Set cnnTout = Nothing
Kill App.Path & "Inventaire.mdb" ----------> Là ce devrait fonctionner.


Cordialement
Laurent.


"Jacques" a écrit dans le message de news:

Bonjour,

J'ai une base de données Access protégée par mot de passe. J'arrive à
effacer les tables contenue dans la base données X.mdb. Je voudrai après
avoir effacer les tables, efffacer la base de données X.mdb mais j'ai un
message d'erreur "Permission refusée" !

Après avoir effacer les tables, je ferme ma connection et ensuite
j'utilise Kill App.Path & "X.mdb" et je reçois l'erreur "Permission
refusée" Voici un extrait du code :

Set cnnTout = New Connection
cnnTout.CursorLocation = adUseClient
cnnTout.Provider = "Microsoft.jet.OLEDB.4.0"
cnnTout.ConnectionString = cheminbase 'Remplacer ici par l'adresse
de la base
cnnTout.Properties("Jet OLEDB:Database password") = "1234"
cnnTout.Open
Set rsTout = cnnTout.OpenSchema(adSchemaTables)
' on remplit la collection
With rsTout
If .RecordCount > 0 Then
Set colTables = New Collection
.MoveFirst
Do Until .EOF
colTables.Add .Fields("TABLE_NAME").Value
.MoveNext
Loop
End If
' on parcourt la collection pour effacer les tables
For X = 1 To colTables.Count
Dim nomTable As String
nomTable = colTables.Item(X)
If Mid(nomTable, 1, 2) <> "MS" Then
cnnTout.Execute "DROP TABLE " & nomTable
End If
Next
.Close
Set cnnTout = Nothing
Kill App.Path & "Inventaire.mdb" ----------> ERREUR "Permission
refusée"
End With

Merci de vos réponses




Avatar
Enzo
Bonjour Jacques,

remet l'heure de ton Pc à l'heure (à jour !).


"Jacques" a écrit dans le message de
news:
Bonjour,

J'ai une base de données Access protégée par mot de passe. J'arrive à
effacer les tables contenue dans la base données X.mdb. Je voudrai après
avoir effacer les tables, efffacer la base de données X.mdb mais j'ai un
message d'erreur "Permission refusée" !

Après avoir effacer les tables, je ferme ma connection et ensuite
j'utilise Kill App.Path & "X.mdb" et je reçois l'erreur "Permission
refusée" Voici un extrait du code :

Set cnnTout = New Connection
cnnTout.CursorLocation = adUseClient
cnnTout.Provider = "Microsoft.jet.OLEDB.4.0"
cnnTout.ConnectionString = cheminbase 'Remplacer ici par l'adresse
de la base
cnnTout.Properties("Jet OLEDB:Database password") = "1234"
cnnTout.Open
Set rsTout = cnnTout.OpenSchema(adSchemaTables)
' on remplit la collection
With rsTout
If .RecordCount > 0 Then
Set colTables = New Collection
.MoveFirst
Do Until .EOF
colTables.Add .Fields("TABLE_NAME").Value
.MoveNext
Loop
End If
' on parcourt la collection pour effacer les tables
For X = 1 To colTables.Count
Dim nomTable As String
nomTable = colTables.Item(X)
If Mid(nomTable, 1, 2) <> "MS" Then
cnnTout.Execute "DROP TABLE " & nomTable
End If
Next
.Close
Set cnnTout = Nothing
Kill App.Path & "Inventaire.mdb" ----------> ERREUR "Permission
refusée"
End With

Merci de vos réponses