下面的是一个书籍查询界面的布局,设置如下:
  dbgrid1的Datasource:Datasource1  Datasource1的Daset是:table1
  dbgrid2的Datasource:Datasource2  Datasource2的Daset是:query1
 我现在想实现当我点击DBGRID1中相应的出版社名称时,dbgrid2中就会
显示出相应的出版社的书籍信息,请问这个应该具体怎么做,请写出详细的
代吗为谢! 
 DBgrid1                         DBgrid2出版社名称     书籍编号,书籍名称,作者,定价,现有数量,出版社名称
-----     ---- ---- -- -- ---- -----
清华出版社      A-001   JAVA 李伟 50  2   清华出版社

解决方案 »

  1.   

    在table1的AfterScroll中写:
       Query1.SQL.Clear;
       Query1.Close;
       Query1.SQL.Add('select 书籍信息.* from 书籍信息 inner join 出版社 on 书籍信息.出版社id = 出版社.出版社id');
       Query1.Open;
    表名和字段名改成你定义的名称
      

  2.   

    在中FROMSHOW中写
    query1.datasource:=Datasource1; Query1.SQL.Clear;
       Query1.Close;
       Query1.SQL.Add('select 书籍信息.* from 书籍信息 inner join 出版社 on 书籍信息.出版社id 
        =: 出版社.出版社id');//=:表示相连的关键字。
       Query1.Open;
      

  3.   

    忘写where条件了在table1的AfterScroll中写:
       Query1.SQL.Clear;
       Query1.Close;
       Query1.SQL.Add('select 书籍信息.* from 书籍信息 inner join 出版社 on 书籍信息.出版社id = 出版社.出版社id where 书籍信息.出版社id = '+table1.FieldByName('出版社id').AsString+'');
       Query1.Open;
    表名和字段名改成你定义的名称,如果你有‘出版社id’字段并且为数字型的话,就是以上,如果没有就试试下面:   Query1.SQL.Clear;
       Query1.Close;
       Query1.SQL.Add('select 书籍信息.* from 书籍信息 inner join 出版社 on 书籍信息.出版社名称 = 出版社.出版社名称 where 书籍信息.出版社名称 = '''+table1.FieldByName('出版社名称').AsString+'''');
       Query1.Open;
      

  4.   

    当你选择第一个dbgrid时,table1中的record的指针也在变化,table1也指向了你点击的记录条,这样就可以从中取出信息,对query1进行操作啊不过你要在其中做异常处理,因为这种操作我感觉容易让程序变的脆弱