以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助]移除处理完毕的行这种情况如何实现? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=37700)
|
-- 作者:syzsyk
-- 发布时间: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
|
-- 作者:lsy
-- 发布时间:2013/7/9 7:51:00
--
开发版,与在下无关。
|
-- 作者:syzsyk
-- 发布时间: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
-- 发布时间: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
-- 发布时间: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
-- 发布时间:2013/7/10 10:53:00
--
日期不一致没有获取到任何行吧
|
-- 作者:syzsyk
-- 发布时间:2013/7/10 11:39:00
--
测试了下,移除处理完的行及追载待处理的行都不起作用。
|
-- 作者:Bin
-- 发布时间:2013/7/10 11:49:00
--
你先确保你TR有正常获取到没
|
-- 作者:syzsyk
-- 发布时间:2013/7/10 19:11:00
--
MessageBox.Show(Filter)后:
此主题相关图片如下:图2.jpg
行消失了,但点击确定后,行又出现了,进度列没有 内容了,怎么回事?
[此贴子已经被作者于2013-7-10 19:20:26编辑过]
|
-- 作者:syzsyk
-- 发布时间: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
|