Soyez le premier à donner votre avis sur cette source.
Snippet vu 25 806 fois - Téléchargée 34 fois
Public Function CompactAndRepair(ByVal dbPath As String, ByVal tmpFolder As String) As Boolean 'Declaration Dim strConnectionString As String Dim oParams() As Object Dim oJRO As Object = Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine")) Dim strLdbPath As String 'Checked that database exist If Not File.Exists(dbPath) Then 'File not found Return False End If 'Checked that database is not open strLdbPath = Mid(dbPath, 1, Len(dbPath) - 3) & "ldb" If File.Exists(strLdbPath) Then 'Database is open Return False End If 'Compact and repair Try oParams = New Object() {"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";Jet OLEDB:Engine Type=5", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & tmpFolder & "~tempdb.mdb;Jet OLEDB:Engine Type=5"} objJRO.GetType().InvokeMember("CompactDatabase", Reflection.BindingFlags.InvokeMethod, Nothing, oJRO, oParams) File.Delete(dbPath) File.Move(tmpFolder & "~tempdb.mdb", dbPath) Runtime.InteropServices.Marshal.ReleaseComObject(oJRO) oJRO = Nothing Return True Catch ex As Exception Return False End Try End Function
MERCI, je n'ai même pas eu besoin de chercher longtemps pour trouver une solution fonctionnelle.
Juste quelques remarques :
- La variable strConnectionString n'est pas utilisée
- La ligne
objJRO.GetType().InvokeMember("CompactDatabase", Reflection.BindingFlags.InvokeMethod, Nothing, oJRO, oParams)
est fausse, ce n'est pas "objJRO" mais "oJRO"
- La ligne
strLdbPath = Mid(pSource, 1, Len(pSource) - 3) & "ldb"
n'est pas très .NET, je lui préfère :
strLdbPath = pSource.Substring(0, pSource.Length - 3) + "ldb"
Et un 10/10 pour m'avoir aidé.
il est gratuit, et répare les bases qui sont parfois, (et étrangement) défectueuses.
il est pilotable par ligne de commande.
objJRO n'est pas declaré
en plus il faut posseder le JRO.JetEngine pour que sa marche
Quelqu'un a mieux?
:)))
Merci
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.