Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共33 条记录, 每页显示 10 条, 页签: [1] [2][3][4]
[浏览完整版]

标题:请专家指导

1楼
倪惠明 发表于: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楼
狐狸爸爸 发表于:2011/6/9 9:35:00

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

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

3楼
倪惠明 发表于:2011/6/9 9:46:00
我是在DataColChanged事件中做的,是想把刚新增的行给删除,可实际删除的是以前的数据行,如果要将刚新增的行删除应如何写代码。谢谢!
4楼
狐狸爸爸 发表于:2011/6/9 10:17:00

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

5楼
blackzhu 发表于:2011/6/9 10:31:00
你换个事件做,就是说先判断里面有没有重复值,如有,停止添加行,如没有增加一行.
6楼
倪惠明 发表于:2011/6/9 11:08:00
是5楼说的意思,如果存在重复的值就必须停止增加行,如没有则正常增加行。但要判断是否有重复值又必须先获的单位代码,所以
我在DataColChanged事件中想把是重复值的刚新增的行给删除,也就是要取消前面新增行操作。可实际删除的是以前的数据行而不是刚新增的行。谢谢!
7楼
blackzhu 发表于: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楼
倪惠明 发表于:2011/6/9 14:35:00

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

9楼
blackzhu 发表于:2011/6/9 16:23:00
我的代码我测试可以的呀.你是新增输入数据的时候,提示重覆.然后删除呀,因为新增时的光标在新增行,也就当前行,所以也就删除当前行了.
10楼
倪惠明 发表于: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 条记录, 每页显示 10 条, 页签: [1] [2][3][4]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02734 s, 2 queries.