用两个表设置主从关系,MasterDataSource, MasterFields,在从表中添加数据时,其字段为masterfields中的字段自动添加当前主表的值

解决方案 »

  1.   

    你用的B表是用DBGRID显示的,
    当你的A表记录改变了,你就更改B表的SQL语句啊
      

  2.   

    要是我没有用到table的时候,那该怎么用sql语句判断呀!!!我用的都是adoquery
      

  3.   

    hhzqf1980,能给我讲明白点吗?我是初学的~~
      

  4.   

    好,我给你讲明白一点,多给我点分
    假设主表的字段ID和副表的字段ID对应,在主表里,每个ID只能有一个,在
    副表里,有多个ID和主表的ID对应。那么这样做:在主表里,将ID设成主键,
    在副表里,对字段ID建一个次索引。然后,在Table2的属性masterfields,
    直接键入ID就可以了,或者点击...按钮,在弹出的对话框里,上面的选择框
    里,选择你定义的次索引名,然后就可以建立对应关系了。再啰嗦一下,在副表里,不能将ID设成主键(设成主键后,就不能有重复的
    值了),只能对ID建一个次索引(Secondary Index)。给分吧,如果没问题了的话
      

  5.   

    好,我给你讲明白一点,多给我点分
    假设主表的字段ID和副表的字段ID对应,在主表里,每个ID只能有一个,在
    副表里,有多个ID和主表的ID对应。那么这样做:在主表里,将ID设成主键,
    在副表里,对字段ID建一个次索引。然后,在Table2的属性masterfields,
    直接键入ID就可以了,或者点击...按钮,在弹出的对话框里,上面的选择框
    里,选择你定义的次索引名,然后就可以建立对应关系了。再啰嗦一下,在副表里,不能将ID设成主键(设成主键后,就不能有重复的
    值了),只能对ID建一个次索引(Secondary Index)。给分吧,如果没问题了的话
      

  6.   

    我覺得有點不對.我給出下面的你看一下吧.這是在adoquery中如何建立關聯的例子.
    with adoq_employee do
      begin
        close;
        sql.Clear;
        sql.add('select * from employee where employee_id='+#39+edit_search.Text+#39);//employee是主表
        open;
      end;
      with adoq_lz do
      begin
        close;
        sql.Clear;
        sql.Add('select * from lz where lz_id=:employee_id');//離職表是從表
        open;
      end;
    它將employee表和lz表通過lz_id和employee_id關聯了起來.
      

  7.   

    主表和从表字段关联起来要怎么写?为什么我这样写是错的?adoquery1.sql.Add('select * from 主表,从表 where 从表字段:=主表字段');运行后提示Parameters对象被不正确的定义,问题是我用语句连的adoquery,所以Parmeters根本不可以让我编辑呀,,,,大家告诉我该怎么办呀~
      

  8.   

    这样肯定不行了
    你先加入一个ADOQuery,作为主表,用一个datesource连接数据库,在加一个ADOQuery,作为从表,
    再用一个dateSource连接两个表;
    加入的语句是错误的,应该这样
    “Select * From 从表 where 从表连接字段=:主表连接字段”应该可以吧
      

  9.   

    不行,我原先就是这样写的。。运行后提示Parameters对象被不正确的定义,问题是我用语句连的adoquery,所以Parmeters根本不可以让我编辑呀,,,,大家告诉我该怎么办呀~
      

  10.   

    那是你没连接好,你是怎么连接的了,
    连接好以后,parameters对象是不需要定义的,它回自动连接主表的字段,我试过可以的
      

  11.   

    with adoquery2 do
    begin
      close;
      sql.Clear;
      sql.Add('select * from ruanjxs(从表) where xs(主表字段):=xs(从表字段)');
      open;
    end;这样难道有错?我不大能理解呀!
      

  12.   

    有否设定 AdoQuery2 的DataSource 指向 ADOQuery1 的 DataSource?
      
    ADOquery2.DataSource := DS_ADOQuery1;
      

  13.   

    不用sql语句,直接关联。
    双击adoquery1,设置字段的lookupdataset关联到别的adoquery2.
      

  14.   

    应该分两步:
    第一步:access问题。创建odbc数据源,指向一个access数据库。
    第二步:两表关联,不需用sql,直接设定主-明细类型,用TABLE部件的mastersource和masterfields来建立一对多关联