三层数据更数(20分)

  • 主题发起人 主题发起人 林海
  • 开始时间 开始时间

林海

Unregistered / Unconfirmed
GUEST, unregistred user!
SERVER上有一个Query1,是连接几个表的查询,不能更新。
想通过几个TQuery如用UpdateQueryQuery1涉及的表CARGO,
在与Query1相连的Provider的beforeUpdateRecord事件中
写如下代码:

Case UpdateKind of
ukModify: Begin
UpdateQuery.SQL.Text:=
'Update Cargo Set Name=:Name,CargoNo=:CargoNo Where CargoOrder=:CargoOrder'
UpdateQuery.ParamByName'CargoOrder').asInteger:=
DeltaDS.FieldByName('CargoOrder').asInteger;
UpdateQuery.ParamByName('CargoNo').asString:=
DeltaDS.FieldByName('CargoNo').asString;
UpdateQuery.ParamByName('Name').asString:=
DeltaDS.FieldByName('Name').asString;
end;
ukInsert: begin
UpdateQuery.SQL.Text:='Insert Cargo .....'
UpdateQuery.ParamByName('...')
end;
end;
UpdateQuery.ExecSQL;
Applied:=True;

结果ukInsert没问题,ukModify不不更新.这是个老问题了,
我用DELPHI40,谁能提供个For4.0的TUpdateSQLProvider?

对不起,只有20分了!
 
没试过,抱错吗?
 
你如果用同一个TQUERY 进行两次事务操作则在写代时一定要注意一定要将TQUERY关闭,如下:
with query1 do
begin
close;
sql.clear;
sql.text:='...';
end;
with query1 do
begin
close;
sql.clear;
sql.text:='...';
end;

还要记住在传递参数进去时最好不要用AsInteger,它经常会出错,你最好用AsString
传入然后用数据库所带的转换工具将字符串转换为数值型
 
后退
顶部