以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]UPDATE语句请教  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=26566)

--  作者:blueskyyq
--  发布时间:2012/12/8 1:01:00
--  [求助]UPDATE语句请教

UPDATE {任务表}  set  责任人 = \'张三\' Where 责任人 Is Null,这一句执行正确

但我只要UPDATE部分符合条件的行,比如说前100条,这个TOP 100怎么加上去才有效呢

请教各位高手


--  作者:lin_hailun
--  发布时间:2012/12/8 9:24:00
--  
 如果是Access的话,要分几步走。
 查出第100行的sortkey值,然后写。
 UPDATE {任务表} set 责任人 = \'张三\' Where 责任人 Is Null and _Sortkey <= 查出的值

 如果是sqlserver就简单一点。
 
update temp set 责任人 = \'张三\' From (select Top 100 * from {xxx} where 责任人 is null order by _sortkey) as temp

--  作者:blueskyyq
--  发布时间:2012/12/8 11:27:00
--  
谢谢二位
--  作者:blueskyyq
--  发布时间:2012/12/8 13:02:00
--  

还是搞不定,大家再帮忙看下

我用的是Access数据源,怎样用SQL语句查出第100行的sortkey值(我用的是分页加载,只能用后台SQL语句)


--  作者:blueskyyq
--  发布时间:2012/12/8 13:20:00
--  
请教各位高手,实现一楼想法用SQL语句怎么写(Access数据源,要进行操作的数据大部分是还没有加载的)
--  作者:blueskyyq
--  发布时间:2012/12/8 13:37:00
--  

dim dt as datatable

cmd.CommandText = select top 100  From {任务表}  Where 责任人 Is Null

dt = cmd.ExecuteReader

for each dr as datarow in dt

dr("责任人") = “张三"

next

想了一下,可心按上面语句,但怎么写回去呢?


--  作者:lin_hailun
--  发布时间:2012/12/8 13:40:00
--  
这样去获取。

Dim cmd As New SQLCommand
cmd.Co nnectio nName = "sss"
cmd.CommandText = "Select Top 100 _Sortkey From {任务表} Where 责任人 Is Null Order By _Sortkey"
Dim dt As DataTable = cmd.ExecuteReader()
sortkey = dt.DataRow(99)("_Sortkey")

msgbox(sortkey)
[此贴子已经被作者于2012-12-8 13:44:11编辑过]

--  作者:blueskyyq
--  发布时间:2012/12/8 13:47:00
--  

小林,你那样我试过了,不行。返回的是 责任人 Is Null 中最大的_Sortkey ,不是想要的值

cmd.CommandText = "Select Top 100 Max([_Sortkey]) From {任务表} Where 责任人 Is Null Order By [_Sortkey]"   (特殊列名要加[])

这样写又提示出错


--  作者:lin_hailun
--  发布时间:2012/12/8 14:25:00
--  
 Select Top 100 _Sortkey From {任务表} Where 责任人 Is Null Order By _Sortkey

返回的,是前100行的数据。

然后取得第100行的数据,这个不会是_Sortkey的最大。楼主你试试,不行的话,上传例子。

--  作者:blueskyyq
--  发布时间:2012/12/9 23:18:00
--  
还是搞不定啊,各位再帮我看看