begin process at 2010 03 11 22:49:41
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > COMPACTAGE BDD AVEC JETCOMP

COMPACTAGE BDD AVEC JETCOMP


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de Donnees Classé sous :compactage, jetcomp, access Niveau :Débutant Date de création :04/09/2007 Vu / téléchargé :4 168 / 454

Auteur : bouv

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note


 Description

Pour faire suite à une demande du Forum.
Le compactage de la base se fait avec l'utilitaire JETCOMP de microsoft au lieu d'utiliser MSJRO.

J'ai codé cela il y à quelques temps sur les conseils de Renfield car je voulais pouvoir faire défiler une progressbar pendant le compactage.
Chose que l'on ne peut pas faire avec MSJRO.

Le code est simple et commenté.

Désolé j'ai du faire une double compression RAR puis ZIP pour que cela passe sur le serveur (à cause de la BDD).

Source

  • Public Sub BDD_Compacter(ByRef FileName As String, _
  • Optional ByRef Password As String = vbNullString, _
  • Optional ByVal Confirmation As Boolean = True)
  • ....
  • End Sub
Public Sub BDD_Compacter(ByRef FileName As String, _
                Optional ByRef Password As String = vbNullString, _
                Optional ByVal Confirmation As Boolean = True)

....

End Sub

 Conclusion

Le module mShellWait est un code qui vient de Renfield. Pris quelque part sur ce site.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Source.rarTélécharger ce fichier [Réservé aux membres club]557 453 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) OCR (UTILISATION DE TESSNET2.DLL)
Source avec Zip Source avec une capture Source .NET (Dotnet) LISTVIEWEX
Source avec Zip Source avec une capture Source .NET (Dotnet) SPAM ANTI SPAM
Source avec Zip Source .NET (Dotnet) UTILISER ADO.NET COMME EN ADO (RECORDSET)
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DOUBLE CLIC SUR LISTVIEW (SUBCLASSING)

 Sources de la même categorie

Source avec Zip CHARGER DES DONNÉES DEPUIS UN FICHIER TXT DANS UNE BASE DE D... par ig3
Source avec Zip Source avec une capture GESTIONPMPT par mark100
Source avec Zip Source .NET (Dotnet) DATA ACCESS COMPONENT par zaimfaycal
Source avec Zip GESTION ENSEIGNANTS par Elmarzougui
Source avec Zip GESTION D'UNE BIBLIOTHÈQUE par Elmarzougui

 Sources en rapport avec celle ci

Source avec Zip OUTIL DE FORMATION par l0r3nz1
Source avec Zip GESTION ENSEIGNANTS par Elmarzougui
Source avec Zip VISUALISATION BASE ACCESS par claude440
Source avec Zip Source avec une capture MESSAGE DE COMPACTAGE D'OUTLOOK SOUS XP par Sechaud
Source avec Zip Source .NET (Dotnet) REPORTING SIMPLIFIÉ par deuxmains

Commentaires et avis

Commentaire de Chatbour le 04/09/2007 19:55:16

Merci pour la source :)

en quoi consiste le compactage d'une base de donnée ?
c'est peut être éliminer l'espace gaspillé ?

Commentaire de BruNews le 04/09/2007 20:13:29 administrateur CS

Vaste sujet...

espace gaspillé, on va voir que ça dépend du point de vue, place disque ou performances.

Une BDD est faite pour croitre donc elle ne fait que marquer 'libres' les lignes supprimées mais ne resserre jamais les fichiers de données (suppression physique) par un appel SetEndOfFile(). Il est moins couteux (en perfs) d'écrire sur une place déjà attribuée sur le disque (réécriture) plutot qu'une écriture nouvelle car oblige le driver fichier à trouver des clusters libres, si non contigus il faut à chaque morceau écrire aussi le pointeur sur le prochain cluster.

Résumé rapide mais c'est le principe.

Commentaire de bouv le 04/09/2007 20:37:27

J'allais le dire...
Non je déconne mais c'est un bon résumé.
Peut être déjà un peu trop technique pour les néophytes mais faut bien progresser ;-)

Commentaire de Chatbour le 04/09/2007 21:16:35

Merci pour les informations, mais je ne pige pas encore la tâche du compactage de la base de donnée :-/

Commentaire de BruNews le 04/09/2007 21:20:00 administrateur CS

Suppression physique des places non occupées, se fait par réécriture complète.

Commentaire de Chatbour le 04/09/2007 21:40:44

Merci chef !

Commentaire de PCPT le 04/09/2007 21:53:50 administrateur CS

c'est le même principe avec des variables.

il est plus rapide d'écrire dans une allocation créée que de redimensionner à chaque écriture


voici un exemple plus ou moins comparable (principe pour les variables)


Option Explicit
Const LB As Integer = 1000
Const UB As Integer = 9000
Dim a(LB To UB) As String 'contiendra 4 caractères par item


Private Sub Form_Load()
    Dim i As Long, t As Currency
    
'   rempli le tableau
    For i = LB To UB
        a(i) = CStr(i)
    Next i

'   méthode longue
    Dim r1 As String
    t = Timer
    Call methode_longue(r1)
    Debug.Print "1> TEMPS : " & Timer - t & " ms"
    
    DoEvents
    
'   méthode rapide, en utilisant l'emplacement créé
    Dim r2 As String
    t = Timer
    Call methode_rapide(r2)
    Debug.Print "2> TEMPS : " & Timer - t & " ms"

    Unload Me
