用dbedit来修改数据的问题(80分)

  • 主题发起人 主题发起人 mojian
  • 开始时间 开始时间
M

mojian

Unregistered / Unconfirmed
GUEST, unregistred user!
假设有一个表GoodsEditTable
语句如下:
GoodsEditTable.Append;

GoodsEditTable.FieldValues['Name'] := DBEditName.text;
GoodsEditTable.FieldValues['GoodsID'] := DBEditCode.text;
GoodsEditTable.FieldValues['GoodsTypeID'] := GTypeCB.Field.value;
GoodsEditTable.FieldValues['Unit'] := DBEditUnit.text;
GoodsEditTable.FieldValues['Kind'] := DBLookupComboBox1.Field.value;
GoodsEditTable.FieldValues['Sprice'] := StrToCurr(DBEditSprice.text);
GoodsEditTable.FieldValues['Pprice'] := StrToCurr(DBEditPprice.text);

GoodsEditTable.Post;
程序报错:在StrToCurr(DBEditSprice.text)中出现转换异常,认为DBEditSprice.text是一个'',
设置断点察看,发现DBEditName.text,DBEditCode.text,DBEditUnit.text,DBEditSprice.text等
都是'',不知道是怎么回事,难道DBedit控件的Text属性不能这样用吗?但执行下去后发现表的‘name’,
‘GoodsId’,'Unit','Kind','GoodsTypeID'都被更新了;'Sprice','Pprice'没有更新。
但是把 GoodsEditTable.Append; GoodsEditTable.Post;语句注习掉,可看到DBedit.text有东西。
怎样解决此问题?
 

如果DBEditName.text,DBEditCode.text等都对应GoodsEditTable,
在append之后,以上值当然都是'',
可以试一下以下代码:
var
tmpDBEditName,tmpDBEditCode,...:string;

...
begin
...
tmpDBEditName:= DBEditName.text;
tmpDBEditCode:=DBEditCode.Text;
...


GoodsEditTable.Append;

GoodsEditTable.FieldValues['Name'] := tmpDBEditName;//DBEditName.text;
GoodsEditTable.FieldValues['GoodsID'] := tmpDBEditCode;//DBEditCode.text;
GoodsEditTable.FieldValues['GoodsTypeID'] := GTypeCB.Field.value;
...

GoodsEditTable.Post;
 
在转换前先判断一下DBEditSprice.text是不是‘’,
如果是的话则 GoodsEditTable.FieldValues['Sprice'] := 0;
否则 GoodsEditTable.FieldValues['Sprice'] := StrToCurr(DBEditSprice.text);
这样就不会出错了。

 
>>在append之后,以上值当然都是'',
同意.用EDIT吧.DBEdit不可见,在它的ONCHANGE中写代码把
内容显示在EDIT中.
 
多人接受答案了。
 
后退
顶部