向高手们请教个问题:如何实现给数据库某表增加一个字段,然后自动显示到操作界面的Grid中?目前的实现方式是:
1、先从数据库某表中增加字段一个;
2、再从ADODataSet中Add Fields,设置名称、格式等;
3、再从Form的DBGrid中增加一列,设置宽度、顺序等;
这些都是手工操作的,改完后需要重新编译程序,才能发布。
能否通过配置,在不用重新编译程序的情况下,自动实现第2步和第3步操作?在标准版本的基础上,有些客户需要定制开发一些功能,改动不大,就是加几个字段,比如计件工资,每个客户的算法可能都不一样,所以需要实现在不重新编译程序的情况下,增加字段,并最终反映的操作界面上。谢谢!

解决方案 »

  1.   

    读取配置信息, 执行以下操作
    1 程序中, 通过sql语句对指定表增加一列
    2 读取数据表, 动态创建ADODataSet中Add Fields
    3 DBGrid动态增加一列; 最好有个关于DBGrid列的配置文件,提供宽度、顺序等, 供动态设置.
      

  2.   

    grid 的datasoruce 属性设置为控件datasource,grid的列不做设置,默认就会显示出
    datasource数据集里面所有的字段名
      

  3.   

    先在数据库中建立一个存数据字段的表sys_biaoti
    然后通过调用过程lbview实现,以后增加字段
    只需要在后台增加字段并在sys_biaoti中增加相应记录即可,无需编译代码
      procedure lbview(dbeh:Tdbgrideh;ado:Tadoquery);
      var i:integer; col : TColumnEh;
      begin
       for i:=0 to dbeh.Columns.Count -1  do
           begin
           dbeh.Columns.Clear;
           end;
    while not ado.Eof do
       begin  col:=dbeh.Columns.Add;
      col.Title.Caption:=ado.FieldValues['kjcaption'];
      col.FieldName:=ado.FieldValues['fieldname'];  col.Width:=ado.FieldValues['width'];
      col.ReadOnly:=true;
      if col.Title.Caption='选择' then
      begin
      col.ReadOnly:=false;
      end;
      ado.Next;
       end;end;