以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  时段录入导出问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=54840)

--  作者:一笑
--  发布时间:2014/8/5 22:19:00
--  时段录入导出问题
请教专家:
1. 可否通过EXCEL表格录入时段,尝试过,不成功;
2. 在合计模式下时段是秒,有没有办法显示小时:分钟?
图片点击可在新窗口打开查看此主题相关图片如下:合计图片.jpg
图片点击可在新窗口打开查看
3. 用狐表统计时段 导出EXCEL表格后却是以秒计的值 有没有办法导出后仍显示时段?谢谢
图片点击可在新窗口打开查看此主题相关图片如下:7月机型汇总.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:导出机型汇总.png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2014/8/5 22:24:00
--  

1、excel没有时段一说;

 

2、合计就是合计秒的,你可以不用合计模式,用汇总模式;或者自己加入一行合计;

 

3、导出的时候,可以设计模板导出,模板可以设置表达式转换为时段。


--  作者:一笑
--  发布时间:2014/8/6 22:10:00
--  
谢谢回复,又学到一些
--  作者:一笑
--  发布时间:2014/8/6 22:22:00
--  
麻烦版主 方便告诉一下 秒转小时分钟的表达吗?刚入门,请多多帮助
--  作者:有点甜
--  发布时间:2014/8/6 22:37:00
--  

Dim N As Integer = 3662
Dim hour As Integer = N \\ 3600
Dim minute As Integer = (N Mod 3600) \\ 60
Dim second As Integer = N Mod 60

msgbox(hour & " " & minute & " " & second)


--  作者:一笑
--  发布时间:2014/8/9 21:56:00
--  
谢谢耐心回复。还有点问题:
1. 我输入了开始时间和结束时间,增加一个表达式列,用表达式[开始时间] - [结束时间],结果不允许,请问可以吗?
2. 后来我看了帮助文件,使用DataColChanged事件代码:

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
可以进行时段计算,但有个问题,结束时间跨天的时,比如起始时间是23:00结束时间是第二天01:00,计算出是负数,能帮忙修改一下代码,考虑到这种情况下:("结束时间") - dr("起始时间") <0时,加上24小时。

3. 为了计算时段,只能用DataColChanged事件代码?能用其他方法吗?
谢谢专家。



--  作者:有点甜
--  发布时间:2014/8/10 9:25:00
--  

 时段列可以直接用表达式计算的,除非你设置的不是时段,而是日期时间类型。

 

 具体问题,请上传一个例子说明。


--  作者:一笑
--  发布时间:2014/8/10 17:19:00
--  
专家你好!
1. 我增加了一个“时段”的表达式列,属性设置为双精度小数,扩展属性为时段,在设置表达式[起始时间] - [结束时间]时,不允许,弹出对话框,请见附件
图片点击可在新窗口打开查看此主题相关图片如下:表达式错误.png
图片点击可在新窗口打开查看

2. 我使用了DataColChanged事件代码,计算出本次用时,但会出现上次所述的负值,
图片点击可在新窗口打开查看此主题相关图片如下:负值.png
图片点击可在新窗口打开查看
   请问该如何修改代码。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:时段计算.table


谢谢!


--  作者:有点甜
--  发布时间:2014/8/10 17:49:00
--  

 1、你的起始时间、结束时间必须是时段而不能是时间,才能用表达式计算

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:时段计算.table

 2、如果改代码

 

Select Case e.DataCol.name
    Case "起始时间","结束时间"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("起始时间") Or dr.IsNull("结束时间") Then
            dr("本次用时") = Nothing
        Else
            If dr("结束时间") >= dr("起始时间") Then
                Dim tp As TimeSpan = dr("结束时间") - dr("起始时间")
                dr("本次用时") = tp.TotalSeconds()
            Else
                Dim d1 As Date = dr("结束时间")
                Dim d As Date = dr("起始时间")
                Dim tp As TimeSpan = new Date(1900, 1, 2, d1.Hour, d1.Minute, d1.Second) -  new Date(1900, 1, 1, d.Hour, d.Minute, d.Second)
                dr("本次用时") = tp.TotalSeconds()
            End If
        End If
End Select


--  作者:一笑
--  发布时间:2014/8/11 21:16:00
--  
谢谢专家的及时回复,让我对狐表更有信心。

1. 第一种表达式方法,很有创意和有效,虽然EXCEL表格不能直接导入时段,但给我提供很好的思路;

2. 第二种方法验证有效,很好,就是高!

顺便提个问题,用数据表做字典后,可以显示对应的项目,但能不能替换成对应项目,等于实现一种翻译功能,可以吗?

谢谢专家!