关于如下问提
!-------------------------------------------
在Vb中可以利用DAO很容易地创建ACCESS数据库。
不知怎么用Delphi来创建Access?
有那位大虾这样做过。最好能有源码。谢谢
!-------------------------------------------
你的回复是:
!-------------------------------------------------------------------
Const
  SConnectionString       = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
function CreateAccessFile(FileName:String;PassWord:string=''):boolean;
//建立Access文件,如果文件存在则失败
var
  STempFileName:string;
  vCatalog:OleVariant;
begin
  STempFileName:='d:\temp\123.mdb';
  try
    vCatalog:=CreateOleObject('ADOX.Catalog');
    vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
    result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
    DeleteFile(STempFileName);
  except
    result:=false;
  end;
end;                                +'Jet OLEDB:Database Password=%s;';
!-------------------------------------------------------------------但我用了之后有个问题
创建的数据库是打开的,怎样关闭呢?
再操作
FileName这个数据文件说是独占了。请再关注
留贴,必谢。

解决方案 »

  1.   

    Const
      SConnectionString       = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'+'Jet OLEDB:Database Password=%s;';function CreateAccessFile(FileName:String;PassWord:string=''):boolean;
    //建立Access文件,如果文件存在则失败
    var
      STempFileName:string;
      vCatalog:OleVariant;
    begin
      STempFileName:='d:\temp\123.mdb';
      try
        vCatalog:=CreateOleObject('ADOX.Catalog');
        vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
        result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
        DeleteFile(STempFileName);
      except
        result:=false;
      end;
    end;                                
    我又试过,就用你的代码,可以建,但vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));建出来的数据库不能用delphi打开,说是他的用户组信息丢失了。请你帮我看一下。
    另,ADOX对像的资料从那儿查阅?
      

  2.   

    建的新库是一空库,是没有表的。
    如果不加密码是可以用TAdoconnection打开的,如果加上密码用TAdoconnection打不开。
      

  3.   

    还要问一下
    仁兄 WWWWA(aaaa) 
    ADOX相关的资料在那儿能找到,可否给我一份?
      

  4.   

    如果加上密码用TAdoconnection打不开,在ADOCONNECTION的
    CONNECTIONSTRING中将密码写上,
    你的ADOCONNECTION CONNECTIONSTRING?
      

  5.   

    具体的错误提示为:
    初始化提供者时发生错误,测试连接失败。无法启动应用程序。工作组信息文件丢失,或是被其它用户以独占方式打开。具本代码如下
    function TForm1.CreateAccessFile(FileName:String;PassWord:string):boolean;
    //建立Access文件,如果文件存在则失败
    const
      SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s;';
    var
      STempFileName:string;
      vCatalog:OleVariant;
    begin
      STempFileName:='d:\123.mdb';
      try
        vCatalog:=CreateOleObject('ADOX.Catalog');
        vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
        result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
        DeleteFile(STempFileName);
      except
        result:=false;
      end;
    end;如果CreateAccessFile('','');用TADOConnection打开没有问题。
    如查CreateAccessFile('','12');打TADOConnection开有问题。
    connectionstring是用向导生成的,在向导测试连接时就报错!
    如下:
    Provider=Microsoft.Jet.OLEDB.4.0;Password=12;Data Source=D:\123.mdb;Persist Security Info=True
    试试看你那儿有这样的问题没有呀?
      

  6.   

    adoconnectionstring:
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\zz\123.mdb;Persist Security Info=False;Jet OLEDB:Database Password=12
    在D6+OFFICE2000下已测试通过
      

  7.   

    看看李维大叔的书。什么delphi 5.x ado/mts/com/com+编程的那个。会告诉你为什么用ADO而不是DAO。不要说VB好吗?delphi程序员鄙视这种看法,VB下怎么怎么。两码事!你现在用delphi。请转换思维!VB能做到的,delphi都能做到,而且比它好。
      

  8.   

    谁在说vb好了?
    vb好我也不用delphi了。
      

  9.   

    不会吧,用你的字符串连接真的行耶!
    Persist Security Info=False不同,顺序不同?这也会影响呀!
    好奇怪?这是怎么会事呢?为什么会这样?
      

  10.   

    我的:
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\zz\123.mdb;Persist Security Info=False;Jet OLEDB:Database Password=12
    你的:
    Provider=Microsoft.Jet.OLEDB.4.0;Password=12;Data Source=D:\123.mdb;Persist Security Info=True
    再仔细看看
      

  11.   

    给你贴一段有关连接字符串的,Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassword;"它包含下列关键字:关键字 说明 
    Provider 指定 OLE DB Provider for Microsoft Jet。 
    Data Source 指定数据库路径和文件名(例如,c:\Northwind.mdb)。 
    User ID 指定用户名称。如果未指定此关键字,则默认使用字符串 "admin"。 
    Password 指定用户密码。如果未指定此关键字,则默认使用空字符串 ("")。