W
windflower
Unregistered / Unconfirmed
GUEST, unregistred user!
问题:急用简单问题:关于dbedit录入数据问题! ( 积分:50, 回复:12, 阅读:71 )
分类:数据库 - C/S型 ( 版主:千中元, kucio )
来自:windflower, 时间:2001-5-18 11:34:50, ID:534180 [显示:小字体 | 大字体]
现有一张承付单表,有以下字段:付款编号、应付金额、本次实际付款金额,
adoquery1.text:='select * from 承付单表'
我是通过adoquery.append来录入新记录的.我使用了dbedit来录入以上数据(dbedit已与
数据库关联),我希望在输入完本次实际付款金额后敲回车键能计算出余额(余额等于
应付金额-本次实际付款金额),显示在dbedit4中。(dbedit4没和数据库关联)
我的adoquery.locktype为ltBatchOptimistic,我的主要程序如下:
procedure TForm1.DBEdit3KeyPress(Sender: TObject; var Key: Char);
//dbedit3为录入本次实际付款金额的 dbedit
var
ye:double; //余额
begin
if key=#13 then
begin
ye:=adoquery1.fieldvalues['应付金额']-adoquery1.fieldvalues['本次实际付款金额'];
dbedit4.text:=trim(formatfloat('#,##0.00',ye));
end;
end;
但是在调试中发现当输入完应付金额和本次实际付款金额桥回车键后,我用
if (adoquery1.fieldbyname('应付金额').isnull) then
showmessage('应付金额为空');
if (adoquery1.fieldbyname('本次实际付款金额').isnull) then
showmessage('本次实际付款金额为空');
发现应付金额和本次实际付款金额居然为空,更不用说计算余额了。
请问这是怎么回事?该怎么办呢?
我曾经在它们的onchange事件中添加如下代码:
procedure TForm1.DBEdit3Change(Sender: TObject);
begin
adoquery1.edit;
if trim(dbedit3.text)<>'' then
adoquery1.fieldvalues['本次实际付款金额']:=strtofloat(dbedit3.text);
end;
procedure TForm1.DBEdit2Change(Sender: TObject);
begin
adoquery1.edit;
if trim(dbedit2.text)<>'' then
adoquery1.fieldvalues['应付金额']:=strtofloat(dbedit2.text);
end;
但因为我使用了
TNumericField(querymaininfo.FieldByName('本次实际付款金额')).displayformat:='#,##0.00';
TNumericField(querymaininfo.FieldByName('应付金额')).displayformat:='#,##0.00';
来进行显示格式控制
在调试时,系统提示
'12,321.00' is not a valid floating point value
该怎么办呢?
请大家帮帮忙!谢谢!
来自:windflower, 时间:2001-5-17 16:06:46, ID:534216
问题紧急,快帮忙呀!
来自:djdsz, 时间:2001-5-17 16:36:47, ID:534249
adoquery1.fieldvalues['应付金额']:=dbedit2.field.asfloat吧
来自:windflower, 时间:2001-5-17 16:59:12, ID:534286
to djdsz:
如您所言,我将onchange事件作如下改动:
procedure TForm1.DBEdit3Change(Sender: TObject);
begin
adoquery1.edit;
if trim(dbedit3.text)<>'' then
begin
adoquery1.fieldvalues['本次实际付款金额']:=dbedit3.field.asfloat;
TNumericField(adoquery1.FieldByName('本次实际付款金额')).displayformat:='#,##0.00';
end;
end;
procedure TForm1.DBEdit2Change(Sender: TObject);
begin
adoquery1.edit;
if trim(dbedit2.text)<>'' then
begin
adoquery1.fieldvalues['应付金额']:=dbedit2.field.asfloat;
TNumericField(adoquery1.FieldByName('应付金额')).displayformat:='#,##0.00';
end;
end;
可是现在我却是怎么也不能输入应付金额和本次实际付款金额了,输入框里显示0.00,连del
都不行,这是怎么回事?
十万火急!难道用dbedit输入不行吗?
来自:sbcnet, 时间:2001-5-17 17:09:19, ID:534293
1、应该成dbedit4.edittext:=trim(formatfloat('#,##0.00',ye));
或adoquery1.fieldvalues['余额']:=ye;
2、去掉adoquery1.edit
来自:windflower, 时间:2001-5-17 17:22:54, ID:534315
to sbcnet:1、余额不是数据库的字段,也不是adoquery的计算字段。
2、adoquery1.edit去掉后,系统报错:adoquery not in edit or insert mode
请问dbedit.text与dbedit.edittext有什么区别?
另照样不能输入数据。
来自:windflower, 时间:2001-5-17 17:52:43, ID:534339
help!
来自:windflower, 时间:2001-5-17 17:54:09, ID:534341
onchange事件很讨厌,有没有好的方法呀?
来自:windflower, 时间:2001-5-17 18:22:05, ID:534364
今天富翁们到哪里去了?
来自:zzh0918, 时间:2001-5-17 21:12:02, ID:534512
使用计算字段就很容易解决这个问题。根本不需要在onchange事件中去处理。
使用方法:
在adoquery1上单击右键选择field editor 然后在弹出的form1.adoquery1窗口中单击
右键,选择add all fields,然后在同样的窗口中单击右键选择new field 马上会弹出一个
窗口,在窗口中填入字段名称“余额”,字段类型为float。在field type 中选择calculated
单机确定。
在adoquery1的oncalc事件中写下如下代码adoquery1['余额']=adoquery1['应付金额']-adoquery1['本次实际付款金额'];
将dbedit4和adoquery1关联。data field 选择“余额”
ok 任意改变“应付金额”“本次实际付款金额”余额都将随着改变。
来自:windflower, 时间:2001-5-18 8:55:58, ID:534774
to zzh0918:我给出的这段程序只是个例子,实际计算过程比较复杂,而且已经编好了,
没有使用计算字段,能不能在现有基础上进行修改达到目的呢?
来自:windflower, 时间:2001-5-18 10:19:13, ID:534924
紧急求助!
来自:windflower, 时间:2001-5-18 11:28:35, ID:535054
我的实际情况是:本次实际付款金额也是通过计算出来的,因此不能使用CalcFields,
否则因为我会给本次实际付款金额赋值,造成死循环的。
因为不断提前都没有解决问题,
分类:数据库 - C/S型 ( 版主:千中元, kucio )
来自:windflower, 时间:2001-5-18 11:34:50, ID:534180 [显示:小字体 | 大字体]
现有一张承付单表,有以下字段:付款编号、应付金额、本次实际付款金额,
adoquery1.text:='select * from 承付单表'
我是通过adoquery.append来录入新记录的.我使用了dbedit来录入以上数据(dbedit已与
数据库关联),我希望在输入完本次实际付款金额后敲回车键能计算出余额(余额等于
应付金额-本次实际付款金额),显示在dbedit4中。(dbedit4没和数据库关联)
我的adoquery.locktype为ltBatchOptimistic,我的主要程序如下:
procedure TForm1.DBEdit3KeyPress(Sender: TObject; var Key: Char);
//dbedit3为录入本次实际付款金额的 dbedit
var
ye:double; //余额
begin
if key=#13 then
begin
ye:=adoquery1.fieldvalues['应付金额']-adoquery1.fieldvalues['本次实际付款金额'];
dbedit4.text:=trim(formatfloat('#,##0.00',ye));
end;
end;
但是在调试中发现当输入完应付金额和本次实际付款金额桥回车键后,我用
if (adoquery1.fieldbyname('应付金额').isnull) then
showmessage('应付金额为空');
if (adoquery1.fieldbyname('本次实际付款金额').isnull) then
showmessage('本次实际付款金额为空');
发现应付金额和本次实际付款金额居然为空,更不用说计算余额了。
请问这是怎么回事?该怎么办呢?
我曾经在它们的onchange事件中添加如下代码:
procedure TForm1.DBEdit3Change(Sender: TObject);
begin
adoquery1.edit;
if trim(dbedit3.text)<>'' then
adoquery1.fieldvalues['本次实际付款金额']:=strtofloat(dbedit3.text);
end;
procedure TForm1.DBEdit2Change(Sender: TObject);
begin
adoquery1.edit;
if trim(dbedit2.text)<>'' then
adoquery1.fieldvalues['应付金额']:=strtofloat(dbedit2.text);
end;
但因为我使用了
TNumericField(querymaininfo.FieldByName('本次实际付款金额')).displayformat:='#,##0.00';
TNumericField(querymaininfo.FieldByName('应付金额')).displayformat:='#,##0.00';
来进行显示格式控制
在调试时,系统提示
'12,321.00' is not a valid floating point value
该怎么办呢?
请大家帮帮忙!谢谢!
来自:windflower, 时间:2001-5-17 16:06:46, ID:534216
问题紧急,快帮忙呀!
来自:djdsz, 时间:2001-5-17 16:36:47, ID:534249
adoquery1.fieldvalues['应付金额']:=dbedit2.field.asfloat吧
来自:windflower, 时间:2001-5-17 16:59:12, ID:534286
to djdsz:
如您所言,我将onchange事件作如下改动:
procedure TForm1.DBEdit3Change(Sender: TObject);
begin
adoquery1.edit;
if trim(dbedit3.text)<>'' then
begin
adoquery1.fieldvalues['本次实际付款金额']:=dbedit3.field.asfloat;
TNumericField(adoquery1.FieldByName('本次实际付款金额')).displayformat:='#,##0.00';
end;
end;
procedure TForm1.DBEdit2Change(Sender: TObject);
begin
adoquery1.edit;
if trim(dbedit2.text)<>'' then
begin
adoquery1.fieldvalues['应付金额']:=dbedit2.field.asfloat;
TNumericField(adoquery1.FieldByName('应付金额')).displayformat:='#,##0.00';
end;
end;
可是现在我却是怎么也不能输入应付金额和本次实际付款金额了,输入框里显示0.00,连del
都不行,这是怎么回事?
十万火急!难道用dbedit输入不行吗?
来自:sbcnet, 时间:2001-5-17 17:09:19, ID:534293
1、应该成dbedit4.edittext:=trim(formatfloat('#,##0.00',ye));
或adoquery1.fieldvalues['余额']:=ye;
2、去掉adoquery1.edit
来自:windflower, 时间:2001-5-17 17:22:54, ID:534315
to sbcnet:1、余额不是数据库的字段,也不是adoquery的计算字段。
2、adoquery1.edit去掉后,系统报错:adoquery not in edit or insert mode
请问dbedit.text与dbedit.edittext有什么区别?
另照样不能输入数据。
来自:windflower, 时间:2001-5-17 17:52:43, ID:534339
help!
来自:windflower, 时间:2001-5-17 17:54:09, ID:534341
onchange事件很讨厌,有没有好的方法呀?
来自:windflower, 时间:2001-5-17 18:22:05, ID:534364
今天富翁们到哪里去了?
来自:zzh0918, 时间:2001-5-17 21:12:02, ID:534512
使用计算字段就很容易解决这个问题。根本不需要在onchange事件中去处理。
使用方法:
在adoquery1上单击右键选择field editor 然后在弹出的form1.adoquery1窗口中单击
右键,选择add all fields,然后在同样的窗口中单击右键选择new field 马上会弹出一个
窗口,在窗口中填入字段名称“余额”,字段类型为float。在field type 中选择calculated
单机确定。
在adoquery1的oncalc事件中写下如下代码adoquery1['余额']=adoquery1['应付金额']-adoquery1['本次实际付款金额'];
将dbedit4和adoquery1关联。data field 选择“余额”
ok 任意改变“应付金额”“本次实际付款金额”余额都将随着改变。
来自:windflower, 时间:2001-5-18 8:55:58, ID:534774
to zzh0918:我给出的这段程序只是个例子,实际计算过程比较复杂,而且已经编好了,
没有使用计算字段,能不能在现有基础上进行修改达到目的呢?
来自:windflower, 时间:2001-5-18 10:19:13, ID:534924
紧急求助!
来自:windflower, 时间:2001-5-18 11:28:35, ID:535054
我的实际情况是:本次实际付款金额也是通过计算出来的,因此不能使用CalcFields,
否则因为我会给本次实际付款金额赋值,造成死循环的。
因为不断提前都没有解决问题,