adoquery比adodataset差吗?(200分)

  • 主题发起人 主题发起人 freesoaring
  • 开始时间 开始时间
F

freesoaring

Unregistered / Unconfirmed
GUEST, unregistred user!
通过adoquery查询获得一个记录集,并在dbgrid中显示了,现在想动态地修改该
dbgrid中某一字段值(如:年龄,有多个记录!),于是如下:
adoquery1.DataSource.DataSet.Edit;
adoquery1.DataSource.DataSet.first;
while not adoquery1.DataSource.DataSet.Eof do
begin
adoquery1.DataSource.DataSet.FieldByName('年龄').AsInteger:=20; //所有人年龄该为20
adoquery1.DataSource.DataSet.Next;
end;
结果运行到第一句就错了!说Access Violation在Address xxxxxxx
(控件的属性基本上用的都是默认值)
但如果用adodataset代替adoquery查询,并将以上代码中的
adoquery1.datasource.dataset用adodataset1代替就可以成功!
难道adoquery1真的不能实现以上功能吗????
 
请问如何实现以上功能?
 
快答呀,或者谈谈你的看法。
 
with adoquery do
begin
if (eof=bof) then exit;
first;
edit;
while (not eof) do
begin
FieldByName('年龄').AsInteger:=20;
next;
end;
end;
 
用上面的方法的确可以部分解决该问题,但现在的问题是我想修改计算字段的值,
但好象Delphi不允许!且若用adoquery.Fieldbyname('价格').asinteger:=100;
则Delphi会告诉我没有"价格"字段(它是计算字段)。这又如何解决呢?

 
一般字段可以用query1.fieldbyname('姓名').asstring:='xx';来修改
但是计算字段呢?如果对计算字段用fieldbyname的话,会告诉你该字段不可改!
 
我只想修改DBGrid中的计算字段中的值,并不想修改数据表,但如何实现呢?
 
接受答案了.
 
后退
顶部