本帖最后由 lonely758 于 2009-10-08 22:56:58 编辑

解决方案 »

  1.   

    经百度已搜到答案
    http://blog.csdn.net/niniu/archive/2006/01/10/575449.aspx
    dbisam数据库主从表结构的使用方法 收藏 
           要使用DBISAM数据库主从表结构,需用到下列控件:     一个TDBISAMTable或者TDBISAMQuery控件,命名为tblMaster或者qryMaster,     一个(或多个)TDBISAMTable控件,名字为tblDetail,     一个TDataSource控件,命名为dsMaster   使用主从表结构,要有一个条件,就是从表一定要对关联字段建立索引,比如说主从表通过从表的teacher字段与主表的name字段实现关联,那么从表一定要对teacher字段建立索引,假设为teacheridx。   另外,除了对tblMaster和tblDetail的DataBaseName等属性赋值只要,还设置几个属性:      1、要设置数据源控件TDataSource的DataSet为主表tblMaster或者主表查询组件qryMaster:              dsMaster.DataSet := tblMaster;      2、要将从表控件的MasterSource属性设置为上面的数据源控件:              tblDetail.MasterSource := dsMaster;           并且设置从表控件的IndexFieldName属性为与主表进行关联的字段(注,如上所说,该字段一定要已经建立索引)              tblDetail.IndexFieldNames := 'teacher';      现在,我们可以打开主从表了:             tblMaster.Active := True;            // qryMaster.SQL.Text := 'select * from master where age>15';            // qryMaster.Active := True;             tblDetail.Active := True;      当我们移动主表的当前记录时,从表的数据也会自动跟着变化:            tblMaster.Next;     可以用DBGrid控件观看。--------------------------------------------------------------------------------
        在网上看到有人说从表可以用下面方式:       DataSet.SQL.Text := 'select * from detail where teacher=master.name';    测试发现DBISAM的TDBISAMQuery组件不能实现,如:      qryDetail.SQL.Text := 'select * from detail where teacher=master.name';    执行到这里会导致SQL解析错误异常,不知道其他数据库是不是这样。      本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/niniu/archive/2006/01/10/575449.aspx