Foxtable(狐表)用户栏目专家坐堂 → 某一列的内容被更改后问题


  共有3425人关注过本帖树形打印复制链接

主题:某一列的内容被更改后问题

帅哥哟,离线,有人找我吗?
落叶孤影
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
某一列的内容被更改后问题  发帖心情 Post By:2016/11/14 20:48:00 [只看该作者]

我在表的DataColChanged事件 写了下面的代码:但为什么总是弹出两次提示呢?请老师帮忙看看是什么问题?谢谢!
If e.DataRow("科目代码") = Nothing Then
    Return
End If
Select Case e.DataRow("科目代码").length
    Case "4"
        e.DataRow("科目级次") = "1"
    Case "6"
        e.DataRow("科目级次") = "2"
    Case Else
        e.DataRow("科目代码") = Nothing
        e.DataRow("科目级次") = Nothing
        MessageBox.Show("请重新输入4或6位数的科目代码!","错误!",MessageBoxButtons.OK,MessageBoxIcon.Error)
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/14 20:53:00 [只看该作者]

试试

If e.DataRow.isnull("科目代码") Then
    Return 
End If

 回到顶部
帅哥哟,离线,有人找我吗?
落叶孤影
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/15 21:11:00 [只看该作者]

上面的问题解决了,但下在该事件中的另一段代码不会写了,还请老师给看看下面代码该怎么写?谢谢!

If CurrentTable.Current.DataRow.RowState = DataRowState.Added Then
    If e.DataCol.Name = "科目代码" Then ' 如果发生变化的是科目代码列
        Dim nw As String = e.NewValue
        Dim dr As String = e.DataRow("科目代码")
        If nw.Contains(dr) Then ' 如果新输入的值包含当前列中的值
            Dim drs As DataRow
            drs = e.DataTable.Find() ' 找到包含值的行==========此处不会写代码,请老师指点!谢谢!
            If drs IsNot Nothing Then ' 如果找到
                drs("是否明细") = False ' 将该行是否明细列设为False
            Else
            End If
        Else
        End If
    End If
Else
End If

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/15 21:21:00 [只看该作者]

没看懂你的逻辑,不知道你要找什么


 回到顶部
帅哥哟,离线,有人找我吗?
落叶孤影
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/15 21:56:00 [只看该作者]

 我的意思是:比如当前表的科目代码列有一行数据是1001,我如果新增了一行,在新增行的科目代码列输入100101时,1001行对应的"是否明细"列为fals

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/15 22:16:00 [只看该作者]

没有办法判断,100101的前缀是1001还是100还是10010

 回到顶部
帅哥哟,离线,有人找我吗?
落叶孤影
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/15 22:29:00 [只看该作者]

 前缀是1001也就是新输入值的前4个字符!

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/15 22:45:00 [只看该作者]

If e.DataCol.Name = "科目代码" AndAlso e.DataRow.IsNull("科目代码") = False AndAlso e.DataRow.RowState = DataRowState.Added AndAlso e.DataRow("科目代码").Length > 4 Then ' 如果发生变化的是科目代码列
    Dim nw As String = e.NewValue
    If e.DataTable.Find("科目代码='" & nw.SubString(0,4) & "'") IsNot Nothing Then
        e.DataTable.ReplaceFor("是否明细",False,"科目代码='" & nw.SubString(0,4) & "'")
    End If
End If
[此贴子已经被作者于2016/11/15 22:45:05编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
落叶孤影
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/15 22:58:00 [只看该作者]

 多谢,请早点休息!注意身体!晚安!

 回到顶部