以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]RaiseDataColChanged刷新时报错 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103940) |
-- 作者:WUZHAN -- 发布时间:2017/7/20 8:40:00 -- [求助]RaiseDataColChanged刷新时报错 我在客户管理表中的DataColChanged事件中写了一些代码, Select Case e.DataCol.Name Case "进店视力左眼","进店视力右眼","进店视力双眼","最近测视右眼","最近测视左眼","最近测视双眼","最近测视时间" If e.DataCol.Name = "客户编号" AndAlso e.DataRow.IsNull("客户编号")=False Then Dim dr21 As DataRow Dim dr22 As DataRow Dim dr23 As DataRow Dim dr24 As DataRow Dim dr25 As DataRow Dim dr26 As DataRow dr21 = DataTables("理疗管理").Find("[客户编号] = \'" & e.DataRow("客户编号") & "\' and [左裸眼视力] Is not Null","_Identify") \' 找出该客户编号左眼第一次视力值 dr22 = DataTables("理疗管理").Find("[客户编号] = \'" & e.DataRow("客户编号") & "\' and [右裸眼视力] Is not Null","_Identify") \' 找出该客户编号右眼第一次视力值 dr23 = DataTables("理疗管理").Find("[客户编号] = \'" & e.DataRow("客户编号") & "\' and [双裸眼视力] Is not Null","_Identify") \' 找出该客户编号双眼第一次视力值 dr24 = DataTables("理疗管理").Find("[客户编号] = \'" & e.DataRow("客户编号") & "\' and [左裸眼视力] Is not Null","_Identify Desc") \' 找出该客户编号右眼最后一次视力值 dr25 = DataTables("理疗管理").Find("[客户编号] = \'" & e.DataRow("客户编号") & "\' and [右裸眼视力] Is not Null","_Identify Desc") \' 找出该客户编号左眼最后一次视力值 dr26 = DataTables("理疗管理").Find("[客户编号] = \'" & e.DataRow("客户编号") & "\' and [双裸眼视力] Is not Null","_Identify Desc") \' 找出该客户编号双眼最后一次视力值 If dr21 IsNot Nothing Then e.DataRow("进店视力左眼") = dr21("左裸眼视力") End If If dr22 IsNot Nothing Then e.DataRow("进店视力右眼")=dr22("右裸眼视力") End If If dr23 IsNot Nothing Then e.DataRow("进店视力双眼")=dr23("双裸眼视力") End If If dr24 IsNot Nothing Then e.DataRow("最近测视左眼")=dr24("左裸眼视力") End If If dr25 IsNot Nothing Then e.DataRow("最近测视右眼")=dr25("右裸眼视力") End If If dr26 IsNot Nothing Then e.DataRow("最近测视双眼")=dr26("双裸眼视力") e.DataRow("最近测视时间")=dr26("理疗时间") End If End If End Select 又在收费管理表中DataColChanged事件中写了以下代码 Select Case e.DataCol.Name Case "应收金额","实收金额","优惠金额","总次数","剩余次数","消费名称" Dim pr As DataRow pr = DataTables("客户管理").Find("客户编号 = \'" & e.DataRow("客户编号") & "\'") If pr IsNot Nothing Then DataTables("客户管理").DataCols("客户编号").RaiseDataColChanged(pr) End If End Select 当收费管理表中的 消费名称列变化是,老是报错,请大师们帮忙。 |
-- 作者:有点甜 -- 发布时间:2017/7/20 9:06:00 -- 1、你这个代码 DataTables("客户管理").DataCols("客户编号").RaiseDataColChanged(pr) 触发的是客户编号的重置列,并不会执行你贴出来的1楼的代码。
2、你1楼的代码编写没有问题。
3、报什么错?具体图片贴出来。 |
-- 作者:WUZHAN -- 发布时间:2017/7/20 9:12:00 -- 此主题相关图片如下:报错.jpg |
-- 作者:有点甜 -- 发布时间:2017/7/20 9:14:00 -- 你datacolchanged肯定有其他代码
http://www.foxtable.com/webhelp/scr/1485.htm
|
-- 作者:WUZHAN -- 发布时间:2017/7/20 9:19:00 -- 有其他代码,我逐一注销掉所有代码 ,就是有这行代码是报错,我再按您说的方法检查一下 |
-- 作者:WUZHAN -- 发布时间:2017/7/20 15:30:00 -- 甜老师,找出来报错的代码了,你帮忙看看,当进店视力左眼,右眼等单元格为空时才报错。 Dim dr28 As DataRow = e.DataRow If dr28.IsNull("进店视力左眼") = False OrElse Dr28.IsNull("最近测视左眼") = False Then Dim jdzy() As String = e.DataRow("进店视力左眼").Split(" ") Dim zjzy() As String = e.DataRow("最近测视左眼").Split(" ") Dim dr11 As DataRow = DataTables("新旧视力对照表").Find("小数记录法 = \'" & jdzy(1) & "\'") \' 进店左眼Dr11 Dim dr14 As DataRow = DataTables("新旧视力对照表").Find("小数记录法 = \'" & zjzy(1) & "\'") \' 最近左眼dr14 If dr14 IsNot Nothing AndAlso dr11 IsNot Nothing Then dr28("左眼提升幅度") = (Val(dr14("五分记录法")) - Val(dr11("五分记录法")))/Val(dr11("五分记录法")) End If End If If dr28.IsNull("进店视力右眼") = False OrElse Dr28.IsNull("最近测视右眼") = False Then Dim jdyy() As String = e.DataRow("进店视力右眼").Split(" ") Dim zjyy() As String = e.DataRow("最近测视右眼").Split(" ") Dim dr12 As DataRow = DataTables("新旧视力对照表").Find("小数记录法 = \'" & jdyy(1) & "\'") \' 进店右眼Dr12 Dim dr15 As DataRow = DataTables("新旧视力对照表").Find("小数记录法 = \'" & zjyy(1) & "\'") \' 最近右眼dr15 If dr15 IsNot Nothing AndAlso dr12 IsNot Nothing Then dr28("右眼提升幅度") = (Val(dr15("五分记录法")) - Val(dr12("五分记录法")))/Val(dr12("五分记录法")) End If End If If dr28.IsNull("进店视力左眼") = False OrElse Dr28.IsNull("最近测视左眼") = False Then Dim jdsy() As String = e.DataRow("进店视力双眼").Split(" ") Dim zjsy() As String = e.DataRow("最近测视双眼").Split(" ") Dim dr13 As DataRow = DataTables("新旧视力对照表").Find("小数记录法 = \'" & jdsy(1) & "\'") \' 进店双眼dr13 Dim dr16 As DataRow = DataTables("新旧视力对照表").Find("小数记录法 = \'" & zjsy(1) & "\'") \' 最近双眼dr16 If dr16 IsNot Nothing AndAlso dr13 IsNot Nothing Then dr("双眼提升幅度") = (Val(dr16("五分记录法")) - Val(dr13("五分记录法")))/Val(dr13("五分记录法")) End If End If [此贴子已经被作者于2017/7/20 15:31:45编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/7/20 15:35:00 -- 看红色代码
If dr28.IsNull("进店视力左眼") = False OrElse Dr28.IsNull("最近测视左眼") = False Then |