以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何判断某列发生变化  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=191347)

--  作者:zhangchi96
--  发布时间:2024/4/12 10:11:00
--  如何判断某列发生变化

 for .......

    If dr1.RowState <> DataRowState.Unchanged Then \'该行有变动变化

     \'触发某个事件

    end if

  next


如果我在发现某行有变化前提下时,特地在限制只有这三个列【列c】【列b】【列c】有变动时才能触发事件,


请问应该怎么加个条件?


--  作者:有点蓝
--  发布时间:2024/4/12 10:24:00
--  
OriginalValue获得指定列修改前的值
OriginalIsNull判断某一列的原始值是否为空

--  作者:zhangchi96
--  发布时间:2024/4/12 13:02:00
--  
我的代码是写在一个窗体的按钮的click事件里的:

For Each dr1 As DataRow In DataTables("兴岗位聘任名册").Select(" 数据类型 = \'增减数\' ")
      If dr1.RowState <> DataRowState.Unchanged Then \'该行有变动变化
           If dr1("岗位变动_聘任前") <> dr1.DataRow.OriginalValue("岗位变动_聘任前") Then
                 \' MessageBox.Show( dr1("教师姓名") & "  岗位变动_聘任前" & "的内容有变化" )
           End If
      end if
next

确实不知道怎么修改其中的错误,请多多指教!!

--  作者:有点蓝
--  发布时间:2024/4/12 13:41:00
--  
有什么错误?
--  作者:zhangchi96
--  发布时间:2024/4/12 13:52:00
--  
datarow 不是 datarow 的成员 
--  作者:有点蓝
--  发布时间:2024/4/12 14:05:00
--  
If dr1("岗位变动_聘任前") <> dr1.OriginalValue("岗位变动_聘任前") Then
--  作者:zhangchi96
--  发布时间:2024/4/12 14:10:00
--  
For Each dr1 As DataRow In DataTables("兴岗位聘任名册").Select(" 数据类型 = \'增减数\' ")
      If dr1.RowState <> DataRowState.Unchanged Then \'该行有变动变化
           If dr1("岗位变动_聘任前") <> dr1.OriginalValue("岗位变动_聘任前") Then
                 \' MessageBox.Show( dr1("教师姓名") & "  岗位变动_聘任前" & "的内容有变化" )
           End If
      end if
next

我改为这样以后能运行了