如何在程序中实现在access中用链接表链接DBF? ( 积分: 100 )

  • 主题发起人 主题发起人 pxzst
  • 开始时间 开始时间
P

pxzst

Unregistered / Unconfirmed
GUEST, unregistred user!
在Access中,可以用手工新建链接表,将DBF格式的表链接到mdb中进行数据操作,或者就是用Access打开DBF格式数据也会自动创建一个链接到DBF文件的链接表。

请问各位大侠,如何在程序中实现这一创建、删除的过程?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1087586
Delphi中使用程序建立Access的链接表
 
根据楼上的提示,已解决!谢谢!具体如下:
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=D:/B.MDB';

l_tbl := CreateOleObject('ADOX.Table');
l_tbl.Name := 'A';//链接后的表的名称

{指出链接表DBF的信息}
l_tbl.ParentCatalog := l_cat;
l_tbl.Properties('Jet OLEDB:Remote Table Name') := 'A#dbf';
l_tbl.Properties('Jet OLEDB:Link Provider String') := 'dBase 5.0';
l_tbl.Properties('Jet OLEDB:Link Datasource') := 'D:/';
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=D:/B.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') := 'D:/B.MDB';

end;

删除链接表可用 drop table
 
接受答案!
 
其他格式的表可参考以下内容:
'Access
Set adoCatalog.ActiveConnection = adoConnection
Set adoTable.ParentCatalog = adoCatalog
adoTable.Properties.Item("Jet OLEDB:Link Datasource").Value = "e:/nwind2kpwd.mdb"
adoTable.Properties.Item("Jet OLEDB:Remote Table Name").Value = "产品"
adoTable.Properties.Item("Jet OLEDB:Create Link").Value = True
adoTable.Properties.Item("Jet OLEDB:Link Provider String").Value = "MS Access;Pwd=456"
adoTable.Name = "Access"
adoCatalog.Tables.Append adoTable
adoConnection.Close

'dBase
adoConnection.Open
Set adoCatalog.ActiveConnection = adoConnection
Set adoTable.ParentCatalog = adoCatalog
adoTable.Properties.Item("Jet OLEDB:Link Datasource").Value = "E:/Borland/Shared/Data"
adoTable.Properties.Item("Jet OLEDB:Remote Table Name").Value = "animals#dbf"
adoTable.Properties.Item("Jet OLEDB:Create Link").Value = True
adoTable.Properties.Item("Jet OLEDB:Link Provider String").Value = "dBase 5.0"
adoTable.Name = "dBase5"
adoCatalog.Tables.Append adoTable
adoConnection.Close

'Excel
adoConnection.Open
Set adoCatalog.ActiveConnection = adoConnection
Set adoTable.ParentCatalog = adoCatalog
adoTable.Properties.Item("Jet OLEDB:Link Datasource").Value = "E:/Book97.xls"
adoTable.Properties.Item("Jet OLEDB:Remote Table Name").Value = "Sheet1$"
adoTable.Properties.Item("Jet OLEDB:Create Link").Value = True
adoTable.Properties.Item("Jet OLEDB:Link Provider String").Value = "Excel 5.0;HDR=NO;IMEX=2"
adoTable.Name = "Excel"
adoCatalog.Tables.Append adoTable
adoConnection.Close
'...
 
在Access环境下有更简便的方法实现,可建立一个查询如:
SELECT * FROM [Dbase 5.0;Database=D:/test].a.dbf

若在Access中有一表,Test1,在Delphi中可用以下方便建立一个查询:

ADOQuery1.SQL.Text:='Create View Test2 as Select * from Test1';

ADOQuery1.ExceSQL;

但将以上两方法接合起来就会有错误:

ADOQuery1.SQL.Text:='Create View Test2 as SELECT * FROM [Dbase 5.0;Database=D:/test].a.dbf';

ADOQuery1.ExceSQL;

提示错误信息:"不正确定义参数信息。提供了不一致或不完整的信息。"

请问那位知道以上语句应怎样修改?
 
在Access环境下有更简便的方法实现,可建立一个查询如:
SELECT * FROM [Dbase 5.0;Database=D:/test].a.dbf

若在Access中有一表,Test1,在Delphi中可用以下方便建立一个查询:

ADOQuery1.SQL.Text:='Create View Test2 as Select * from Test1';

ADOQuery1.ExceSQL;

但将以上两方法接合起来就会有错误:

ADOQuery1.SQL.Text:='Create View Test2 as SELECT * FROM [Dbase 5.0;Database=D:/test].a.dbf';

ADOQuery1.ExceSQL;

提示错误信息:"不正确定义参数信息。提供了不一致或不完整的信息。"

请问那位知道以上语句应怎样修改?
 
后退
顶部