End Sub

Sub methode_longue(ByRef r As String)
    Dim i As Long
    r = vbNullString
    For i = LB To UB
        r = r & a(i)
    Next i
End Sub

Sub methode_rapide(ByRef r As String)
    Dim i As Long, iLen As Integer
    iLen = Len(a(LB))
    r = String(((UB - LB + 1) * iLen), " ")
    For i = LB To UB
        Mid$(r, ((((i - LB) + 1) * iLen) + 1 - iLen), iLen) = a(i)
    Next i
End Sub



++ ;)

Commentaire de PCPT le 04/09/2007 21:58:38 administrateur CS

* échelle en seconde mais c'est pareil... ;)

Commentaire de asimengo le 05/09/2007 14:05:43

@PCPT: je trouve toujours un peu lourd d'écrire des codes du genre de ta méthode rapide. L'utilisation des suites facilitent grandement la compréhension et même accélère également l'exécution. Je sais que c'était juste pour faire un aperçu mais c'est quand même pas une bonne habitude pour ceux qui lisent ça.

Voila, je la réecris comme il se doit.

Sub methode_rapide(ByRef r As String)
    Dim i As Long, iLen As Integer, Ui as long
    iLen = Len(a(LB))
    r = String(((UB - LB + 1) * iLen), " ")
    Ui=1: Mid$(r, Ui, iLen) = a(LB)

    For i = LB +1 To UB
       Ui=Ui+iLen: Mid$(r, Ui,iLen) = a(i)
    Next i
End Sub

C'est bien pour compréhensible et surtout plus rapide.

Commentaire de bouv le 05/09/2007 14:41:53

ASIMENGO>>Je crois que c'est une question de goût tout ça. Chacun ses préférences. Perso je préfère le code de PCPT pour les raisons suivantes :

- Plus concis
- Ne passe pas par la variable Ui ce qui peut faire gagner quelques précieux cycles.

++
Bouv

Commentaire de asimengo le 05/09/2007 15:26:57

@BOUV: Question de gout?, humm je dirais y'a même pas photo, hé ben faut pas dire des bétises.

Commentaire de BruNews le 05/09/2007 18:17:47 administrateur CS

Ui=Ui+iLen
devrait normalement couter 1 cycle, absolument imbattable.

((((i - LB) + 1) * iLen) + 1 - iLen)
ici approximativement 12 cycles.

Commentaire de PCPT le 05/09/2007 18:57:41 administrateur CS

pour l'exemple vaut mieux alors passer par une variable intermédiaire OK

le problème ne se serait pas posé si j'avais commencé le tableau à 1 en mettant "data_bidon" en boucle dans le load.

ce qui est important ici est évidemment le principe! en l'uccorence l'utilisation de mid dans l'espace déjà créé.

du reste on s'aperçoit au moins que malgré le manque d'optimisation de l'exemple, la différence des 2 méthode reste énorme ;)

bref pour une base çà nous rapelle donc le compromis qu'il peut falloir faire entre taille (de la base) et rapidité (d'écriture)

++ ;)

Commentaire de BruNews le 05/09/2007 19:12:07 administrateur CS

Très clair que ça n'influe pas sur le principe de l'exemple.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Compactage d'une base de données en Access 2000 [ par PierreRIVET ] Je cherche à compacter une base de données en Access 2000 à l'aide du code VB6 inclus dans le logiciel.Pour l'instant j'utilise la méthode CompactData Compactage de base de données ACCESS automatique [ par Nitocris ] Comment faire pour automatiser le compactage de la base de donnée ?J'aimerais que le compactage se réalise tous les soir a une certaine heure ou quant COMPACTAGE BD ACCESS [ par multipac ] Bonjour,Y a t-il quelqu'un qui peut m'aider comment compacter une base de données ACCESS en VB6.Sachant que j'utilise une base volumineuse, et j' [VB6] AVANCEMENT COMPACTAGE BDD ACCESS [ par bouv ] Salut,Je souhaite faire patienter l'utilisateur lors du compactage de la base ACCESS de mon appliSauf que plus rien ne répond dans l'appli lorsqu'elle Help Me ! Compactage Access [ par renaud ] Une de mes applis Access 97 travaille avec des formulaires générés en mode RunTime. Il s'agit de tableaux Gantt de suivi de projet (Prévu/consommé), c Droit sur compactage dans Access [ par Stoomm ] Bonjour, je souhaiterais empeché les utilisateurs d'une base access de pouvoir la compacté.Y a t il un moyen ?Merci d'avance.A+.Stoomm. Droit sur compactage dans Access [ par Stoomm ] Bonjour, je souhaiterais empeché les utilisateurs d'une base access de pouvoir la compacté.Y a t il un moyen ?Merci d'avance.A+.Stoomm. compactage d'une base access [ par johanduflost ] Quelqu'un sait-il comment compacter une base de données access sur internet avec vb?Je débute. Je connais la méthode dbengine.compactdatabase mais ça Gestion Access multi utilisateur [ par molo molo ] Bonjour à tous,Voilà j'ai une appli VB6-Access 2000 en réseau.J'ai une procédure automatique de backup de la base et de compactage de celle-ci à inter Compactage d'une base de donnee Access [ par vbmike ] Bonjour,Je travaille avec un base de donnée Access dont une table me sert table de travaille.Des records y sont créés et effacés. Celle ci grossit et


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales