Foxtable(狐表)用户栏目专家坐堂 → 类型“Long”的转换无效 ,开始的时候没问题,当关闭重启时,问题出现,求解


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

主题:类型“Long”的转换无效 ,开始的时候没问题,当关闭重启时,问题出现,求解

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


加好友 发短信
等级:幼狐 帖子:107 积分:863 威望:0 精华:0 注册:2013/3/12 12:42:00
类型“Long”的转换无效 ,开始的时候没问题,当关闭重启时,问题出现,求解  发帖心情 Post By:2013/4/6 18:06:00 [只看该作者]

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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生成明细单.table


-----------------------------------------------------------------------------------------------------------------------------------------------
.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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2468 威望:0 精华:2 注册:2013/1/16 19:33:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:107 积分:863 威望:0 精华:0 注册:2013/3/12 12:42:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2468 威望:0 精华:2 注册:2013/1/16 19:33:00
  发帖心情 Post By:2013/4/6 18:39:00 [只看该作者]

在 Dim dr As DataRow = DataTables("价目表").Find(..........),后
最好对dr判断是否有记录,若dr无记录,就会出现所示的错误

 回到顶部
帅哥哟,离线,有人找我吗?
gohtml
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:107 积分:863 威望:0 精华:0 注册:2013/3/12 12:42:00
  发帖心情 Post By:2013/4/6 18:45:00 [只看该作者]

已上传附件,帮忙改改,非常感谢

 回到顶部
帅哥哟,离线,有人找我吗?
fjlclxj
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2468 威望:0 精华:2 注册:2013/1/16 19:33:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:107 积分:863 威望:0 精华:0 注册:2013/3/12 12:42:00
  发帖心情 Post By:2013/4/6 20:07:00 [只看该作者]

谢谢,问题搞定

 回到顶部