Foxtable(狐表)用户栏目专家坐堂 → [求助]移除处理完毕的行这种情况如何实现?


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

主题:[求助]移除处理完毕的行这种情况如何实现?

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


加好友 发短信
等级:童狐 帖子:274 积分:2303 威望:0 精华:0 注册:2008/9/12 16:46:00
[求助]移除处理完毕的行这种情况如何实现?  发帖心情 Post By:2013/7/8 23:11:00 [只看该作者]

见管理项目930,在AfterSaveProject要实现移除处理完毕的行按用户如下可以实现,但现在根据日期、姓名、权限授权后,如何修改以下代码实现移除处理完毕的行?

Dim Filter As String
Dim bj As String
Dim drs As List(Of DataRow)
'移除处理完毕的行
Select Case User.Name
    Case "张三"
        Filter = "进度 = '1B'"
    Case "李四"
        Filter = "进度 = '2B'"
    Case "王五"
        Filter = "进度 = '3B'"
    Case "赵六"
        Filter = "进度 = '4B'"
    Case Else
        Return '其他用户正常返回
End Select
DataTables("表A").RemoveFor(Filter)
'追载待处理的行
Select Case User.Name
    Case "李四"
        Filter = "进度 = '1B'"
        bj= "2A"
    Case "王五"
        Filter = "进度 = '2B'"
        bj = "3A"
    Case "赵六"
        Filter = "进度 = '3B'"
        bj = "4A"
    Case Else
        Return '其他用户正常返回
End Select
drs = DataTables("表A").AppendLoad(Filter,False)
'为新追载的行设置流程开始标记
If drs.Count > 0 Then
    For Each dr As DataRow In drs
        dr("进度") = bj
        dr.Save() '一定要保存,以更新后台的流程开始标记
    Next
End If

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目930.foxdb


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/7/9 7:51:00 [只看该作者]

开发版,与在下无关。

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


加好友 发短信
等级:童狐 帖子:274 积分:2303 威望:0 精华:0 注册:2008/9/12 16:46:00
  发帖心情 Post By:2013/7/9 22:58:00 [只看该作者]

Select Case 语句不太会用,用if语句,修改如下,运行显示错误见下图,请大家帮忙看问题出在哪?:

Dim dt As Date = Date.Today
Dim us As String = User.name
Dim dr As DataRow = DataTables("用户授权").Find("用户名 = '" & us & "' And 日期 = #" & dt & "#")
Dim Filter As String
Dim bj As String
Dim drs As List(Of DataRow)
'移除处理完毕的行
If dr IsNot Nothing Then
   If dr("A权限")=True Then
        Filter = "进度 = '1B'"
End If
   If dr("B权限")=True Then
        Filter = "进度 = '2B'"
End If
   If dr("C权限")=True Then
        Filter = "进度 = '3B'"
End If
   If dr("D权限")=True Then
        Filter = "进度 = '4B'"
End If
   Else
        Return '其他用户正常返回
End If
DataTables("表A").RemoveFor(Filter)
'追载待处理的行
If dr IsNot Nothing Then
   If dr("B权限")=True Then
        Filter = "进度 = '1B'"
        bj= "2A"
End If
   If dr("C权限")=True Then
        Filter = "进度 = '2B'"
        bj = "3A"
End If
    If dr("D权限")=True Then
        Filter = "进度 = '3B'"
        bj = "4A"
End If
   Else
        Return '其他用户正常返回
End If
drs = DataTables("表A").AppendLoad(Filter,False)
'为新追载的行设置流程开始标记
If drs.Count > 0 Then
    For Each dr As DataRow In drs
        dr("进度") = bj
        dr.Save() '一定要保存,以更新后台的流程开始标记
    Next
End If

 


图片点击可在新窗口打开查看此主题相关图片如下:图片4.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/10 8:47:00 [只看该作者]

Dim dr As DataRow = DataTables("用户授权").Find("用户名 = '" & us & "' And 日期 = #" & dt & "#") '你这里定义了DR

If drs.Count > 0 Then 

    For Each dr As DataRow In drs '你下面这里又重新定义一个DR 你应该换一个变量名
        dr("进度") = bj
        dr.Save() '一定要保存,以更新后台的流程开始标记
    Next
End If

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


加好友 发短信
等级:童狐 帖子:274 积分:2303 威望:0 精华:0 注册:2008/9/12 16:46:00
  发帖心情 Post By:2013/7/10 10:42:00 [只看该作者]

Bin版主,您的说法是对的,现在不报错了,但就是没有起到作用,下面的代码中哪还有问题?

