如何对TQuery选出的数据进行修改?(10分)

  • 主题发起人 主题发起人 Kevin
  • 开始时间 开始时间
如何修改?
 
?
不明白?
能不能说清楚一点?
 
是LIVE的数据就可以修改
把REQUESTLIVE设置为TRUE
还有其他怪限制.
然后QUERY1.FIELDBYNAME.....
 
库A,B通过字段No关联
用TQuery从两库中选择满足条件的记录,A,B库中均有字段值限制
用DBGrid显示后,要能直接对某一记录值做更改
要命的是,过滤记录时用了ParaByName语句,此时即使RequestLive
设为True,其CanModify也自动改为False了,因此不能对记录值修改。

求救!如何能实现这一不高的要求?
(也试过TTable,通过masterfield关联后,主库引入从库的字段,
但无法对这些字段设置过滤条件,编译时出错原因为:主库中不存在
从库的引入字段)


救急!!

小弟先谢了!
 
采用动态SQL语言,不要用PARABYNAME,SQL语句中不用排序即可。
 
将检索和数据修改分开, 修改采用事务的方式:

function ExecuteSQLs(Query: TQuery; pstrlSQL: TStringList): boolean;
var
nSQLCount, i: integer;
begin
i := 0;
nSQLCount := pstrlSQL.Count ;
if (nSQLCount = 0) then begin
result := true;
exit;
end;
try //试图开始执行一系列SQL语句。
try //试图开始一个事务
dmMain.dbMain.StartTransaction;
except
on E: Exception do begin
MsgBox('不能在数据库中开始一个事务!,请详细记录下面的错误信息后与系统管理员联系!', Application.Title, 64);
MsgBox('系统错误信息:' + E.Message, Application.Title, 64);
result := false;
exit;
end;
end;
//开始执行一系列的语句
if Query.Active then Query.Close;
for i := 0 to nSQLCount - 1 do begin
Query.SQL.Clear;
Query.SQL.Add(pstrlSQL.Strings);
Query.ExecSQL;
end;
i := 0;

try //试图提交改变
dmMain.dbMain.Commit;
result := true;
except
On E: Exception do begin//提交事务时出现了错误,Rollback整个事务。
dmMain.dbMain.Rollback;
MsgBox('不能提交数据!请详细记录下面的错误信息后与系统管理员联系!', '错误', 48);
MsgBox('系统错误信息:' + E.Message, '错误', 48);
result := false;
end;
End;
Except
On E: Exception do begin //执行中出现了问题,Rollback整个事务。
dmMain.dbMain.Rollback;
MsgBox('修改数据时出现错误!请详细记录下面的错误信息后与系统管理员联系!', '错误', 48);
MsgBox('系统错误信息:' + E.Message, '错误', 48);
MsgBox('错误语句:' + pstrlSQL.Strings, '错误', 48);
result := false;
end;
End;
end;
 
只能用TQuery控件写SQL语句直接修改表中的数据
 
10分...小气... :)
由于提问人失去联系,结束问题吧。

-- by 3h
 
后退
顶部