以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何给导入语句加上判断是否内容已经存在的操作?求个拓展功能,就是导入前能用XLS文件的标题和数据表的标题做一个对比,一致时才开始导入  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=29706)

--  作者:goodhi
--  发布时间:2013/3/12 10:56:00
--  如何给导入语句加上判断是否内容已经存在的操作?求个拓展功能,就是导入前能用XLS文件的标题和数据表的标题做一个对比,一致时才开始导入
 With Tables("公司")
    .Fill("SELECT  公司编码, 公司名称 ,营业执照名称, 楼层 , 单元,  联系人, 联系电话, 办公电话 , 传真电话 ,  备注  From {公司}","YLLF",True)
    .Sort = "公司编码 DESC"
    .ListMode = True
    .AutoSizeCols()
   \' .SetColVisibleWidth("公司编码|60|公司名称|200|营业执照名称|200|备注|200|楼层|45|单元|45|联系人|100|联系电话|100|办公电话|100|传真电话|100")
End With

\'导入
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    For i As Integer = 0 To Sheet.Cols.Count -1
        If CurrentTable.Cols.Contains( Sheet(0,i).Value) = False Then
            MessageBox.Show("目标文件不含【" & Sheet(0,i).Value & "】列,请修改与目标文件一致!", "导入错误提示")
            Return
        End If
    Next
    For r As Integer = 1 To Sheet.Rows.Count - 1
        \'Dim dr As Row = CurrentTable.AddNew()
         Dim dr As Row=   Tables("公司").AddNew() \'增加一行
        For c As Integer = 0 To Sheet.Cols.Count - 1
            dr(Sheet(0,c).Value) = Sheet(r,c).Value
            Tables("公司").Current.Save \'保存
        Next
    Next
End If
我写的这个导入XLS文件,没有识别重复内容的判断
应该怎么加呢?
[此贴子已经被作者于2013-3-12 17:15:40编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/3/12 11:35: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 = {"编号","产品","客户","雇员","单价","折扣","数量","日期"}
\'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim bh As String = sheet(n,0).Text  \'假定编号位于Excel表的第一列
    If DataTables("订单").Find("编号 = \'" & bh & "\'") Is Nothing Then \'如果不存在同编号的订单
        Dim r As Row = Tables("订单").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("订单").ResumeRedraw()

 


 

[此贴子已经被作者于2013-3-12 11:36:37编辑过]

--  作者:goodhi
--  发布时间:2013/3/12 16:11:00
--  
求个拓展功能,就是导入前能用XLS文件的标题和数据表的标题做一个对比,一致时才开始导入
[此贴子已经被作者于2013-3-12 16:13:54编辑过]