我用一个dbgride 显示和编辑一个表(aa),其中的一个字段是a1;其它几个表中也有同样的字段a1 如 bb表 cc表等
现在我要在修改aa表的同时更新其它几个表中的a1字段的内容我在更新表aa的保存按钮这样写
with adoqAa do
try
if State in [dsEdit,dsInsert] then
begin
UpdateOtherTable; //自已写的更新其它表的过程
Post;
end;
UpdateBatch;
except
on E: Exception do
begin
showmessage('数据提交发生错误!'+E.Message);
Abort;
end;
end;有几个问题:1、如何写UpdateOtherTable这个过程?
2、为什么我在还没有Post 前调用adoqAa.fieldbyname('a1').asstring的值已经是新的了?
现在我要在修改aa表的同时更新其它几个表中的a1字段的内容我在更新表aa的保存按钮这样写
with adoqAa do
try
if State in [dsEdit,dsInsert] then
begin
UpdateOtherTable; //自已写的更新其它表的过程
Post;
end;
UpdateBatch;
except
on E: Exception do
begin
showmessage('数据提交发生错误!'+E.Message);
Abort;
end;
end;有几个问题:1、如何写UpdateOtherTable这个过程?
2、为什么我在还没有Post 前调用adoqAa.fieldbyname('a1').asstring的值已经是新的了?
解决方案 »
- c结构体如何转换为delphi record??
- 一个关于资源管理器的原理问题,请高手指点一下,急
- 怎么实现给字符加边框轮廓?
- 用bde连接oracle8数据库,连接成功,但在query时提示表不存在
- 请问DBGrid能否实现以下功能
- ADOQUERY的SQL语句查询出的MEMO型数据为什么总是不完全?
- 如何使用给定的XML文件数据表?
- 一个关于对象重复存储和释放的问题!急着呢.......
- 菜鸟提问,希望大侠解答。1. ehlib中的grideh怎样使列宽固定。 and 2.怎样排序。急~~~~~~在线
- 一个简单问题?
- delphi安装问题
- 关于ClientSocket连接ServerSocket问题
2、也可以在dbgrid的oncolexit中写;
3、也可以在adoquery的afterscroll中写。dbgrid中改数据库不安全,建议你用dbedit等其他数据控件。
经验之谈!!!!
问题二:你可以把AdoqAa的LockType属性选择第一项,
意思是缓存更新,只有你调用了AdoqAa.UpdateBatch方法才会自动更
新进去。
procedure UpdateOtherTable(str: string);
var
Qry: TAdoQuery
begin
try
Qry := TAdoQuery.Create(nil)
.......//做一些初如设置。
with Qry do
begin
active := false;
SQL.clear;
SQL.Add('update * from bb where a1="'+ str+'"');
Active := True;
......
active := false;
SQL.clear;
SQL.Add('update * from CC where a1="'+ str+'"');
Active := True;
......
end;
finally end;
end;2.使用UpdateBatch的方法可以解决你的第二个问题,做法为设置adoqAa的LockType,然后用代码UpdateBatch方法替换Post,