用以下程序创建access数据库,但提示错误,说没有注册类,为何?请赐教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;  

解决方案 »

  1.   

    OLEDB.3.51;改为OLEDB.4.0;
    装个MDAC2.7
      

  2.   

    用OLEDB.3.51,提示“没有注册类别”
    改为OLEDB.4.0后提示“找不到可安装的ISAM.”
      

  3.   

    全部都改了吗?用的什么操作系统?安装有MDAC吗?
      

  4.   

    谣言
    是  Data Source=
    而非Data  Source=
    一个控格之差
    绝对谣言
      

  5.   

    创建一个空白的MDB文件,需要的时候复制一个出来,再在其上做任何操作都行了,可以试试
      

  6.   

    将Data Source=改过来了,提示还是一样!
    ???
      

  7.   

    不会啊,多个控格我提示“找不到可安装的ISAM.”
      

  8.   

    : newyj(吴刚vs西西弗) 说的对
      

  9.   

    复制过去试试,应该不会错了
       try
           CreateAccess  :=  CreateOleObject('ADOX.Catalog');
           try
               CreateAccess.Create(Format(  //运行到此错误
    'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s%s1.mdb',
              [ExtractFilePath(Application.ExeName),  mDatabaseName]));
    //CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.3.51;Data Source=c:\97.mdb');//Persist Security Info=False
           finally
               CreateAccess  :=  Unassigned;
           end;
       except
           Exit;
       end;