以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  数据的自动流转之二的一点疑惑  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=21712)

--  作者:万通
--  发布时间:2012/7/22 17:30:00
--  数据的自动流转之二的一点疑惑

数据的自动流转之二的一点疑惑   http://www.foxtable.com/help/topics/2274.htm

 

保存 With Tables("表A")
    If .Current IsNot Nothing Then
        .Current.Save()

        Dim jd As String
        Select Case User.Name
            Case "张三"
                jd =
"1B"
            Case "李四"
                jd =
"2B"
            Case "王五"
                jd =
"3B"
            Case Else
                Return \'其他用户正常返回
        End Select
        If .Current("进度") = jd Then \'如果已经处理完毕
            .Current.
DataRow.Remove() \'则移除此行
        End If
    End If
End
With

疑惑为:当对应用户的可操作列的值为空的时候保存的话,以后就不能修改了。

1、张三登陆,如果新增一行,第一列和第二列不填入数据,直接保存时(保存后,进度列的值为“1B”,且已移除了此行)。

    备注:此时张三就不能再看到此行了。如果关闭系统再重新登陆时,张三同样不能看到,只能李四看到。

2、李四、王五登陆,如果可操作列为空值直接保存时,也会出现上述的情况。

3、建议改为如下代码:

   

保存 With Tables("表A").current
    Select Case User.Name
        Case "张三"
            If .Isnull("第一列") = false  andalso .Isnull("第二列")  =false Then
                .("进度") = "1B"
                .save()
                .DataRow.remove()
            End If
        Case "李四"
            If .Isnull("第三列")  = false  andalso .Isnull("第四列") = false Then
                .("进度") = "2B"
                .save()
                .DataRow.remove()
            End If
        Case "王五"
            If .Isnull("第五列") =false andalso .Isnull("第六列") = false  Then
                .("进度") = "3B"
                .save()
                .DataRow.remove()
            End If
        Case Else
            Return \'其他用户正常返回
    End Select
End With

       4、实际需求此功能的用户,建议再增加一个回流的功能(增加一个回流的按钮和一个combobox按钮)

 

       不知这里的疑问是否正确,请各位老师鉴定。

 

 

[此贴子已经被作者于2012-7-22 22:27:29编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/7/23 8:21:00
--  

呵呵,你测试正常就可以啊。

回流功能有意思,我们考虑在帮助增加例子。