Bonjour ; dans mon projet [d7 + access 2003], la bdd est protégé avec un mot de passe , la chaine de connexion est comme suite :
le code compactage de la bdd est comme suit:
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 procedure TForm1.FormCreate(Sender: TObject); var cheminBD, chaineCnx : string; begin cheminBD := 'C:\Documents and Settings\a\Bureau\essai comp\gest.mdb'; chaineCnx:= 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'User ID=Admin;' + 'Data Source=' + cheminBD + ';' + 'Mode=Share Deny None;Extended Properties="";' + 'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";' + 'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;' + 'Jet OLEDB:Database Locking Mode=1;' + 'Jet OLEDB:Global Partial Bulk Ops=2;' + 'Jet OLEDB:Global Bulk Transactions=1;' + 'Jet OLEDB:New Database Password="";' + 'Jet OLEDB:Create System Database=False;' + 'Jet OLEDB:Encrypt Database=False;' + 'Jet OLEDB:Don''t Copy Locale on Compact=False;' + 'Jet OLEDB:Compact Without Replica Repair=False;' + 'Jet OLEDB:SFP=False'; ADOConnection1.ConnectionString := chaineCnx ; end;
appel de la fonction :
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 CompactAccessDB(db,mdp : string): Boolean; {DB = path complet de la base Access, MdP = password de la DB } // Ajouter ComObj dans les Uses var v: OLEvariant; begin Result := False; try v := CreateOLEObject('JRO.JetEngine'); try if CopyFile(PAnsiChar(db),PAnsiChar(db+'.bak'),False) then //backup de la base begin V.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+db+';Jet OLEDB:Database Password='+mdp, 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+db+'comp'+';Jet OLEDB:Database Password='+mdp); //compactage DeleteFile(db);// suppression de la base d'origin RenameFile(db+'comp',db); // mise en place de la base compactée Result := True; end; finally V := Unassigned; showmessage('Base de données introuvable'); end; except showmessage('Compactage non réussi'); Result := False; end; end;
mon problème est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 procedure TForm1.compactageClick(Sender: TObject); begin CompactAccessDB(ExtractFilepath(application.ExeName)+'gest.mdb', ''); showmessage('compactage réussi'); end;
j'ai le message base de données introuvable ;
ensuite j'ai le message compactage réussi ;
et la bdd est compactée ;
sachant que ma bdd est protégé par un mot de passe...;
là j'ai pas trouvé ou est l'erreur !!!!!
Partager