self.ADOQuery2.Edit; self.ADOQuery2.First; while not self.ADOQuery2.Eof do begin self.ADOQuery2.FieldByName('单价').Value:=roundto(self.ADOQuery2.FieldByName('单价').Value,-2); self.ADOQuery2.Next; end; self.ADOQuery2.Post; 这是显示在一个DBGrid里面 我是想把单价保留2位小数, 但是老出现这个问题,显示出错的self.ADOQuery2.Next句 我在网上也找了,都说是没进入edit状态, 但是我明明有edit,问题出在哪里,请帮帮忙 |
当你使用First或Next时ADOQuery2会自动Post,ADOQuery2处于dsBrowse状态(数据集已打开,可以浏览数据,但是不能进行修改) 所以你必须在赋值语句前使用Edit,我帮你修改程序如下: self.ADOQuery2.First; while not self.ADOQuery2.Eof do begin self.ADOQuery2.Edit; self.ADOQuery2.FieldByName('单价').Value:=roundto(self.ADOQuery2.FieldByName('单价').Value,-2); self.ADOQuery2.Post; self.ADOQuery2.Next; end; |
//self.ADOQuery2.Edit; X self.ADOQuery2.First; while not self.ADOQuery2.Eof do begin ADOQuery2.Edit; /// self.ADOQuery2.FieldByName('单价').Value:=roundto(self.ADOQuery2.FieldByName('单价').Value,-2); ADOQuery2.Post; /// self.ADOQuery2.Next; end; //self.ADOQuery2.Post; X Edit针对当前游标所在行,你next的时候,游标移动了,这个时候会自动POST |