Dim dt As Date = Date.Today
Dim us As String = User.name
Dim tr As DataRow = DataTables("用户授权").Find("用户名 = '" & us & "' And 日期 = #" & dt & "#")
Dim Filter As String
Dim bj As String
Dim drs As List(Of DataRow)
'移除处理完毕的行
If tr IsNot Nothing Then
   If tr("A权限")=True Then
        Filter = "进度 = '1B'"
End If
   If tr("B权限")=True Then
        Filter = "进度 = '2B'"
End If
   If tr("C权限")=True Then
        Filter = "进度 = '3B'"
End If
   If tr("D权限")=True Then
        Filter = "进度 = '4B'"
End If
   Else
        Return '其他用户正常返回
End If
DataTables("表A").RemoveFor(Filter)
'追载待处理的行
If tr IsNot Nothing Then
   If tr("B权限")=True Then
        Filter = "进度 = '1B'"
        bj= "2A"
End If
   If tr("C权限")=True Then
        Filter = "进度 = '2B'"
        bj = "3A"
End If
    If tr("D权限")=True Then
        Filter = "进度 = '3B'"
        bj = "4A"
End If
   Else
        Return '其他用户正常返回
End If
drs = DataTables("表A").AppendLoad(Filter,False)
'为新追载的行设置流程开始标记
If drs.Count > 0 Then
    For Each dr As DataRow In drs
        dr("进度") = bj
        dr.Save() '一定要保存,以更新后台的流程开始标记
    Next
End If


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/10 10:53:00 [只看该作者]

日期不一致没有获取到任何行吧

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


加好友 发短信
等级:童狐 帖子:274 积分:2303 威望:0 精华:0 注册:2008/9/12 16:46:00
  发帖心情 Post By:2013/7/10 11:39:00 [只看该作者]

测试了下,移除处理完的行及追载待处理的行都不起作用。


 


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/10 11:49:00 [只看该作者]

你先确保你TR有正常获取到没

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


加好友 发短信
等级:童狐 帖子:274 积分:2303 威望:0 精华:0 注册:2008/9/12 16:46:00
  发帖心情 Post By:2013/7/10 19:11:00 [只看该作者]

MessageBox.Show(Filter)后:

 


图片点击可在新窗口打开查看此主题相关图片如下:图2.jpg
图片点击可在新窗口打开查看

 

行消失了,但点击确定后,行又出现了,进度列没有
内容了,怎么回事?

[此贴子已经被作者于2013-7-10 19:20:26编辑过]

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


加好友 发短信
等级:童狐 帖子:274 积分:2303 威望:0 精华:0 注册:2008/9/12 16:46:00
  发帖心情 Post By:2013/7/10 23:57:00 [只看该作者]

问题自己已经解决,原因是缺少了下面红色部分代码:

Dim dt As Date = Date.Today
Dim us As String = User.name
Dim tr As DataRow = DataTables("用户授权").Find("用户名 = '" & us & "' And 日期 = #" & dt & "#")
Dim Filter As String
Dim bj As String
Dim drs As List(Of DataRow)
'移除处理完毕的行

If tr IsNot Nothing Then
   If tr("A权限") = True Then
        Filter = "进度 = '1B'"
     End If
   If tr("B权限") = True Then
        Filter = "进度 = '2B'"
     End If
   If tr("C权限") = True Then
        Filter = "进度 = '3B'"
     End If
   If tr("D权限") = True Then
        Filter = "进度 = '4B'"
     End If
   Else
        Return '其他用户正常返回
End If

DataTables("表A").RemoveFor(Filter)
MessageBox.Show(Filter)
'追载待处理的行
If tr IsNot Nothing Then
   If tr("A权限")=True Then
Filter = "进度 Is Null" '进度为空
        bj = "1A"
End If
   If tr("B权限")=True Then
        Filter = "进度 = '1B'"
        bj= "2A"
End If
   If tr("C权限")=True Then
        Filter = "进度 = '2B'"
        bj = "3A"
End If
    If tr("D权限")=True Then
        Filter = "进度 = '3B'"
        bj = "4A"
End If
   Else
        Return '其他用户正常返回
End If
drs = DataTables("表A").AppendLoad(Filter,False)
'为新追载的行设置流程开始标记
If drs.Count > 0 Then
    For Each dr As DataRow In drs
        dr("进度") = bj
        dr.Save() '一定要保存,以更新后台的流程开始标记
    Next
End If


 回到顶部
总数 11 1 2 下一页