以文本方式查看主题

-  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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生成明细单.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
--  发布时间: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
--  
谢谢,问题搞定