CXGRID中有多列 包括 数量,单价,金额,其中金额列为计算列
先按BUTTON1 在CXGRID中增加一列 我使用 ADOQuery1.AppendRecord实现
然后更改 数量 和单价列,金额列自动会变化。如果没有代码1 那么执行代码2,在CXGRID中会增加一行记录
如果没有代码2,那么执行代码1,金额列会变化。但两个代码都存在的情况下 报错 说 '' is not a valid floating point valueprocedure TForm1.ADOQuery1amountChange(Sender: TField);//代码1
begin
if Sender.Text='' then
Sender.Text:='0';
ADOQuery1.FieldByName('summoney').AsFloat:=ADOQuery1.fieldbyname('amount').AsFloat * ADOQuery1.fieldbyname('price').AsFloat;
end;procedure TForm1.Button1Click(Sender: TObject); //代码2
begin
ADOQuery1.AppendRecord(['2',Edit1.Text,0,0,0,'aaa','bbb']);
end;
先按BUTTON1 在CXGRID中增加一列 我使用 ADOQuery1.AppendRecord实现
然后更改 数量 和单价列,金额列自动会变化。如果没有代码1 那么执行代码2,在CXGRID中会增加一行记录
如果没有代码2,那么执行代码1,金额列会变化。但两个代码都存在的情况下 报错 说 '' is not a valid floating point valueprocedure TForm1.ADOQuery1amountChange(Sender: TField);//代码1
begin
if Sender.Text='' then
Sender.Text:='0';
ADOQuery1.FieldByName('summoney').AsFloat:=ADOQuery1.fieldbyname('amount').AsFloat * ADOQuery1.fieldbyname('price').AsFloat;
end;procedure TForm1.Button1Click(Sender: TObject); //代码2
begin
ADOQuery1.AppendRecord(['2',Edit1.Text,0,0,0,'aaa','bbb']);
end;
解决方案 »
- JAVA版真是新技术,并且很牛B! 被关小黑屋!~ 爽 哈
- 能不能写出一个不能被COPY的EXE文件?
- 请教:如何实现一个TRichEdit控件能够复制另一个TRichEdit控件的内容及格式,并追加显示?
- 如何更新一个时间字段?必须对该更新的内容进行有效限制!进来的都有分!
- rave使用!!!!!!!!!!
- Tquery如何在DBgrid浏览时进行插入,删除,修改---十万火急
- 请高手分析一下以下语句的含意!
- 请教大侠们关于DLL中创建对象的问题,谢了!
- 请教怎么把F1BOOK1中的数据存入数据库?急!!
- 小小问题Delphi
- 调用VC DLL 解决??
- 关于用文件流写文件的问题,请大家帮忙
begin
if Sender.isNull then exit;
ADOQuery1.FieldByName('summoney').AsFloat:= sender.value * ADOQuery1.fieldbyname('price').AsFloat;
end;procedure TForm1.Button1Click(Sender: TObject); //代码2
begin
ADOQuery1.AppendRecord(['2',Edit1.Text,0,0,0,'aaa','bbb']); // 這裏 Edit1.text 是對應哪一個字段,字符還是浮點或整型
end;
兩個地方都有可能
转换成Float时出错,所以你传值时,一定要保证字段的对应,并且数值型字段赋值,数值要合法
varchar(50) varchar(50) decimal
ADOQuery1.FieldByName('summoney').AsFloat:=ADOQuery1.fieldbyname('amount').AsFloat * ADOQuery1.fieldbyname('price').AsFloat;
看一下AsFloat的值,估计时一些字段内容不能转为Float
if (ADOQuery1.fieldbyname('price').AsString<>'') and (ADOQuery1.fieldbyname('amount').AsString<>'') then
ADOQuery1.FieldByName('summoney').AsFloat:= ADOQuery1.fieldbyname('amount').AsFloat * ADOQuery1.fieldbyname('price').AsFloat;
这样可以了 这个有什么不同呀