Delphi数据库开发之TTable篇2

  虽然从各方面的信息来看BDE已经日落西山的感觉,但一种成熟的东西被完全忘却是需要很长一段时间的。还是把一些TTable控件一些常用的方法记录一下。数据库应用程序很多时候都需要显示主从表数据,而上节说到TTable主要是用于显示数据列表的,所以TTable在该情况下使用较简易。

例如:Table1用于提取主表的数据,主键名为A,DataSource1连接Table1,用DBGrid1;Table2用于提取子表数据,外键为B,用DBGrid2显示。要求在DBGrid1的当前记录改变时,DBGrid2能显示对应的子表数据。

  方法1:使用MasterField和MasterSource属性,该方法比较易用,但可控制程度稍低。只要指定Table2的MasterSource属性为DataSource1,在MasterField的对话框中把A B指定为Join Field即可实现主从表数据显示。

  方法2:使用Filter和Filtered属性。该方法涉及的方面比较多,而且还有引号的问题,但可数据操作较灵活。同样是上面的控件。

Table1AfterScroll事件加入

if not Table1.IsEmpty then

Table2.Filter:='B='+QuotedStr(Table1.FieldByName('A').AsString);

else Table2.Filter:='B='+QuotedStr('-9999');

Table2.Filtered:=True;

该代码假设B字段是文本型字段,A不可能取值为'-9999'