如何用程序动在一个access文件中新建一个链接表?

解决方案 »

  1.   

    什么意思
    创建表sql
    create table Test_table(a int,b float)
      

  2.   

    找到的资料:
    uses
      comobj;{以下程序,1.mdb为主数据库,2.mdb为需要进行链接的数据库,含有一个表Table2}
    procedure TForm1.Button1Click(Sender: TObject);
    var
      l_cat, l_tbl: OleVariant;
    begin
      {打开链接的要连接到的数据库,即主数据库}
      l_cat := CreateOleObject('ADOX.Catalog');
      l_cat.ActiveConnection := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\1.MDB';  l_tbl := CreateOleObject('ADOX.Table');
      l_tbl.Name := 'Linked_Table2';//链接后的表的名称  {指出链接表的信息}
      l_tbl.ParentCatalog := l_cat;
      l_tbl.Properties('Jet OLEDB:Remote Table Name') := 'Table2';
      l_tbl.Properties('Jet OLEDB:Link Datasource') := 'C:\2.MDB';
      l_tbl.Properties('Jet OLEDB:Create Link') := True;  {进行链接操作}
      l_cat.Tables.Append(l_tbl);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      l_cat, l_tbl: OleVariant;
      i: Integer;
    begin
      {打开含有链接表的数据库}
      l_cat := CreateOleObject('ADOX.Catalog');
      l_cat.ActiveConnection := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\1.MDB';  l_tbl := CreateOleObject('ADOX.Table');  {遍历表,寻找链接表,同时刷新}
      for i := 0 to l_cat.Tables.Count - 1 do
        if (l_tbl.Type = 'LINK') and (l_tbl.Name = 'Linked_Table2') Then
          l_tbl.Properties('Jet OLEDB:Link Datasource') := 'C:\2.MDB';
    end;