Foxtable(狐表)用户栏目专家坐堂 → [求助]UPDATE语句请教


  共有8129人关注过本帖树形打印复制链接

主题:[求助]UPDATE语句请教

帅哥哟,离线,有人找我吗?
lin_hailun
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/8 14:25:00 [显示全部帖子]

 Select Top 100 _Sortkey From {任务表} Where 责任人 Is Null Order By _Sortkey

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/10 9:09:00 [显示全部帖子]

 楼主犯了写小错误。

If emt = 0 Then
    Return
End If
Dim num As Integer = e.Form.Controls("Num1").Value
If num <= 0 OrElse num > emt Then
    MessageBox.Show("对不起,操作条数超过限值","提示",MessageBoxButtons.OK,MessageBoxIcon.Error)
Else
    Dim cp As String = e.Form.Controls("ComboBox1").Value
    Dim gy As String = e.Form.Controls("ComboBox2").Value
    If gy Is Nothing Then
        MessageBox.Show("请选择雇员","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        Return
    End If
    Dim dt As DataTable
    Dim cmd As new sqlcommand
    cmd.C
    cmd.CommandText = "Select Top " & num & " * From {订单} Where 产品 = '" & cp & "' And 雇员 Is Null"
    dt = cmd.ExecuteReader
    num = dt.DataRows(num - 1)("编号")
    cmd.CommandText = "UPDATE {订单} Set 雇员 = '" & gy & "' Where 产品 =  '" & cp & "' And 雇员 Is Null And 编号 <= " & num
    If cmd.ExecuteNonQuery > 0 Then
        MessageBox.Show("操作成功","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
    e.Form.Close
End If

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/10 9:58:00 [显示全部帖子]

 因为你要修改的是前多少行,所以只能通过获取到第n行的编号,然后更新比这个编号小的行。

 没有便捷的方式。除非你的应用改变。

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/10 10:17:00 [显示全部帖子]

 嗯嗯,确实,用一个临时表或者数据表吧。一次读取所需的内容,这样只在客户端查询,这样比较好。

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/10 15:36:00 [显示全部帖子]

 嗯嗯,不错。

 回到顶部