Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;
下面是一个例子,它使用程序目录下的一个access数据库(和和,不要odbc,只要.exe和.mdb就行了),希望对一有帮助
procedure TMainForm.FormCreate(Sender: TObject);
var
S:String;
begin
with ADOConnection do
Begin
Connected:=false;
S:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source="'+ExtractFilePath(Application.ExeName);
S:=S+'Student.mdb";Mode=Share Deny None;Extended Properties="";';
S:=S+'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;';
S:=S+'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;';
S:=S+'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';
ConnectionString:=S;Connected:=true;
End;
ADODataSet.Active:=true;
end;

解决方案 »

  1.   

    phy(beatrice)的试了试没效果,可以用下面的代码
    var x:variant;
    ....
      X:= createoleobject('JRO.JetEngine');
      s1:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\xsgl.mdb;Jet OLEDB:Database Password=111111';
      s2:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\xsgl1.mdb;jet OLEDB:Database Password=111111';
      x.CompactDatabase(s1,s2);
    ....
    没密码的话可以去掉jet OLEDB:Database Password=111111