怎么修改TADOQuery中Fields的值?

mimong_lin 2007-11-21 04:44:37
使用TADOQuery从多个表中查询出数据,之后通过SQL的Update修改了当前记录的某个字段内容.一般情况下是通过再次查询显示出修改后的结果.
有没有什么方法可以直接修改TADOQuery字段的值,而不用再次查询数据库?

查过些方法,但
ADOQuery->Edit();
ADOQuery->Fields->FieldByName("..")->Value = ;
ADOQuery->Post();
这样操作不行呢.
...全文
137 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wg961423 2007-12-12
  • 打赏
  • 举报
回复
我都是用ADOQuery查出来,改的的时候用ADOCommand执行Update语句,完成后ADOQuery先Close再Open一下。
jasonnbfan 2007-12-11
  • 打赏
  • 举报
回复
update后必须要重新查询下。
xjq2003 2007-12-11
  • 打赏
  • 举报
回复
ADOQuery的每个 Fields都添加定义一下
JuncoZhan 2007-11-23
  • 打赏
  • 举报
回复
或者将qry1的数据拷贝到clientdataset中,这样你想怎么操作都行,不回写数据库
i_love_pc 2007-11-22
  • 打赏
  • 举报
回复
单独测试没有问题,不知道你的数据集是如何打开的。另外感觉这样有些重复,已经通过update更新了数据集,那在内存中的数据集已经失效了。需要重新打开,才能保证数据的完整性。如果此时更改数据集再提交,会造成数据的重复更新,而且处理不当会影响数据的完整性。
mimong_lin 2007-11-22
  • 打赏
  • 举报
回复
打错,是"还要设置什么属性吗?"
mimong_lin 2007-11-22
  • 打赏
  • 举报
回复
是不是ADOQuery不要设置什么属性吗?
mimong_lin 2007-11-22
  • 打赏
  • 举报
回复
不行呢,LS.

提示"无法为更新定位行.一些值可能已在最后一次读取后已更改".
i_love_pc 2007-11-22
  • 打赏
  • 举报
回复
直接修改qry1中字段的值也会引起后台数据库的更新,这个过程不见的比重新查询的速度快多少。
如果是想节约查询的时间,可以考虑使用条件过滤每次查询部分数据。数据量小了速度可能会快一些。
mimong_lin 2007-11-22
  • 打赏
  • 举报
回复
两个TADOQuery(qry1,qry2)
qry1先从多表中查询数据,qry2更新一个表中的数据(用update或者其它),这个时候要让qry1显示更改后的数据.

qry1中的数据集失效了是没错,要重新获得新的数据的话,得再从数据库表中查询了.但是如果数据多的话,这个重查询操作很耗时.

而对于qry2的更新操作比较频繁,每次用qry2更新完再用qry1查询显示的话,太慢了.所以想看有没有直接修改qry1中字段的值的方法.
i_love_pc 2007-11-21
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ADOQuery1->Edit();
ADOQuery1->FieldValues["field1"] ="10";
ADOQuery1->FieldValues["field2"] ="100";
ADOQuery1->Post();
}
//---------------------------------------------------------------------------

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