用OLEDB.4.0,创建ACCESS数据库,但用OLEDB.3.51就会出错,并提示  "不能使用,文件正在使用中  ",请问应该怎样创建ACCESS97的数据库,并同时建表。  
下面的程序能同时创建ACCESS2000的数据库和数据表:  
procedure  TForm5.RzCreateBtnClick(Sender:  TObject);  
var  
   AppPath,tablename,x,y,z,str,sqlstr:string;  
   CreateAccess,NewTable,CUM:Variant;  
begin  
       tablename:=DateTimeToStr(Now);  
       x:=copy(tablename,17,2);  
       y:=copy(tablename,20,2);  
       z:=copy(tablename,23,2);  
       tablename:='库'+copy(tablename,1,10)+'-'+x+y+z;  
       AppPath:=ExtractFileDir(Application.ExeName);  
       CreateAccess:=CreateOleObject('ADOX.Catalog');  
       CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.3.51;Data  Source='+AppPath+'\'+tablename+'.mdb');  
       showmessage('数据库创建成功!');  
 
       ADOQuery1.ConnectionString:='';  
       ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.3.51;Persist  Security  Info=False;Data  Source='+AppPath+'\'+Tablename+'.mdb';  
       ADOQuery1.Close;  
       tablename:=DateTimeToStr(Now);  
       x:=copy(tablename,17,2);  
       y:=copy(tablename,20,2);  
       z:=copy(tablename,23,2);  
       tablename:='表'+x+y+z;  
       sqlstr:='Create  Table  ';  
       sqlstr:=sqlstr+tablename+'  (ID  int  NOT  NULL,Name  varchar(50)  NOT  NULL,Type  varchar(50)  NULL,';  
       sqlstr:=sqlstr+'length  int  NULL,CFormula  text  NULL,EFormula  text  NULL,Bvalue  varchar(50)  NULL';  
       sqlstr:=sqlstr+',Nodetype  varchar(50)  NULL,Parent  int  NULL,sort  int  NULL,Visible  bit,SB  bit,Readonly  bit)';  
       With  ADOQuery1  Do  
       Begin  
           Close;  
           SQl.Clear;  
           SQl.add(sqlstr);  
           ExecSQL;  
       End;  
end;  
---------------------------------------------------------------  
 
uses  ComObj;  
 
function  CreateDatabase(mDatabaseName:  string):  Boolean;  
var  
   CreateAccess:  OLEVariant;  
begin  
   Result  :=  False;  
   try  
       CreateAccess  :=  CreateOleObject('ADOX.Catalog');  
       try  
           CreateAccess.Create(Format(  
'Provider=Microsoft.Jet.OLEDB.3.51;Data  Source=%s%s.mdb',  
           [ExtractFilePath(Application.ExeName),  mDatabaseName]));  
       finally  
           CreateAccess  :=  Unassigned;  
       end;  
   except  
       Exit;  
   end;  
   Result  :=  True;  
end;  
 
function  CreateTable(mDatabaseName:  string;  mADOQuery:  TADOQuery):  Boolean;  
begin  
   Result  :=  False;  
   try  
       mADOQuery.Close;  
       mADOQuery.ConnectionString  :=  Format(  
'Provider=Microsoft.Jet.OLEDB.3.51;Data  Source=%s%s.mdb',  
           [ExtractFilePath(Application.ExeName),  mDatabaseName]);  
       mADOQuery.SQL.Text  :=  'CREATE  TABLE  Table1  (Field1  varchar(10),  Field2  varchar(10))';  
       mADOQuery.ExecSQL;  
   except  
       Exit;  
   end;  
   Result  :=  True;  
end;  
 
procedure  TForm1.Button1Click(Sender:  TObject);  
begin  
   DeleteFile(ExtractFilePath(Application.ExeName)  +  'test.mdb');  
   CreateDatabase('test');  
   CreateTable('test',  ADOQuery1);  
end;  (转录)请收索以前的旧贴