以文本方式查看主题

-  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
    Dim jdzy() As String = e.DataRow("进店视力左眼").Split(" ")
    Dim zjzy() As String = e.DataRow("最近测视左眼").Split(" ")
    If jdzy.length >= 2 AndAlso zjzy.length >= 2 Then
        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
End If