以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  每次打开表都锁定表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=115550)

--  作者:XINYUEMIN
--  发布时间:2018/3/8 23:02:00
--  每次打开表都锁定表

下面代码有错误的地方吗?为什么数据表一打开就锁定表了呢?

表时间DataColChanged

 Select Case e.DataCol.Name
    Case  "实际用车日期_起","实际用车日期_止"
        Dim dr  As  DataRow = e.DataRow
        If dr.IsNull("实际用车日期_起") OrElse dr.IsNull("实际用车日期_止") Then
            dr("实际用车日期_天数") = Nothing
        Else
            Dim tp As TimeSpan = dr("实际用车日期_止") - dr("实际用车日期_起")
            dr("实际用车日期_天数")= tp.TotalDays + 1
        End  If
    End  Select
    Select Case e.DataCol.name
        Case  "用车时间_上车时间","用车时间_下车时间"
            Dim dr As DataRow = e.DataRow
            If dr.IsNull("用车时间_上车时间") Or dr.IsNull("用车时间_下车时间") Then
                dr("总工时") = Nothing
            Else
                Dim  tp As TimeSpan
                tp = dr("用车时间_下车时间") - dr("用车时间_上车时间")
                dr("总工时") = tp.TotalSeconds()
            End  If
        End  Select
       
        If e.DataCol.Name = "实际用车日期_起" Then
            If e.DataRow.IsNull("实际用车日期_起") Then
                e.DataRow("订单编号") = Nothing
            Else
                Dim bh As String = Format(e.DataRow("实际用车日期_起"),"yyyyMMdd")
                If e.DataRow("订单编号").StartsWith(bh) = False
                    Dim max As String
                    Dim idx As Integer
                    max = e.DataTable.Compute("Max(订单编号)","实际用车日期_起 = #" & e.DataRow("实际用车日期_起") & "# And [_Identify] <> " & e.DataRow("_Identify"))
                    If max > "" Then
                        idx = CInt(max.Substring(9,3)) + 1
                    Else
                        idx = 1
                    End If
                    e.DataRow("订单编号") = bh & "-" & Format(idx,"000")
                End If
            End If
        End If
       
        If e.DataRow("锁定本行") <> Nothing Then
            e.DataRow.Locked = False
        Else
            e.DataRow.Locked = True
        End If 
   


--  作者:有点甜
--  发布时间:2018/3/8 23:06:00
--  

1、锁定本行是逻辑列?那就改代码

 

           e.DataRow.Locked = e.DataRow("锁定本行")

 

2、重置列,重新计算一次


--  作者:XINYUEMIN
--  发布时间:2018/3/8 23:09:00
--  

设计窗口的时候不小心把属性允许编辑改成False了图片点击可在新窗口打开查看

已经搞定了


--  作者:XINYUEMIN
--  发布时间:2018/3/8 23:28:00
--  
为什么在窗口输入用车时间_上车时间和用车时间_下车时间的时候显示1900-01-01 08:00 呢?
--  作者:XINYUEMIN
--  发布时间:2018/3/8 23:31:00
--  
可以直接显示时间08:00吗?
--  作者:有点蓝
--  发布时间:2018/3/9 9:57:00
--  
参考:http://www.foxtable.com/webhelp/scr/2033.htm
--  作者:XINYUEMIN
--  发布时间:2018/3/9 20:50:00
--  
上车时间显示08:00   下车时间显示19:30  总工时显示11:30 总工时是计算得出的 怎么显示11小时30分  超时数01:30 怎么改成1小时3分   窗口里面上车时间 下车时间和总工时对应的TextBox里面显示的是1900-01-01 08:00
--  作者:XINYUEMIN
--  发布时间:2018/3/9 20:51:00
--  

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

--  作者:XINYUEMIN
--  发布时间:2018/3/9 20:52:00
--  

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

--  作者:XINYUEMIN
--  发布时间:2018/3/9 20:54:00
--  

在哪写代码? 怎么写?