UpdateSql(100分)

  • 主题发起人 主题发起人 xywen
  • 开始时间 开始时间
X

xywen

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:

我查看了大富翁有关的TUpdateSql的问题。但还是不明白TupdateSQL 怎么用我是处学者,请您详细指教。谢谢!

我的二个表如下:
TableA(id,name) TableB(id,name)
如果TQuery 的SQL语句为
Select TableA.id,TableB.name from TableA,TableB where
TableA.id=TableA.id

现在我要Update 的是Query中所有name 字段
那么TUpdateSQL modify 语句该怎样写 ?
怎样执行Update?

(我的TUpdateSQL modify语句为 :
update TableA Set name='222' ,但不论是Query1.applyupdate 还是
UpdateSQL1.ExecSql(Modify) 总是出现错误.

 
没人回答?
 
我先举一个简单的例子:
假如dbo.table1(id,name)
query1的sql为:
select id,name from table1

把query1的CacheUpdates = True,RequestLive 设成 false,
UpdaeObject=updatesql1,

query1的afterpost为:
with Query1 do
begin
Database1.StartTransaction;
try
ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
CommitUpdates;
end;

updatesql1的modify为:
update table1
set name=:name
where id=:id


现在
query1.edit;
query1.fieldbyname('name').asStrign:='a';
query1.post;
 
谢谢FSTAO, 但这能UPDATE 一个记录,请问怎样才能UPDATE QUERY所有
的记录? 另如用QUERY 本身的DATABASE 怎样设置TdirtyRead?
 
你吧一个UPDATESQL控件放在datamodel里面,然后让query的updatevobject指向
该updatesql,然后双击该控件,选定你的表格的key字段,和要更新的字段,然后
再按genertesql按钮,一切大功搞成。
还有你的query控件的cachupdate属性要设为
true,然后你就只需要在更新的时候用applyupdates。
 
动态给属性的updatasql该怎么写?
我的updatasql在提交时总是报错某字段类型不可识别
 
数值型的字段不能加引号,否则会出错。
如果想更新所有记录,可以使用如下的SQL语句。
update table set name=222 [where xxx="???"]"

有个更简便的方法,就是使用Recordset.
方法:
rs.update
 
各位高手,用tquery.sql.add('update set ...')
同用tupdatesql有区别吗?
 
1. UpdateSQL主要用于多表查询时修改记录,
用tquery.sql.add('update set ...')修改单表记录则比较方便。当然,也
可多表修改,但有点麻烦,可以参看有关的贴子。
2。用UpdateSQL,还要修改所有的记录,可以简单地用一个循环就可以:
with Query1 do begin
first;
while not eof do begin
fieldbyname('name').AsString := 'aaa';
Next
end;
end
 
我的程序用一个小表可以,另一个表较大,只是 ipdate failed.

 
接受答案了.
 
后退
顶部