Foxtable(狐表)用户栏目专家坐堂 → 仿真计算器-------更上一层楼


  共有6976人关注过本帖树形打印复制链接

主题:仿真计算器-------更上一层楼

帅哥哟,离线,有人找我吗?
明丰
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2013/8/24 23:41:00 [显示全部帖子]

'数值列取值前判断,以下代码试试:

Dim s As Decimal = "0.124562334578"
Dim s1 As String
Dim dc As DataCol = CurrentTable.DataTable.DataCols(CurrentTable.cols(CurrentTable.Colsel).name)
If dc.IsNumeric AndAlso dc.ExtendType = ExtendTypeEnum.None Then '是数值列且没有扩展
    If dc.datatype.name = "Byte" Then '微整数
     s = Round2(s,0)
        If s < 0 OrElse s > 255 Then
            Messagebox.show("超出取值范围,所在单元格的取值范围为:" & vbcrlf & "介于 0 到 255 之间的整数。"  ,"提示")
        Else
            CurrentTable.value = s
        End If
    End If
    If dc.datatype.name = "Int16" Then '短整数
     s = Round2(s,0)
        If s < -32768 OrElse s > 32767 Then
            Messagebox.show("超出取值范围,所在单元格的取值范围为:" & vbcrlf & "介于 -32768 到 32767 之间的整型。"  ,"提示")
        Else
            CurrentTable.value = s
        End If
    End If
   
    If dc.datatype.name = "Int32" Then '整数
     s = Round2(s,0)
        If s < -2147483648 OrElse s > 2147483647 Then
            Messagebox.show("超出取值范围,所在单元格的取值范围为:" & vbcrlf & "介于 -2147483648 到 2147483647 之间的整数。"  ,"提示")
        Else
            CurrentTable.value = s
        End If
    End If
    If dc.datatype.name = "Single" Then '单精度小数
     s = Round2(s,dc.Decimals)
        s1 = s
        s1 = s1.replace(".","")
        s1 = s1.trimstart("0","")
        If s1.length > 7 Then
            Messagebox.show("超出取值范围,所在单元格的取值范围为:" & vbcrlf & "有效数字为7位。"  ,"提示")
        Else
            CurrentTable.value = s
        End If
    End If
    If dc.datatype.name = "Double" Then '双精度小数
     s = Round2(s,dc.Decimals)
        s1 = s
        s1 = s1.replace(".","")
        s1 = s1.trimstart("0","")
        If s1.length > 15 Then
            Messagebox.show("超出取值范围,所在单元格的取值范围为:" & vbcrlf & "有效数字为15位。"  ,"提示")
        Else
            CurrentTable.value = s
        End If
    End If
    If dc.datatype.name = "Decimal" Then '高精度小数
     s = Round2(s,dc.Decimals)
        s1 = s
        s1 = s1.replace(".","")
        s1 = s1.trimstart("0","")
        If s1.length > 28 Then
            Messagebox.show("超出取值范围,所在单元格的取值范围为:" & vbcrlf & "有效数字为28位."  ,"提示")
        Else
            CurrentTable.value = s
        End If
    End If
End If

 

[此贴子已经被作者于2013-8-25 7:06:01编辑过]

 回到顶部