1 unit UAccessOperate;
2
3 interface
4
5 uses Windows, Sysutils, ComObj, Dialogs, ActiveX;
6
7
8
9 //修改ACCESS数据库密码
10 function ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;
11
12 //压缩与修复数据库,覆盖源文件
13 function CompactDatabase(AFileName,APassWord:string):boolean;
14
15 //建立Access文件,如果文件存在则失败
16 function CreateAccessFile(FileName:String;PassWord:string=''):boolean;
17
18 implementation
19
20 //声明连接字符串
21 Const
22 SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
23
24 +'Jet OLEDB:Database Password=%s;';
25
26
27
28 //=============================================================================
29
30 // Procedure: GetTempPathFileName
31
32 // Author : ysai
33
34 // Date : 2003-01-27
35
36 // Arguments: (None)
37
38 // Result : string
39
40 //=============================================================================
41
42 function GetTempPathFileName():string;
43
44 //取得临时文件名
45 var
46 SPath,SFile:array [0..254] of char;
47 begin
48 GetTempPath(254,SPath);
49 GetTempFileName(SPath,'~SM',0,SFile);
50 result:=SFile;
51 DeleteFile(PChar(result));
52 end;
53
54
55
56 //=============================================================================
57
58 // Procedure: CreateAccessFile
59
60 // Author : ysai
61
62 // Date : 2003-01-27
63
64 // Arguments: FileName:String;PassWord:string=''
65
66 // Result : boolean
67
68 //=============================================================================
69 //建立Access文件,如果文件存在则失败
70 function CreateAccessFile(FileName:String;PassWord:string=''):boolean;
71 var
72 STempFileName:string;
73 vCatalog:OleVariant;
74 begin
75 STempFileName:=GetTempPathFileName;
76 try
77 vCatalog:=CreateOleObject('ADOX.Catalog');
78 vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
79 result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
80 DeleteFile(STempFileName);
81 except
82 result:=false;
83 end;
84 end;
85
86
87
88 //=============================================================================
89
90 // Procedure: CompactDatabase
91
92 // Author : ysai
93
94 // Date : 2003-01-27
95
96 // Arguments: AFileName,APassWord:string
97
98 // Result : boolean
99
100 //=============================================================================
101
102 function CompactDatabase(AFileName,APassWord:string):boolean;
103 //压缩与修复数据库,覆盖源文件
104 var
105 STempFileName:string;
106 vJE:OleVariant;
107 begin
108 STempFileName:=GetTempPathFileName;
109 try
110 vJE:=CreateOleObject('JRO.JetEngine');
111 vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]),
112 format(SConnectionString,[STempFileName,APassWord]));
113 result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
114 DeleteFile(STempFileName);
115 except
116 result:=false;
117 end;
118 end;
119
120
121
122 //=============================================================================
123 // Procedure: ChangeDatabasePassword
124 // Author : ysai
125 // Date : 2003-01-27
126 // Arguments: AFileName,AOldPassWord,ANewPassWord:string
127 // Result : boolean
128 //=============================================================================
129 //修改ACCESS数据库密码
130 function ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;
131 var
132 STempFileName:string;
133 vJE:OleVariant;
134 begin
135 STempFileName:=GetTempPathFileName;
136 try
137 vJE:=CreateOleObject('JRO.JetEngine');
138 vJE.CompactDatabase(format(SConnectionString,[AFileName,AOldPassWord]),
139 format(SConnectionString,[STempFileName,ANewPassWord]));
140 result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
141 DeleteFile(STempFileName);
142 except
143 result:=false;
144 end;
145 end;
146
147 end.