以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请大师指教!谢谢!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97635)

--  作者:jackyfashion
--  发布时间:2017/3/15 23:48:00
--  请大师指教!谢谢!
大师您好!我有一个列是"表A"的"amkf"列 我想要输入分数:  如5 1/2, 显示 5.5,或输入1/2  显示 0.5, 代码如下:
If e.DataCol.Name = "amkf" Then
    If e.DataRow.IsNull("amkf") Then
        e.DataRow("amkf") = Nothing
    Else
        Dim n  = e.DataRow("amkf")
        If n.Length = 1 Then
            e.DataRow("amkf") = n
        Else
            If n.Length = 2 Then
                e.DataRow("amkf") = n
            Else
                Dim d As String = n
                Dim s() As String = d.split(" ")
                If s.Length = 1 Then
                    Dim o() As String = d.split("/")
                    Dim m = (o(0)) / (o(1))
                    e.DataRow("amkf") = m
                Else
                    Dim a As String = (S(1))
                    Dim c() As String = a.split("/")
                    Dim f As Integer  = CInt(c(1))
                    Dim g As Integer  = CInt(c(0))
                    Dim h = (c(0)) / (c(1))
                    Dim j = (s(0))+h
                    e.DataRow("amkf") = j
                End If
            End If
        End If
    End If
End If
输入分数后提示:"调用的止标发生异常 
显示祥细信息:
.NET Framework 版本:2.0.50727.8745
Foxtable 版本:2017.3.2.1
错误所在事件:表,表A,DataColChanged
详细错误信息:
调用的目标发生了异常。
索引超出了数组界限。
请教大师如何修改代码?谢谢!!!




--  作者:有点色
--  发布时间:2017/3/16 0:26:00
--  

DataColChanging事件

 

If e.DataCol.name = "第二列" Then
    Dim str As String = e.NewValue
    If str > "" Then
        Dim ary() As String = str.split(" ")
        Dim n As Double = Eval2(ary(0))
        Dim d As Double = 0
        If ary.length >= 2 Then d = Eval2(ary(1))
        e.NewValue = n + d
    End If
End If


--  作者:jackyfashion
--  发布时间:2017/3/16 20:32:00
--  
谢谢大师!!!
--  作者:jackyfashion
--  发布时间:2017/3/16 20:54:00
--  
请教大师!
我复制以下代码


DataColChanging事件

 

If e.DataCol.name = "第二列" Then
    Dim str As String = e.NewValue
    If str > "" Then
        Dim ary() As String = str.split(" ")
        Dim n As Double = Eval2(ary(0))
        Dim d As Double = 0
        If ary.length >= 2 Then d = Eval2(ary(1))
        e.NewValue = n + d
    End If
End If

第二列输入分数还是分数,不会转换成小数,再次请大师指教!谢谢!!!


--  作者:有点色
--  发布时间:2017/3/17 1:20:00
--  

我测试,没有问题。代码请写到DataColChanging事件。


--  作者:jackyfashion
--  发布时间:2017/3/17 12:29:00
--  
谢谢!!!