Foxtable(狐表)用户栏目专家坐堂 → 如何实现多用户管理


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

主题:如何实现多用户管理

帅哥,在线噢!
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105490 积分:536441 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/26 16:05:00 [只看该作者]

去掉PrepareEdit给结帐赋值的代码


工作日志基础数据_DataColChanged

 

If e.DataCol.Name = "日期" Then '如果是已结帐列的内容变动

    If e.DataRow.isnull("日期")=false Then '而且变动后的值是True(已勾选)

        Dim tv As Date = e.DataRow("日期")

        Dim tp As TimeSpan = Date.Today - tv

        If tp.TotalDays >= 10 Then '如果订单已经超过10天

            e.DataRow.Locked = True '那么锁定此行

        End If

    End If

End If


项目afteropenproject事件

DataTables("工作日志基础数据").DataCols("日期").RaiseDataColChanged


 回到顶部
帅哥哟,离线,有人找我吗?
吃亏是福
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:51 积分:474 威望:0 精华:0 注册:2020/8/19 17:19:00
'锁定此行有效果,但是过十天的行,“结账”列没有自动勾选,该行也没有锁定  发帖心情 Post By:2020/8/27 15:36:00 [只看该作者]

项目事件

AfterOpenProject

DataTables("工作日志基础数据").DataCols("日期").RaiseDataColChanged

LoadUserSetting

If User.Name = "管理员" Then
    DataTables("工作日志基础数据").LoadFilter = ""
Else
    DataTables("工作日志基础数据").LoadFilter = "填报人 = '" & User.Name & "'"
End If
DataTables("工作日志基础数据").Load()

表事件

工作日志基础数据_DataColChanged

If e.DataCol.Name = "日期" Then '如果是已结帐列的内容变动
    If e.DataRow.isnull("日期")=False Then '而且变动后的值是True(已勾选)
        Dim tv As Date = e.DataRow("日期")
        Dim tp As TimeSpan = Date.Today - tv
        If tp.TotalDays >= 10 Then '如果订单已经超过10天
            e.DataRow.Locked = True '那么锁定此行
        End If
    End If
End If

工作日志基础数据_DataRowAdding

e.DataRow("填报人") = User.name '新增行.20200826
e.DataRow("日期") = Date.Today()
e.DataRow("编号") = e.DataTable.Compute("Max(编号)") + 1

