把显示职工表的DBGrid2的Visible属性设为False,把‘人名’字段的Buttonstyle的属性
设为cbsEllipsis,在包含‘人名’字段的DBGrid1的OnEditButtonclick事件中写入代码,DBGrid2.Visible := True;
 以上操作即可实现你的要求,然后可以在双击DBGrid2的事件中为人名’字段赋值并把
DBGrid2的Visible设为False.

解决方案 »

  1.   

    看一看Delphi下的例程,在Demos\Db\Mastapp下。
      

  2.   

    这个问题很简单,看一看范例或书就应该很清楚了!
    简单思路可以是:通过FieldByName('FieldName')取出人命,然后使用sql.add()语句将此变量作为一个参数传入一SQL语句中,可用类似select * from TableName where FieldName = :变量名。然后使用Prepare,在用Paramsbyname(变量名) := 人命。
    如果不理解,请在联系我!
      

  3.   

    编写存放图书信息的DBGrid的datasource的OnDataChange函数。
      

  4.   

    1.可以看出你要做的应用是一个图书借阅的管理应用,那在你的设计中就有一定的问题,在这个应用中有两张表,一张是图书信息表,一张是职工信息表,考虑到职工有可能重名,因此应该给职工信息表设计一个主键(KEY),这个主键应是职工信息表的职工号,是唯一而不重复的,这时借阅时产生的关联可以通过这个主键实现。而不是通过人名实现。
    2.再说说实现方法:
    同Michaelyfj,编写存放图书信息的DBGrid的datasource的OnDataChange函数。
    关键是取得职工信息表中的相关数据的方法有多种,可以用sql,有一种简单方法,设置职工信息表Table的Filter,和Filtered属性就可以了。
    设Table1是图书信息表,Table2是职工信息表Table2.Filter:='职工号='''+Table1.FieldByName('职工号').AsString+'''';
    if not Table2.Filtered then Table2.Filtered:=True;就可以了。
      

  5.   

    我认为不应该使用主细表结构来定位这个问题!
    我们假定如下:
    booktbl:借阅出去的图书信息(其中包含employeeID字段)
    employeetbl:职工的信息
    我们设定:
    1、booktbl,employeetbl均为相对独立的表
    2、设置DBGRID1的ondatachange(...)过程如下:
    employeetbl.filtered:=false;
    employeetbl.filter:='';
    employeetbl.Filter:='employeeid='''+booktbl.FieldByName('employeeid').AsString+'''';
    employeetbl.Filtered:=True;
    3、完了
    如果还有问题:[email protected]