怎么实现给数据库某表增加一个字段,然后自动显示到操作界面的Grid中
如何实现给数据库某表增加一个字段,然后自动显示到操作界面的Grid中?
向高手们请教个问题:
如何实现给数据库某表增加一个字段,然后自动显示到操作界面的Grid中?
目前的实现方式是:
1、先从数据库某表中增加字段一个;
2、再从ADODataSet中Add Fields,设置名称、格式等;
3、再从Form的DBGrid中增加一列,设置宽度、顺序等;
这些都是手工操作的,改完后需要重新编译程序,才能发布。
能否通过配置,在不用重新编译程序的情况下,自动实现第2步和第3步操作?
在标准版本的基础上,有些客户需要定制开发一些功能,改动不大,就是加几个字段,比如计件工资,每个客户的算法可能都不一样,所以需要实现在不重新编译程序的情况下,增加字段,并最终反映的操作界面上。
谢谢!
------解决方案--------------------
读取配置信息, 执行以下操作
1 程序中, 通过sql语句对指定表增加一列
2 读取数据表, 动态创建ADODataSet中Add Fields
3 DBGrid动态增加一列; 最好有个关于DBGrid列的配置文件,提供宽度、顺序等, 供动态设置.
------解决方案--------------------
grid 的datasoruce 属性设置为控件datasource,grid的列不做设置,默认就会显示出
datasource数据集里面所有的字段名
------解决方案--------------------
先在数据库中建立一个存数据字段的表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;
向高手们请教个问题:
如何实现给数据库某表增加一个字段,然后自动显示到操作界面的Grid中?
目前的实现方式是:
1、先从数据库某表中增加字段一个;
2、再从ADODataSet中Add Fields,设置名称、格式等;
3、再从Form的DBGrid中增加一列,设置宽度、顺序等;
这些都是手工操作的,改完后需要重新编译程序,才能发布。
能否通过配置,在不用重新编译程序的情况下,自动实现第2步和第3步操作?
在标准版本的基础上,有些客户需要定制开发一些功能,改动不大,就是加几个字段,比如计件工资,每个客户的算法可能都不一样,所以需要实现在不重新编译程序的情况下,增加字段,并最终反映的操作界面上。
谢谢!
------解决方案--------------------
读取配置信息, 执行以下操作
1 程序中, 通过sql语句对指定表增加一列
2 读取数据表, 动态创建ADODataSet中Add Fields
3 DBGrid动态增加一列; 最好有个关于DBGrid列的配置文件,提供宽度、顺序等, 供动态设置.
------解决方案--------------------
grid 的datasoruce 属性设置为控件datasource,grid的列不做设置,默认就会显示出
datasource数据集里面所有的字段名
------解决方案--------------------
先在数据库中建立一个存数据字段的表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;