关联数据库的过滤与更改,救急!!(10分)

  • 主题发起人 主题发起人 Kevin
  • 开始时间 开始时间
K

Kevin

Unregistered / Unconfirmed
GUEST, unregistred user!
库A,B通过字段No关联
用TQuery从两库中选择满足条件的记录,A,B库中均有字段值限制
用DBGrid显示后,要能直接对某一记录值做更改
要命的是,过滤记录时用了ParaByName语句,此时即使RequestLive
设为True,其CanModify也自动改为False了,因此不能对记录值修改。

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


救急!!

小弟先谢了!(分数不够,请包涵)
 
再做一个Form来修改Table吧
 
将检索和数据修改分开, 修改采用事务的方式:

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;
 
时间太长没人讨论而且提问人长时间没联系。
强制结束讨论。

-- by 3h
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
后退
顶部