以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 类型“Long”的转换无效 ,开始的时候没问题,当关闭重启时,问题出现,求解 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30910) |
-- 作者:gohtml -- 发布时间:2013/4/6 18:06:00 -- 类型“Long”的转换无效 ,开始的时候没问题,当关闭重启时,问题出现,求解 Select Case e.DataCol.name Case "休闲大床房_间数","日期","类型","休闲大床房_单价" If e.DataRow.IsNull("休闲大床房_间数") OrElse e.DataRow.IsNull("日期") OrElse e.DataRow.IsNull("类型") Then e.DataRow("休闲大床房_单价") = Nothing e.DataRow("休闲大床房_房价") = Nothing Else Dim ColName As String = "休闲大床房" & "_" & e.DataRow("类型") If DataTables("价目表").DataCols.Contains(ColName ) Then Dim dr As DataRow = DataTables("价目表").Find("开始日期 <= "& e.DataRow("日期") &"" And "结束日期 = "& e.DataRow("日期") &"") If e.DataRow("休闲大床房_间数")IsNot Nothing OrElse e.DataRow("类型")IsNot Nothing OrElse e.DataRow("日期")IsNot Nothing Then e.DataRow("休闲大床房_单价") = dr(ColName ) e.DataRow("休闲大床房_房价") = dr(ColName )*e.DataRow("休闲大床房_间数") End If End If End If End Select ----------------------------------------------------------------------------------------------------------------------------------------------- .NET Framework 版本:2.0.50727.6400 Foxtable 版本:2012.11.28.1 错误所在事件:表,房价计算,DataColChanged 详细错误信息: System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.InvalidCastException: 从字符串“开始日期 <= 2013/3/2”到类型“Long”的转换无效。 ---> System.FormatException: 输入字符串的格式不正确。 在 Microsoft.VisualBasic.CompilerServices.Conversions.ParseDecimal(String Value, NumberFormatInfo NumberFormat) 在 Microsoft.VisualBasic.CompilerServices.Conversions.ToLong(String Value) --- 内部异常堆栈跟踪的结尾 --- 在 Microsoft.VisualBasic.CompilerServices.Conversions.ToLong(String Value) 在 Microsoft.VisualBasic.CompilerServices.Operators.AndObject(Object Left, Object Right) 在 UserCode.DataColChanged(DataColEventArgs e) --- 内部异常堆栈跟踪的结尾 --- 在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 在 Foxtable.DataTable.O1100l0O01l110O0l00Oll11(Object O0l0O0, DataColumnChangeEventArgs O)
[此贴子已经被作者于2013-4-6 18:08:39编辑过]
|
-- 作者:fjlclxj -- 发布时间:2013/4/6 18:28:00 -- .Find("开始日期 <= \'" & e.DataRow("日期") & "\' And 结束日期 = \'"& e.DataRow("日期") & "\'") 引号的问题 另外,在 Dim dr As DataRow = DataTables("价目表").Find(..........),后 最好对dr判断是否有记录 [此贴子已经被作者于2013-4-6 18:38:00编辑过]
|
-- 作者:gohtml -- 发布时间:2013/4/6 18:38:00 -- 改成你的 .Find("开始日期 <= \'" & e.DataRow("日期") & "\' And 结束日期 = \'"& e.DataRow("日期") & "\'") 出现如下错误 ----------------------------------------------------------------- .NET Framework 版本:2.0.50727.6400 Foxtable 版本:2012.11.28.1 错误所在事件:表,房价计算,DataColChanged 详细错误信息: System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.NullReferenceException: 未将对象引用设置到对象的实例。 在 UserCode.DataColChanged(DataColEventArgs e) --- 内部异常堆栈跟踪的结尾 --- 在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 在 Foxtable.DataTable.O1100l0O01l110O0l00Oll11(Object O0l0O0, DataColumnChangeEventArgs O)
|
-- 作者:fjlclxj -- 发布时间:2013/4/6 18:39:00 -- 在 Dim dr As DataRow = DataTables("价目表").Find(..........),后 最好对dr判断是否有记录,若dr无记录,就会出现所示的错误
|
-- 作者:gohtml -- 发布时间:2013/4/6 18:45:00 -- 已上传附件,帮忙改改,非常感谢 |
-- 作者:fjlclxj -- 发布时间:2013/4/6 18:51:00 -- Dim dr As DataRow = DataTables("价目表").Find("开始日期 <= \'" & e.DataRow("日期") & "\' And 结束日期 >= \'"& e.DataRow("日期") & "\'") \'此行你原语句有逻辑错误 And 结束日期 = \'"& e.DataRow("日期") & "\'" If dr Is Nothing Then
MessageBox.Show("无符合此类型及期限的价目,请确认价目表信息!") : Return End If [此贴子已经被作者于2013-4-6 18:51:50编辑过]
|
-- 作者:gohtml -- 发布时间:2013/4/6 20:07:00 -- 谢谢,问题搞定 |