以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于导入数据的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=25033)

--  作者:seupuff
--  发布时间:2012/10/29 20:48:00
--  关于导入数据的问题
在表的datacolchanging事件中设置
 
If e.DataCol.Name = "证书编号" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("证书编号= \'" & e.NewValue & "\'")
    If dr IsNot Nothing Then
        If   MessageBox.Show( e.NewValue & "已经存在!终止导入?"," 提示",MessageBoxButtons.YesNo)=DialogResult.Yes Then
             e.Cancel = True
         End If
        
       End If
End If

保证表不会导入证书编号重复的行。
现在的问题是这样的,比如我导入有一百行的数据表,然后再把这个表重复导入,这个时候就回提示有重复,我确认以后提示第二条重复,再确认,然后第三条重复,如何在第一条重复提示的时候我就能退出导入,回去修改我的EXCEL文件去
请教高手指点
首先感谢sloyy 给予的参考代码,该问题已经解决,现在有个新的问题,就是使用填充方法剔除重复数据,如何才能知道都那些数据重复了? 采用我上面给出的代码可以知道那些重复了,但是遇到大量重复的时候没有办法退出。使用临时表中介,可是又不知道那些数据重复了,请高手指教一下,如何既能知道那些数据重复了,又能决定是否继续导入不重复的数据

--  作者:狐狸爸爸
--  发布时间:2012/10/29 20:55:00
--  

编码导入:

http://www.foxtable.com/help/topics/2334.htm

 

例如:

 

Dim Book As New XLS.Book("c:\\test\\订单.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单").StopRedraw()
\'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
Dim nms() As String = {"编号","产品","客户","雇员","单价","折扣","数量","日期"}
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim txt As String = Sheet(n,0).Text
    If DataTables("订单").Find("编号 = \'" & txt & "\'") Is Nothing Then \'假定编号是字符型,判断同编号是否已经存在。
        Dim r As DataRow = DataTables("订单").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("订单").ResumeRedraw()

[此贴子已经被作者于2012-10-29 20:55:28编辑过]