以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于12进制相减的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97318)

--  作者:guimingze
--  发布时间:2017/3/9 20:30:00
--  关于12进制相减的问题
例如已有  A列 2017.03 B列 2010.02    A-B=7.01   请问老师如何实现。
--  作者:有点色
--  发布时间:2017/3/9 20:36:00
--  

 弄成日期加减

 

Dim s1 As String = "2017.03"
Dim s2 As String = "2010.02"
Dim a1 As String() = s1.Split(".")
Dim a2 As String() = s2.Split(".")
Dim d1 As Date = new Date(a1(0), a1(1), 1)
Dim d2 As Date = new Date(a2(0), a2(1), 1)

Dim y,m,d As Integer
DateYMD(d2,d1,y,m,d)
msgbox(y & " " & m & " " & d)


--  作者:guimingze
--  发布时间:2017/3/9 20:50:00
--  回复:(有点色) 弄成日期加减 Dim s1...
老师给的方法我放在
图片点击可在新窗口打开查看此主题相关图片如下:t__h54$i0br@}08v%v7l0g.png
图片点击可在新窗口打开查看
表达式列里实现不了啊。     第一列 - 第二列=第三列
--  作者:有点色
--  发布时间:2017/3/9 21:22:00
--  

datacolchanged事件

 

If e.DataCol.name = "第一列" OrElse e.DataCol.name = "第二列" Then
   
    Dim s1 As String = e.DataRow("第一列")
    Dim s2 As String = e.DataRow("第二列")
    Dim a1 As String() = s1.Split(".")
    Dim a2 As String() = s2.Split(".")
    If a1.length = 2 AndAlso a2.length = 2 Then
        Dim d1 As Date = new Date(a1(0), a1(1), 1)
        Dim d2 As Date = new Date(a2(0), a2(1), 1)
        Dim y,m,d As Integer
        DateYMD(d2,d1,y,m,d)
        e.DataRow("第三列") = y & "." & format(m, "00")
    Else
        e.DataRow("第三列") = Nothing
    End If
End If


--  作者:guimingze
--  发布时间:2017/3/10 8:46:00
--  回复:(有点色)datacolchanged事件 If e.D...
第一列 2017.02 第二列 2002.3 第三列 14.11 第四列若写 3 第五列1.08 为  0.06*3     第六列 16.07   =第三列+第五列  (12进制)  请问老师如何实现?
图片点击可在新窗口打开查看此主题相关图片如下:kkr2u3zbxhv%z@rs$u9if.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2017/3/10 8:58:00
--  
第五列是怎么计算的?第四列乘于下一行的第五列?下一行没有值怎么算?乘0?
--  作者:有点色
--  发布时间:2017/3/10 10:20:00
--  

如果是相加的问题,参考,自己改造

 

Dim s1 As String = "14.11"
Dim s2 As String = "1.08"
Dim a1 As String() = s1.Split(".")
Dim a2 As String() = s2.Split(".")
Dim d1 As Date = new Date(a1(0), a1(1), 1)
Dim d2 As Date = d1.AddYears(a2(0)).AddMonths(a2(1))
msgbox(format(d2, "yy.MM"))


--  作者:guimingze
--  发布时间:2017/3/10 10:59:00
--  回复:(有点色)如果是相加的问题,参考,自己改造...
谢谢老师  但是不单单是相加的问题  就是  若写1  代表0.06  如何实现老师  2代表1.02   以此类推  如何实现呢?
--  作者:有点色
--  发布时间:2017/3/10 11:16:00
--  
以下是引用guimingze在2017/3/10 10:59:00的发言:
谢谢老师  但是不单单是相加的问题  就是  若写1  代表0.06  如何实现老师  2代表1.02   以此类推  如何实现呢?

 

Dim d1 as Double = 0.6
Dim d2 As integer = 3
Dim s As String = format(d1 * d2, "#.00")
Dim ary() As String = s.split(".")
s = ary(0) & "." & format(ary(1) / 10, "00")
msgbox(s)


--  作者:guimingze
--  发布时间:2017/3/10 21:26:00
--  回复:(有点色)以下是引用guimingze在2017/3/10 10:...
Dim d1 As Double = 0.6
Dim d2 As Integer = 3 
Dim s As String = format(d1 * d2, "#.00")
Dim ary() As String = s.split(".")
s = ary(0) & "." & format(ary(1) / 10, "00")
msgbox(s)


放在这里的哪呢?
If e.DataCol.name = "第一列" OrElse e.DataCol.name = "第二列" Then
    
    Dim s1 As String = e.DataRow("第一列")
    Dim s2 As String = e.DataRow("第二列")
    Dim a1 As String() = s1.Split(".")
    Dim a2 As String() = s2.Split(".")
    If a1.length = 2 AndAlso a2.length = 2 Then
        Dim d1 As Date = new Date(a1(0), a1(1), 1)
        Dim d2 As Date = new Date(a2(0), a2(1), 1)
        Dim y,m,d As Integer
        DateYMD(d2,d1,y,m,d)
        e.DataRow("第三列") = y & "." & format(m, "00")
    Else
        e.DataRow("第三列") = Nothing
    End If
End If