Foxtable(狐表)用户栏目专家坐堂 → 请专家指导


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

主题:请专家指导

帅哥哟,离线,有人找我吗?
倪惠明
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:546 积分:3903 威望:0 精华:0 注册:2011/5/24 15:35:00
请专家指导  发帖心情 Post By:2011/6/9 9:22:00 [只看该作者]

在数据表中新增数据时,判断该单位数据已经存在的话,则删除新增的行。但下面的代码为什么不能达到要求。

If e.DataCol.Name = "dwdm" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("dwdm = '" & e.NewValue & "'")
    If dr IsNot Nothing Then
        MessageBox.Show("该单位数据已经存在不能添加!")
        e.Cancel=True
        e.DataRow.Delete
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/6/9 9:35:00 [只看该作者]

你做个简单例子上来,我帮你看看问题出在哪。

一般不应该在DataColChanged事件中删除行的。


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


加好友 发短信
等级:二尾狐 帖子:546 积分:3903 威望:0 精华:0 注册:2011/5/24 15:35:00
  发帖心情 Post By:2011/6/9 9:46:00 [只看该作者]

我是在DataColChanged事件中做的,是想把刚新增的行给删除,可实际删除的是以前的数据行,如果要将刚新增的行删除应如何写代码。谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/6/9 10:17:00 [只看该作者]

我不太明白你的意思,增加行的时候,增加的是一个空行,然后输入各列的数据,难道你是在输入数据的时候,删除刚刚增加的行?


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/6/9 10:31:00 [只看该作者]

你换个事件做,就是说先判断里面有没有重复值,如有,停止添加行,如没有增加一行.

 回到顶部
帅哥哟,离线,有人找我吗?
倪惠明
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:546 积分:3903 威望:0 精华:0 注册:2011/5/24 15:35:00
  发帖心情 Post By:2011/6/9 11:08:00 [只看该作者]

是5楼说的意思,如果存在重复的值就必须停止增加行,如没有则正常增加行。但要判断是否有重复值又必须先获的单位代码,所以
我在DataColChanged事件中想把是重复值的刚新增的行给删除,也就是要取消前面新增行操作。可实际删除的是以前的数据行而不是刚新增的行。谢谢!

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/6/9 12:10:00 [只看该作者]

If e.DataCol.Name = "dwdm"Then
    Dim drs As List(Of DataRow) = DataTables("表名").Select("[dwdm] = '" & e.DataRow("dwdm") & "'")
    If drs.Count - 1 > 0 Then
        MessageBox.Show("该单位数据已经存在不能添加!")
        CurrentTable.Current.Delete()
    End If
End If

因为你是在新增行里数据数据时判断是不是有重覆的数据,所以删除的应该就是当前行.

 回到顶部
帅哥哟,离线,有人找我吗?
倪惠明
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:546 积分:3903 威望:0 精华:0 注册:2011/5/24 15:35:00
  发帖心情 Post By:2011/6/9 14:35:00 [只看该作者]

还是不行,看来只得用其他方法了。谢谢各位了!


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/6/9 16:23:00 [只看该作者]

我的代码我测试可以的呀.你是新增输入数据的时候,提示重覆.然后删除呀,因为新增时的光标在新增行,也就当前行,所以也就删除当前行了.

 回到顶部
帅哥哟,离线,有人找我吗?
倪惠明
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:546 积分:3903 威望:0 精华:0 注册:2011/5/24 15:35:00
  发帖心情 Post By:2011/6/17 20:16:00 [只看该作者]

If e.DataCol.Name = "dwdm"Then
    Dim drs As List(Of DataRow) = DataTables("表名").Select("[dwdm] = '" & e.DataRow("dwdm") & "'")
    If drs.Count - 1 > 0 Then
        MessageBox.Show("该单位数据已经存在不能添加!")
        CurrentTable.Current.Delete()
    End If
End If

因为你是在新增行里数据数据时判断是不是有重覆的数据,所以删除的应该就是当前行.

这个方法在直接输入的情况下没有问题,但如果代码是通过目录树表录入就会自动退出系统,这是不是系统的BUG,请狐狸爸爸解释一下。

 回到顶部
总数 33 1 2 3 4 下一页