在DBGRIDEH中已有两列是ADOQUERY 查询出来的.现在动态添加一列,想把前两列相除的数据赋给第三列,结果,因是第三列是动态添加的,无法赋值DBGridEh1.Columns:=DBGridEh1.Columns+1;
DBGridEh1.Columns[3].Title.Caption:='MC'
ADOQUERY.SQL.TEXT:='Select MA,MB FORM TEST';
ADOQuery.open;
到这里表格内可以显示出查询出来MA,MB想把 MA/MB*100+'%',就是比例值赋给第三列..不行,因为是虚拟列,不能用
adoquery.edit;
....
....adoquery.post;这样来实现,,询问有什么别的方法可以实现
DBGridEh1.Columns[3].Title.Caption:='MC'
ADOQUERY.SQL.TEXT:='Select MA,MB FORM TEST';
ADOQuery.open;
到这里表格内可以显示出查询出来MA,MB想把 MA/MB*100+'%',就是比例值赋给第三列..不行,因为是虚拟列,不能用
adoquery.edit;
....
....adoquery.post;这样来实现,,询问有什么别的方法可以实现
if DataSet.FieldByName('MB').AsString<>0 then
DataSet.FieldByName('MC').AsString:=FloatToStr(100*DataSet.FieldByName('MA').AsFloat/DataSet.FieldByName('MB').AsFloat)+'%';
else
DataSet.FieldByName('MC').AsString:='0%';或者,在SQL语句直接计算:
ADOQUERY.SQL.TEXT:='Select MA,MB,Case When IsNull(MB,0)=0 Then '0%' Else Cast(MA/MB*100 As Varchar(20))+''%'' End as MC FROM TEST';
....
.....
...
adoquery.post
提示缺少刷新的列...如何操作谢谢