以文本方式查看主题
- 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
|