[此贴子已经被作者于2020/8/27 15:40:55编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105490 积分:536441 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/27 16:07:00 [只看该作者]

如果数据重新加载的,重置列放到加载后面,去掉AfterOpenProject事件

LoadUserSetting

If User.Name = "管理员" Then
    DataTables("工作日志基础数据").LoadFilter = ""
Else
    DataTables("工作日志基础数据").LoadFilter = "填报人 = '" & User.Name & "'"
End If
DataTables("工作日志基础数据").Load()
DataTables("工作日志基础数据").DataCols("日期").RaiseDataColChanged


 回到顶部
帅哥哟,离线,有人找我吗?
吃亏是福
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:51 积分:474 威望:0 精华:0 注册:2020/8/19 17:19:00
“结账”列,还是没有自动挑√  发帖心情 Post By:2020/8/27 17:00:00 [只看该作者]

项目事件

 

LoadUserSetting

 

If User.Name = "管理员" Then

    DataTables("工作日志基础数据").LoadFilter = ""

Else

    DataTables("工作日志基础数据").LoadFilter = "填报人 = '" & User.Name & "'"

End If

DataTables("工作日志基础数据").Load()

DataTables("工作日志基础数据").DataCols("日期").RaiseDataColChanged

 

 

表事件

 

工作日志基础数据_DataColChanged


If e.DataCol.Name = "结账" Then '如果是已结帐列的内容变动

    If e.NewValue = True Then '而且变动后的值是True(已勾选)

        If e.DataRow.isnull("结账")=False Then '而且变动后的值是True(已勾选)

            Dim tv As Date = e.DataRow("日期")

            Dim tp As TimeSpan = Date.Today - tv

            If tp.TotalDays >= 10 Then '如果订单已经超过10天

                e.DataRow.Locked = True '那么锁定此行

            End If

        End If

    End If

End If

 

工作日志基础数据_DataRowAdding

 

e.DataRow("填报人") = User.name '新增行.20200826

e.DataRow("日期") = Date.Today()

e.DataRow("编号") = e.DataTable.Compute("Max(编号)") + 1

 

工作日志基础数据_DataRowLockedChanging

 

If e.DataRow("结账") = False Then  '未审核通过的行

    If e.DataRow.Locked  = False Then '如果此行目前未锁定,也就是准备锁定此行

        Dim tv As Date = e.DataRow("日期")

        Dim tp As TimeSpan = Date.Today - tv

        If tp.TotalDays >= 10 Then '如果订单已经超过10天

            e.DataRow.Locked = True '那么锁定此行

        End If

        Messagebox.show("不能锁定未审核通过的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)

        e.Cancel = True

    End If

ElseIf e.DataRow("结账") = True Then '已经结账通过的行

    If e.DataRow.Locked  = True Then '如果此行已锁定,也就是准备取消锁定此行

        If User.Group <> "管理员" Then

            Messagebox.show("只有管理员才能解锁已经审核通过的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)

            e.Cancel = True

        End If

    End If

End If

 


 回到顶部
帅哥,在线噢!
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105490 积分:536441 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/27 17:24:00 [只看该作者]

If e.DataCol.Name = "结账" orelse e.DataCol.Name = "日期" Then '如果是已结帐列的内容变动

    If e.NewValue = True andalso e.DataRow.isnull("日期")=False Then '而且变动后的值是True(已勾选)

            Dim tv As Date = e.DataRow("日期")

            Dim tp As TimeSpan = Date.Today - tv

            If tp.TotalDays >= 10 Then '如果订单已经超过10天

                e.DataRow.Locked = True '那么锁定此行

            End If

    End If

End If


 回到顶部
帅哥哟,离线,有人找我吗?
吃亏是福
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:51 积分:474 威望:0 精华:0 注册:2020/8/19 17:19:00
运行时报错  发帖心情 Post By:2020/8/27 19:26:00 [只看该作者]

.NET Framework 版本:4.0.30319.36543
Foxtable 版本:2020.5.29.8
错误所在事件:表,工作日志基础数据, DataColChanged
详细错误信息:
Exception has been thrown by the target of an invocation.
Operator '=' is not defined for type 'Date' and type 'Boolean'.

 回到顶部
帅哥哟,离线,有人找我吗?
吃亏是福
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:51 积分:474 威望:0 精华:0 注册:2020/8/19 17:19:00
  发帖心情 Post By:2020/8/27 19:35:00 [只看该作者]

表事件

 

工作日志基础数据_DataColChanged

 

If e.DataCol.Name = "结账" OrElse e.DataCol.Name = "日期" Then '如果是已结帐列的内容变动

    

    If e.NewValue = True AndAlso e.DataRow.isnull("日期") = False Then '而且变动后的值是True(已勾选)

        

        Dim tv As Date = e.DataRow("日期")

        

        Dim tp As TimeSpan = Date.Today - tv

        

        If tp.TotalDays >= 10 Then '如果订单已经超过10天

            

            e.DataRow.Locked = False '那么锁定此行

            

        End If

        

    End If

    

End If

 

工作日志基础数据_DataRowAdding

 

e.DataRow("填报人") = User.name '新增行.20200826

 

e.DataRow("日期") = Date.Today()

 

e.DataRow("编号") = e.DataTable.Compute("Max(编号)") + 1


项目事件

 

LoadUserSetting

 

If User.Name = "管理员" Then

    DataTables("工作日志基础数据").LoadFilter = ""

Else

    DataTables("工作日志基础数据").LoadFilter = "填报人 = '" & User.Name & "'"

End If

DataTables("工作日志基础数据").Load()

DataTables("工作日志基础数据").DataCols("日期").RaiseDataColChanged


 回到顶部
帅哥,在线噢!
有点蓝
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105490 积分:536441 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/27 20:20:00 [只看该作者]

If e.DataRow("结账") = True AndAlso e.DataRow.isnull("日期") = False Then '而且变动后的值是True(已勾选)

 回到顶部
帅哥哟,离线,有人找我吗?
吃亏是福
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:51 积分:474 威望:0 精华:0 注册:2020/8/19 17:19:00
如何实现超过十天,自动结账,并锁定该行  发帖心情 Post By:2020/8/28 10:34:00 [只看该作者]

表事件
工作日志基础数据_DataColChanged
If e.DataCol.Name = "结账" Then '如果是已结帐列的内容变动
    If e.NewValue = True Then '而且变动后的值是True(已勾选)
        If e.DataRow("结账") = True AndAlso e.DataRow.isnull("日期") = False Then '而且变动后的值是True(已勾选)
            Dim tv As Date = e.DataRow("日期")
            Dim tp As TimeSpan = Date.Today - tv
            If tp.TotalDays >= 10 Then '如果订单已经超过10天
                e.DataRow.Locked = True '那么锁定此行
            End If
        End If
    End If
End If

以上能实现超过十天,手动结账后,自动锁定该行。
我想实现,超过十天,自动结账,并锁定该行。请问如何实现?多谢!!!

 回到顶部
帅哥,在线噢!
有点蓝
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105490 积分:536441 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/28 10:49:00 [只看该作者]

重置列即可:DataTables("工作日志基础数据").DataCols("结账").RaiseDataColChanged

 回到顶部
总数 25 上一页 1 2 3 下一页