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 OLEDBink 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 OLEDBink Datasource') := 'C:/2.MDB';
end;
var
Path,Path1,Path2:String;
l_cat, l_tbl: OleVariant;
i,TblCount:Integer;
begin
//Path为Test.MDB的路径
//Path1为A.MDB的路径
//Path2为A.MDB的路径
//打开含有链接表的数据库
l_cat:= CreateOleObject( 'ADOX.Catalog ');
l_cat.ActiveConnection := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '+Path+ '/Test.mdb ';
try
//遍历表,寻找链接表,同时删除
TblCount:=l_cat.Tables.Count;
for i := TblCount - 1 downto 0 do
begin
l_tbl:=l_cat.Tables[i];
if l_tbl.Type = 'LINK ' Then
l_cat.Tables.Delete(i);
end;
//创建新的链接信息
l_tbl:= CreateOleObject( 'ADOX.Table ');
//指出链接表的信息
l_tbl.Name := 'Test_1 '; //链接后的表的名称
l_tbl.ParentCatalog := l_cat;
l_tbl.Properties( 'Jet OLEDB:Remote Table Name ') := 'A ';
l_tbl.Properties( 'Jet OLEDB:Link Datasource ') := Path1+ '/A.mdb ';
l_tbl.Properties( 'Jet OLEDB:Create Link ') := True;
//添加连接表
l_cat.Tables.Append(l_tbl);
l_tbl.Name := 'Test_2 '; //链接后的表的名称
l_tbl.ParentCatalog := l_cat;
l_tbl.Properties( 'Jet OLEDB:Remote Table Name ') := 'B ';
l_tbl.Properties( 'Jet OLEDB:Link Datasource ') := Path2+ '/B.mdb ';
l_tbl.Properties( 'Jet OLEDB:Create Link ') := True;
//添加连接表
l_cat.Tables.Append(l_tbl);
finally
l_Cat:=UnAssigned;
end;
end.