我有2个表,它们是用master-detail连接的。我需要在创建Form2时颠倒连接-这样主表就变成了细节表,而细节表就变成了主表。
我试着这样做,程序编译了,但没有按照我想要的方式工作(之前的连接断开了,但它并没有颠倒,所以程序的工作方式有点像表根本没有连接):
Form1.ADOTableDetail.MasterSource.Destroy;
Form1.ADOTableMaster.MasterSource := Form1.DataSourceDetail;
Form1.ADOTableMaster.MasterFields := 'the_field_that_connects_them';你有什么想法可以让我实现这个目标吗?
发布于 2011-05-22 22:29:27
不要破坏MasterSource!
为了打破这种关系
Form1.ADOTableDetail.MasterSource:= nil;
Form1.ADOTableDetail.MasterFields:= '';然后使用此命令重新路由MasterDetail
Form1.ADOTableMaster.MasterSource := Form1.DataSourceDetail;
Form1.ADOTableMaster.MasterFields := 'the_field_that_connects_them';另外,千万不要直接调用.Destroy,而要使用.Free。
Free会做一个额外的检查,看看你正在进行的引用是否不是空的,从而防止一些访问冲突。
发布于 2011-05-22 22:36:42
procedure TForm1.ExchangeMasterDetail;
begin
ADOTableDetail.Close;
ADOTableMaster.Close;
ADOTableMaster.MasterFields := ADOTableDetail.IndexFieldNames;
ADOTableMaster.IndexFieldNames := ADOTableDetail.MasterFields;
ADOTableDetail.IndexFieldNames := '';
ADOTableDetail.MasterFields := '';
ADOTableDetail.MasterSource := nil;
ADOTableMaster.MasterSource := DataSourceDetail;
ADOTableDetail.Open;
ADOTableMaster.Open;
end;发布于 2013-10-26 06:00:27
只需将主表Active propriety设置为false即可。
然后做你想做的事情,并将它设置回true。
https://stackoverflow.com/questions/6088291
复制相似问题