'数值列取值前判断,以下代码试试:
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编辑过]