J'aimerais savoir si c'est possible de faire compacter une base de donnée acces en utilisant du code visual basic et si oui , comment utiliser et quel est ce code???
Merci de votre aide :
J'aimerais savoir si c'est possible de faire compacter une base de donnée acces en utilisant du code visual basic et si oui , comment utiliser et quel est ce code???
Merci de votre aide :
Dans des pages ASP j'utilise ça:
et ça marche. Ne connaissant pas VB je te laisse le soin et la joie de piocher ce qu'il te faut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 <% Option Explicit Const THEJETVAR= 4 function Squish(thePathDB, boolIs97) Dim fso, Engine, strThePathDB strThePathDB = left(thePathDB,instrrev(ThePathDB,"\")) Set fso = CreateObject("Scripting.FileSystemObject") if fso.FileExists(thePathDB) Then Set Engine = CreateObject("JRO.JetEngine") if boolIs97 = "True" Then Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & thePathDB, _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strThePathDB & "temp.mdb;" ' _ & "Jet OLEDB:Engine Type=" & JET_3X Else Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & thePathDB, _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strThePathDB & "temp.mdb" End if fso.CopyFile strThePathDB & "temp.mdb",thePathDB fso.DeleteFile(strThePathDB & "temp.mdb") Set fso = nothing Set Engine = nothing Squish = "Your database, " & thePathDB & ", has been Compacted" & vbCrLf Else Squish = "The database name or path has Not been found. Try Again" & vbCrLf End if End function %> <HTML><HEAD><TITLE>Compact Database</TITLE></HEAD><BODY> <H2 align="center"> Compacting Dealer database</H2> <P align="center"> <FORM action=compact.asp> Enter relative path To the database, including database name.<BR><BR> <INPUT type="text" name="thePathDB"> <BR><BR> <INPUT type="checkbox" name="boolIs97" value="True"> Check if Access 97 database <BR><I> (default is Access 2000)</I><BR><BR> <INPUT type="submit"> <FORM> <BR><BR> <% Dim thePathDB,boolIs97 thePathDB = request("thePathDB") boolIs97 = request("boolIs97") if thePathDB <> "" Then 'thePathDB = server.mappath(thePathDB) response.write(Squish(thePathDB,boolIs97)) End if %> </P></BODY></HTML>
depuis une page html !!!
joli
Ca n'est pas de moi, je l'ai siphonné je ne sais plus où, mais ça marche bien.
Ça me donne fortement envie de me mettre à l'asp.
Salut,
Sous VB6, j'utilise la commande suivante :
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part DBEngine.CompactDatabase sNomBase, sNomBaseTmp
Oui, ce qui donne un truc dans le genre
J'ai l'impression de commencer à gagater à force de répéter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Function CompactMDB(MDBname As String) Dim accApp As New Access.Application Dim rep As Boolean, pds As Long Dim fs, f, nf As String, tmpFile As String On Error Resume Next Set fs = CreateObject("Scripting.FileSystemObject") ' Créer un nom temporaire tmpFile = fs.GetAbsolutePathName(fs.gettempname) ' (PathNameOnly retourne le chemin du fichier) tmpFile = PathNameOnly(fs.GetAbsolutePathName(MDBname)) & "\" & fs.getbasename(tmpFile) & ".mdb" 'Compacter la base de données 'rep = accApp.CompactRepair(SourceFile:=MDBname, DestinationFile:=tmpFile) rep = accApp.DBEngine.CompactDatabase(SrcName:=MDBname, DestName:=tmpFile) accApp.Quit If rep And Err = 0 Then ' Remplacer Kill MDBname Name tmpFile As MDBname MsgBox "La base de données a été compactée avec succès." & vbCrLf & "(Sa taille actuelle : " & Format(FileLen(MDBname), "### ### ###") & " octets )" Else ' Détruire le tmp If fs.FileExists(tmpFile) Then Kill tmpFile MsgBox "La base de données n'a pas été compactée avec succès." & vbCrLf & "(Sa taille actuelle : " & Format(FileLen(MDBname), "### ### ###") & " octets )", , "DESOLE ..." End If Set fs = Nothing accApp = Nothing End Function
Merci beaucoup tout le monde, J'ai adopter la maniere de l'ASP et ca fonctionne parfaitement !
Merci beaucoup!
Attention, ce programme que j'ai trouvé ici:
http://www.developpez.net/forums/vie...ight=compacter
modifie la version du fichier Access en fonction des composants MDAC installés: je me suis retrouvé avec une base Access 97 impossible à ouvrir, certainement convertie en Access 2000.
pour éviter ce problème, il suffit d'utiliser une constante de version
Constante Description
dbVersion10 Crée une base de données utilisant le format de fichier 1.0 du moteur de base de données Microsoft Jet durant le compactage.
dbVersion11 Crée une base de données utilisant le format de fichier 1.1 du moteur de base de données Microsoft Jet durant le compactage.
dbVersion20 Crée une base de données utilisant le format de fichier 2.0 du moteur de base de données Microsoft Jet durant le compactage.
dbVersion30 Crée une base de données utilisant le format de fichier 3.0 (compatible avec la version 3.5) du moteur de base de données Microsoft Jet durant le compactage.
A quel endroit tu place et utilise cette constante?
La syntaxe est
C'est options qu'il faut renseigner
Code : Sélectionner tout - Visualiser dans une fenêtre à part DBEngine.CompactDatabase olddb, newdb, locale, options, password
Tout est dans l'aide des référence DAO 3.6
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager