使用query时如何更新数据(100分)

  • 主题发起人 主题发起人 gdq
  • 开始时间 开始时间
G

gdq

Unregistered / Unconfirmed
GUEST, unregistred user!
在使用query控件时怎样更新其中的一列或几列
所用的sql语句假如为
select * from custom
where customno>=110 and customno<=200
我是一个初学者 请各位大侠帮帮忙.
 
设置RequestLive属性为True
 
update
.....
where customno>=110 and customno<=200
 
如检索执行后更改,使用cheka的方法,将query的RequestLive设为True;
如只是想更改其中某些字段的数据,用g622的方法,直接使用update。
update table set col=.. ,co2=.. ... where ....
 
如果是本地数据,如paradox7、Access97或foxpro,设置RequestLive属性为True
就行了。但是如果是操作远程数据库,如Mssql7、DB2或Oracle,就不是简单的把
RequestLive属性为True了,得用Tquery+Tupdate,也不要把sql语句写成select * from custom where customno>=110 and customno<=200,否则会出现很多问题
的。


 
fstao,远程数据库也要Requestlive=true吧
 
如果Update涉及的操作只针对一张表的话,只需简单地设Requestlive=true,
不管是本地或远程数据库.若需更新多张表,那就用TUpdateSQL,设CachedUpdate = True
 
如果是本地数据,设置RequestLive属性为True就行了
但是如果是操作远程数据库,用TQuery+TupdateQuery
就行了。具体设置,将
TQuery.CachUpdate=TRUE
TQUERY.UpdateObject= TupdateQuery
其他设置就不说了
在TUpdateObject内面你可写语句,也可不写,它可自动生成SQL语句!!!

可以给分了吧

 
<pre><pre class="text">
使用方法:exec updatecol table1,2,3,'NewValue'
参数:表名,起始列,终止列,新值(如不为字符类型需进行转换)
建立存贮过程:
CREATE PROCEDURE UpdateCol @YourTable Char(50),@StartCol int,@EndCol
int,@ReplaceValue char(20)
as
declare @FieldName char(50)
DECLARE UpdateWhere CURSOR FOR select name from syscolumns where (id=
(select id from sysobjects where name=@YourTable))and(colid&amp;gt;=@StartCol)
and(colid&amp;lt;=@EndCol)
OPEN UpdateWhere
FETCH NEXT FROM UpdateWhere INTO @FieldName
WHILE @@FETCH_STATUS = 0 BEGIN
exec('Update '+@YourTable+' Set '+@FieldName+'=&amp;quot;'+@ReplaceValue+'&amp;quot;')
FETCH NEXT FROM UpdateWhere INTO @FieldName
END
CLOSE UpdateWhere
DEALLOCATE UpdateWhere
</font></pre>
 
操作远程数据库,最好不要把Requestlive=true,否则会出现莫名其妙的错误。
 
你用Requestlive=true,当你正在修一条记录,而这条又被另一用户修改了则
会出错,还是不要轻易使用。
 
若是单表,只需将TQuery的RequestLive设为true;
若是多表或复杂查询,则还需将CachedUpdate设为true,并为TQuery
添加一个相关的TUpdateSQL组件;
这样,对取回的数据集中记录的修改就会更新到数据库;
最后,不要忘了用ApplyUpdates提交哦 :)
更详细的用法请参考相关组件的帮助
 
若是单用户可以用上述方法。
若是多用户则应该注意对表的加锁注意对表的共享控制。

结束吧!
 
多人接受答案了。
 

Similar threads

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