以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  跨表获取数据并判断是否含值时自动填充,空值或0值清除数据  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=30483)

--  作者:gohtml
--  发布时间:2013/3/28 16:56:00
--  跨表获取数据并判断是否含值时自动填充,空值或0值清除数据

跨表获取数据并判断是否含值时自动填充,空值或0值清除数据

 

当"预定_休闲大床房_数量"为空时,只清除旁边的"预定_休闲大床房_单价"值

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:海浪屿酒店.table


--  作者:gohtml
--  发布时间:2013/3/28 17:51:00
--  

如果在"预定_休闲大床房_数量" 中先填写数据,会发生如下错误

--------------------------------------------------------------

.NET Framework 版本:2.0.50727.6400
Foxtable 版本:2012.11.28.1
错误所在事件:表,预定表,DataColChanged
详细错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.ArgumentException: 列“_”不属于表 房价明细表。
   在 Microsoft.VisualBasic.CompilerServices.Symbols.Container.InvokeMethod(Method TargetProcedure, Object[] Arguments, Boolean[] CopyBack, BindingFlags Flags)
   在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
   在 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)


--  作者:gohtml
--  发布时间:2013/3/28 17:59:00
--  

Select Case e.DataCol.Name
    Case "预定_休闲大床房_间数","时间段","类型"
        If e.DataRow.IsNull(e.DataCol.Name) Then
            e.DataRow("预定_休闲大床房_单价") = Nothing
            e.DataRow("预定_休闲大床房_房价") = Nothing
        Else
            Dim dr As DataRow = DataTables("房价明细表").Find("房型=\'休闲大床房\'")
            If dr IsNot Nothing Then
                e.DataRow("预定_休闲大床房_单价") = dr(e.DataRow("时间段") & "_" & e.DataRow("类型"))
                e.DataRow("预定_休闲大床房_房价") = dr(e.DataRow("时间段") & "_" & e.DataRow("类型")) * e.DataRow("预定_休闲大床房_间数")
            End If
        End If
    Case "预定_休闲双标房_间数","时间段","类型"
        If e.DataRow.IsNull(e.DataCol.Name) Then
            e.DataRow("预定_休闲双标房_单价") = Nothing
            e.DataRow("预定_休闲双标房_房价") = Nothing
        Else
            Dim dr As DataRow = DataTables("房价明细表").Find("房型=\'休闲双标房\'")
            If dr IsNot Nothing Then
                e.DataRow("预定_休闲双标房_单价") = dr(e.DataRow("时间段") & "_" & e.DataRow("类型"))
                e.DataRow("预定_休闲双标房_房价") = dr(e.DataRow("时间段") & "_" & e.DataRow("类型")) * e.DataRow("预定_休闲双标房_间数")
            End If
        End If
End Select

 

-----------------------------------------------------------

把代码给成这样,当"时间段"或者"类型"发生变化时,"预定_休闲大床房_单价"及"预定_休闲大床房_房价"会发生变化,但是"预定_休闲双标房_单价"及"预定_休闲双标房_房价"却没有变化,不知道我错在哪里...还请指教.感谢muhua的耐心回答


--  作者:狐狸爸爸
--  发布时间:2013/3/28 18:06:00
--  

Select Case e.DataCol.Name
    Case "预定_休闲大床房_间数","时间段","类型"
        If e.DataRow.IsNull(e.DataCol.Name) Then
            e.DataRow("预定_休闲大床房_单价") = Nothing
            e.DataRow("预定_休闲大床房_房价") = Nothing
        Else
            Dim dr As DataRow = DataTables("房价明细表").Find("房型=\'休闲大床房\'")
            If dr IsNot Nothing Then
                e.DataRow("预定_休闲大床房_单价") = dr(e.DataRow("时间段") & "_" & e.DataRow("类型"))
                e.DataRow("预定_休闲大床房_房价") = dr(e.DataRow("时间段") & "_" & e.DataRow("类型")) * e.DataRow("预定_休闲大床房_间数")
            End If
        End If
End Select
Select Case e.DataCol.Name
    Case "预定_休闲双标房_间数","时间段","类型"
        If e.DataRow.IsNull(e.DataCol.Name) Then
            e.DataRow("预定_休闲双标房_单价") = Nothing
            e.DataRow("预定_休闲双标房_房价") = Nothing
        Else
            Dim dr As DataRow = DataTables("房价明细表").Find("房型=\'休闲双标房\'")
            If dr IsNot Nothing Then
                e.DataRow("预定_休闲双标房_单价") = dr(e.DataRow("时间段") & "_" & e.DataRow("类型"))
                e.DataRow("预定_休闲双标房_房价") = dr(e.DataRow("时间段") & "_" & e.DataRow("类型")) * e.DataRow("预定_休闲双标房_间数")
            End If
        End If
End Select

 

 

理由:

http://www.foxtable.com/help/topics/2242.htm