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


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

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

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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/20 8:43:00 [显示全部帖子]


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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/21 14:57:00 [显示全部帖子]

注意DataTable的最后一行不一定是Table的最后一行

If e.DataTable.DataRows.Count > 0 Then '如果不是一个空表
    Dim dr As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) '获得最后一行
    For Each dc As DataCol In e.DataTable.DataCols
        e.DataRow(dc.Name) = dr(dc.Name) '将最后一行的内容复制到新增行中.
    Next
End If

e.DataRow("填报人") = User.name
e.DataRow("日期") = Date.Today()
e.DataRow("序号") = e.DataTable.Compute("Max(序号)") + 1

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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/21 15:00:00 [显示全部帖子]

如果要使用Table的最后一行,改为

Dim dr As DataRow = Tables(e.DataTable.Name).Rows(Tables(e.DataTable.Name).Rows.Count - 1).DataRow '获得最后一行


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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/24 14:39:00 [显示全部帖子]

这个窗口是用来执行数据库sql语句的,不是执行代码的。代码直接写在代码编辑器即可。

初学者建议先按顺序学习一下基础:http://www.foxtable.com/webhelp/topics/1592.htm

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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/26 14:29:00 [显示全部帖子]

表格不同事件有不同的使用场合,如果要改变其它列值,应该放到datacolchanged事件处理,而不是PrepareEdit事件

另外【自动返回True】指什么?没看懂

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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望: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


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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望: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


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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望: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


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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望: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(已勾选)

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


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/28 10:49:00 [显示全部帖子]

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

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