关闭

DBGridEh设置表中表

标签: DBGridEhDelphi数据库
988人阅读 评论(1) 收藏 举报
分类:

DBGridEh设置表中表

 

    一、Form放入DBGridEh1

    1、设置属性

    DBGridEh1. RowDetailPane. Active属性设置为True

    此时,DBGridEh1,出现蓝色框。如下图:

二、DBGridEh1,出现蓝色框中,放入DBGridEh2

    1、设置属性

    DBGridEh2. Align:=alClient

    2、字段的选择

    DBGridEh1约定,打开表中表的方法,是第一个字段,即第一列中的。通过鼠标点击,打开子表。因此:

    (1)DBGridEh1的第一个字段,应该是用于分类的字段,比如:“姓名”。这样,在DBGrid1的栏栅中,

    在Form的OnShow事件中,就得有以下的设置:

    SQL:='select 姓名,选择,性别,出生年月,年龄,部门,床号,护理等级,居住地址,户籍地址,入住类型,身份证号,入院日期,出院日期,死亡日期,移动电话,ID '+

             'From 老人基本信息 where 入住类型=''住院'' order by ''入住类型'' DESC,''床号''';

      三、数据集设置

    1DBGridEh1数据集

procedure TShowOldChildFrm.Button1Click(Sender: TObject);

var SQL,S:string;

    L,i:integer;

begin

  S:=Combobox1.Text;

  DBGridEh1.DataSource:=DataModule1.DataSource1;

  if S='' then SQL:='select 姓名,选择,性别,出生年月,年龄,部门,床号,护理等级,居住地址,户籍地址,入住类型,身份证号,入院日期,出院日期,死亡日期,移动电话,ID '+

               'From 老人基本信息 where 入住类型=''住院'' order by ''入住类型'' DESC,''床号'''

          else SQL:='select 姓名,选择,性别,出生年月,年龄,部门,床号,护理等级,居住地址,户籍地址,入住类型,身份证号,入院日期,出院日期,死亡日期,移动电话,ID '+

               'From 老人基本信息 where (入住类型=''住院'') and (部门='+Quotedstr(S)+') order by ''入住类型'' DESC,''床号''';

  DataModule1.ClientDataSet1.Active:=False;

  DataModule1.ClientDataSet1.DataRequest(SQL);

  DataModule1.ClientDataSet1.Active:=True;

  L:=DataModule1.ClientDataSet1.RecordCount;

  DBGridEh1.DataSource:=DataModule1.DataSource1;

  DBGridEh_AutoSize(DBGridEh1,DataModule1.DataSource1);

  for i:= 0 to DBGridEh1.Columns.Count-1 do

  begin

    DBGridEh1.Columns[i].Title.Alignment := taCenter;    //标题对中

    if (i<>8) and (i<>9) then

      DBGridEh1.Columns[i].Alignment:=taCenter;           //  对中

  end;

  DBGridEh1.Columns[0].Width:=90;                              //第一列拉宽

  DBGridEh1.DataSource.DataSet.Fields[1].DisplayLabel:='';         //  修改第二列字段显示名称

  DBGridEh1.DataSource.DataSet.Fields[5].DisplayLabel:='区域';    //修改DBGrid列标题

  SetKeyUp;                                                                    //  鼠标Key事件

  SelectFalse;                                                                 //选择 False

  statusbar1.Panels[0].text:='   数据库有:  '+IntToStr(L)+'人信息';

end;

    2DBGrid2数据集,通过DBGrid1的鼠标键盘事件获取

    (1)鼠标键盘事件方法

procedure TShowOldChildFrm.SetKeyUp;

var SQL,ID,S:string;

begin

  if Not DBGridEh1.DataSource.DataSet.Eof then

  begin

    ID:=DataModule1.ClientDataSet1.FieldByName('身份证号').AsString;

    S:='查询老人姓名:'+DataModule1.ClientDataSet1.FieldByName('姓名').AsString;

    S:=S+'    入住类型:'+DataModule1.ClientDataSet1.FieldByName('入住类型').AsString;

    DBGridEh2.DataSource:=DataModule1.DataSource2;

    SQL:='select 排序,姓名,关系,监护人,工作单位,单位电话,家庭电话,移动电话,'+

        '家庭地址,邮政编码,证件类型,身份证号,老人姓名,老人身份证号,经济状况,备注,ID '+

        'From 老人亲友信息 where老人身份证号='#39+ID+#39+' order by ''排序''';

    DataModule1.ClientDataSet2.Active:=False;

    DataModule1.ClientDataSet2.DataRequest(SQL);

    DataModule1.ClientDataSet2.Active:=True;

    SetSource2(DataModule1.DataSource2);     //  字段对应数据集

    DBGridEh2.Columns.Items[0].Width:=DBGridEh1.Canvas.TextWidth('12345');     //  例宽

    DBGridEh2.Columns.Items[1].Width:=DBGridEh1.Canvas.TextWidth('123456789');

    DBGridEh2.Columns.Items[2].Width:=DBGridEh1.Canvas.TextWidth('12345678');

    DBGridEh2.Columns.Items[3].Width:=DBGridEh1.Canvas.TextWidth('12345678');

    DBGridEh2.Columns.Items[4].Width:=DBGridEh1.Canvas.TextWidth('12345678901234567890');

    DBGridEh2.Columns.Items[5].Width:=DBGridEh1.Canvas.TextWidth('12345678901234');

    DBGridEh2.Columns.Items[6].Width:=DBGridEh1.Canvas.TextWidth('12345678901234');

    DBGridEh2.Columns.Items[7].Width:=DBGridEh1.Canvas.TextWidth('12345678901234');

    DBGridEh2.Columns.Items[8].Width:=DBGridEh1.Canvas.TextWidth('123456789012345678901234567890');

    statusbar1.Panels[0].text:='   数据库有:  '+IntToStr(OldN)+'人信息      '+S;

  end;

end;

    (2)鼠标键盘事件

procedure TShowOldChildFrm.DBGridEh1KeyUp(Sender: TObject; var Key: Word;

  Shift: TShiftState);

begin

  SetKeyUp;

end;

 

procedure TShowOldChildFrm.DBGridEh1MouseUp(Sender: TObject;

  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

  SetKeyUp;

end;

四、效果

1DBGridEh1

2、打开DBGridEh2

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:30915次
    • 积分:582
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:0篇
    • 译文:0篇
    • 评论:9条
    最新评论