以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  datacolchanged  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34733)

--  作者:秦昌丽
--  发布时间:2013/6/14 11:44:00
--  datacolchanged

If  e.DataCol.name = "是否异常" AndAlso e.DataRow("是否异常") = "异常" Then
Select Case e.DataCol.name
   Case "生产调度令号"
       Dim dr As DataRow = DataTables("电装顾客财产异常处理").Find("生产调度令号 = \'" & e.NewValue & "\'")

         If dr Is Nothing Then
             dr = DataTables("电装顾客财产异常处理").AddNew()  
             dr("生产调度令号") = e.DataRow("生产调度令号")
             dr("客户单位") = e.DataRow("客户单位") 
             dr("姓名") = e.DataRow("姓名")
             dr("类别") = e.DataRow("类别")
             dr("财产名称") = e.DataRow("财产名称")
             dr("型号规格") = e.DataRow("型号规格")
             dr("单位") = e.DataRow("单位")
         Else
             dr("生产调度令号") = e.DataRow("生产调度令号")            
            
        End If
      
     Case "客户单位","姓名","类别","财产名称","型号规格","单位"
         Dim dr As DataRow = DataTables("电装顾客财产异常处理").Find("生产调度令号 = \'" & e.DataRow("生产调度令号") & "\'")
         If dr IsNot Nothing Then
         dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
         End If 
    
 End Select
End If

 

 

 

 

 

想实现表A的“是否异常”列为“异常”时,执行代码,否则不执行,应该怎么写?


--  作者:Bin
--  发布时间:2013/6/14 11:46:00
--  

If   e.DataRow("是否异常") = "异常" Then 
Select Case e.DataCol.name
   Case "生产调度令号"
       Dim dr As DataRow = DataTables("电装顾客财产异常处理").Find("生产调度令号 = \'" & e.NewValue & "\'")

         If dr Is Nothing Then 
             dr = DataTables("电装顾客财产异常处理").AddNew()   
             dr("生产调度令号") = e.DataRow("生产调度令号")
             dr("客户单位") = e.DataRow("客户单位")  
             dr("姓名") = e.DataRow("姓名") 
             dr("类别") = e.DataRow("类别")
             dr("财产名称") = e.DataRow("财产名称")
             dr("型号规格") = e.DataRow("型号规格")
             dr("单位") = e.DataRow("单位")
         Else
             dr("生产调度令号") = e.DataRow("生产调度令号")             
             
        End If
       
     Case "客户单位","姓名","类别","财产名称","型号规格","单位"
         Dim dr As DataRow = DataTables("电装顾客财产异常处理").Find("生产调度令号 = \'" & e.DataRow("生产调度令号") & "\'")
         If dr IsNot Nothing Then
         dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
         End If  
     
 End Select
End If


--  作者:秦昌丽
--  发布时间:2013/6/14 11:47:00
--  
这个试过了,不行啊
--  作者:XYT
--  发布时间:2013/6/14 11:49:00
--  
你前面判断了列的名字是是否异常,下面列的名字就成了生产调度令号
--  作者:狐狸爸爸
--  发布时间:2013/6/14 11:55:00
--  
2楼的代码不可能不行的,如果不行,做个简单例子发上来说话。
--  作者:blackzhu
--  发布时间:2013/6/14 12:31:00
--  
代码按道理不能不行,只不过有点怪.为啥这样写?
--  作者:秦昌丽
--  发布时间:2013/6/14 13:29:00
--  
当表 电装顾客财产登记 的是否异常列为 异常 时  ,顾客财产异常处理列同步更新 生产调度令号等同名列的内容
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:例程1.foxdb


--  作者:lsy
--  发布时间:2013/6/14 13:45:00
--  

放在Datacolchanged 事件中,不行。

反复在同一行中改动"生产调度令号",而且"电装顾客财产异常处理"找不到此行的话,就会反复增加行,这就违反常识和逻辑。

不如放在BeforeSaveDataRow事件中,一次性处理。

 

If e.DataRow("是否异常") = "异常" Then
    Dim dr As DataRow
    dr = DataTables("电装顾客财产异常处理").Find("生产调度令号 = \'" & e.DataRow("生产调度令号") & "\'")
    If dr Is Nothing Then
        dr = DataTables("电装顾客财产异常处理").AddNew()
    End If
    dr("生产调度令号") = e.DataRow("生产调度令号")
    dr("客户单位") = e.DataRow("客户单位")
    dr("姓名") = e.DataRow("姓名")
    dr("类别") = e.DataRow("类别")
    dr("财产名称") = e.DataRow("财产名称")
    dr("型号规格") = e.DataRow("型号规格")
    dr("单位") = e.DataRow("单位")
End If

[此贴子已经被作者于2013-6-14 13:46:40编辑过]

--  作者:秦昌丽
--  发布时间:2013/6/14 15:19:00
--  

我的数据肯定是要反复录入的呀,不可能只录入一次的


--  作者:lsy
--  发布时间:2013/6/14 15:38:00
--  
以下是引用秦昌丽在2013-6-14 15:19:00的发言:

我的数据肯定是要反复录入的呀,不可能只录入一次的

每次录入,都不保存?一保存不就执行代码了吗?在DataColChanged事件中,你改了一个号,发现错了,又改,这样就多增加了行。

 

[此贴子已经被作者于2013-6-14 15:38:57编辑过]